跳转到内容
Guides 3 分钟阅读 967 次浏览

如何搭建自己的代理服务器

开启数字自由!本指南带您一步步使用 Squid、3proxy 或 Dante 搭建强大的代理服务器,获得彻底的隐私与掌控力。

如何搭建自己的代理服务器

要搭建自己的代理服务器,通常需要在 Linux 服务器上安装并配置专用的代理软件,例如用于 HTTP/HTTPS 缓存的 Squid、轻量级 HTTP/SOCKS 的 3proxy,或功能强大的 SOCKS5 服务端 Dante,并定义监听端口、访问控制和认证机制。

自建代理服务器可以让您掌控网络流量、保护隐私、访问受地域限制的内容,或为内部网络提供更强的安全性。软件的选择取决于具体需求,例如协议支持(HTTP、HTTPS、SOCKS)、缓存需要以及可接受的复杂度。

通用前置条件

在配置任何代理之前,请确认您的服务器满足以下基本要求:
* 操作系统: 通常使用 Linux 发行版(例如 Ubuntu、Debian、CentOS)。
* 网络接入: 服务器必须具备合适的网络连通性;如需外部访问,还需要公网 IP 地址。
* 防火墙配置: 在服务器防火墙(例如 ufwfirewalld)上开放所需端口(例如 HTTP 用 3128,SOCKS 用 1080)。

Squid 代理服务器

Squid 是面向 Web 客户端的功能完整的高性能缓存代理,支持 HTTP、HTTPS、FTP 等协议。它擅长缓存高频访问的内容,从而降低带宽消耗并缩短响应时间。

安装(Debian/Ubuntu)

sudo apt update
sudo apt install squid

在 CentOS/RHEL 上:sudo yum install squidsudo dnf install squid

基础配置

主配置文件通常位于 /etc/squid/squid.conf
1. 定义监听端口:
找到或添加 http_port 指令。
http_port 3128
2. 访问控制列表(ACL):
Squid 使用 ACL 定义网段、用户或其他条件,并通过 http_access 规则来执行相应动作。
```
# 定义局域网 ACL(请替换为您服务器的本地子网或客户端 IP)
acl localnet src 192.168.1.0/24 # 示例:允许该子网内的客户端
acl localhost src 127.0.0.1/32

# 允许已定义的 ACL 访问
http_access allow localhost
http_access allow localnet

# 拒绝其他所有访问
http_access deny all
```
如需允许任意 IP 地址访问(安全性较低,请谨慎使用并配合认证):
```
acl all src 0.0.0.0/0
http_access allow all
```
  1. 重启 Squid:
    bash sudo systemctl restart squid sudo systemctl enable squid sudo systemctl status squid

用户认证(Basic Auth)

启用基础的用户名/密码认证以提升安全性。
1. 安装 Apache 工具包(用于 htpasswd):
bash sudo apt install apache2-utils
2. 创建密码文件:
bash sudo htpasswd -c /etc/squid/passwd yourusername # 输入并确认密码。添加更多用户时省略 -c: # sudo htpasswd /etc/squid/passwd anotheruser
3. 配置 Squid 认证:
将下列行添加到 squid.conf(例如文件开头或 AUTH 部分):
```
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5 startup=5 idle=1
auth_param basic realm "Squid Proxy Authentication"
auth_param basic credentialsttl 2 hours

acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
```
请确保 `http_access allow authenticated` 出现在任何会拦截已认证用户的 `http_access deny all` 规则*之前*。
  1. 重启 Squid。

HTTPS 拦截(透明代理)

Squid 可以拦截并解密 HTTPS 流量,这需要生成自定义 SSL 证书并让客户端设备信任该证书。这是一种复杂配置,主要用于企业环境的内容过滤与监控;由于涉及安全和隐私问题,一般不建议个人使用。

3proxy 代理服务器

3proxy 是一款轻量、灵活的代理服务器,支持 HTTP、HTTPS(CONNECT)、SOCKS4/5、FTP 等协议。它以占用资源小、配置灵活著称。

安装(源码编译)

为获得最新版本和最大控制权,3proxy 通常从源码编译。
1. 安装编译工具:
bash sudo apt update sudo apt install build-essential git
2. 下载并编译:
bash git clone https://github.com/z3APA3A/3proxy.git cd 3proxy make -f Makefile.Linux sudo make -f Makefile.Linux install
二进制文件通常会安装到 /usr/local/bin/3proxy

基础配置

创建一个配置文件,例如 /etc/3proxy/3proxy.cfg
1. DNS 解析器:
nserver 8.8.8.8 # Google DNS nserver 1.1.1.1 # Cloudflare DNS
2. 认证(按需):
auth strong users yourusername:CL:yourpassword # CL 表示明文,生产环境请使用哈希
3. 定义代理:
* HTTP 代理:
proxy -p3128
* SOCKS5 代理:
socks -p1080
* HTTP 与 SOCKS 并用:
proxy -p3128 socks -p1080
4. 访问控制:
放在 users 之后、proxy/socks 行之前:
allow yourusername # 仅允许指定用户 # 或允许所有已认证用户: # allow * # 或允许来自特定 IP: # allow 192.168.1.0/24
一种基础但安全性较低的配置,允许任何人从任何地方连接:
allow * * proxy -p3128 socks -p1080
5. 启动 3proxy:
bash /usr/local/bin/3proxy /etc/3proxy/3proxy.cfg
如需后台运行,可在配置文件中使用 start 3proxy /etc/3proxy/3proxy.cfg,或使用 systemd 进行规范的服务管理。

Systemd 服务(可选)

创建 /etc/systemd/system/3proxy.service

[Unit]
Description=3proxy Proxy Server
After=network.target

[Service]
ExecStart=/usr/local/bin/3proxy /etc/3proxy/3proxy.cfg
Restart=always
User=nobody # 以非特权用户运行

[Install]
WantedBy=multi-user.target

然后执行:

sudo systemctl daemon-reload
sudo systemctl enable 3proxy
sudo systemctl start 3proxy
sudo systemctl status 3proxy

Dante SOCKS 服务器

Dante 是一款稳健的 SOCKS 代理服务器,主要支持 SOCKS4 和 SOCKS5。它以稳定性和性能著称,适合高流量的 SOCKS 隧道场景。

安装(Debian/Ubuntu)

sudo apt update
sudo apt install dante-server

在 CentOS/RHEL 上:sudo yum install dante-serversudo dnf install dante-server

基础配置

主配置文件是 /etc/danted.conf
1. 定义网络接口和端口:
logoutput: stderr internal: eth0 port = 1080 # 将 eth0 替换为服务器的内网接口名 external: eth0 # 将 eth0 替换为服务器的外网接口名
如果只有一个接口,则 internalexternal 都使用它。
2. 用户权限:
user.privileged: root user.notprivileged: nobody
3. 认证方式:
对于用户名/密码认证,Dante 使用系统用户。
socksmethod: username none
username 要求客户端认证,none 则允许免认证访问。
4. 访问规则:
定义 client 规则(谁可以连接到代理)和 socks 规则(代理将转发哪些流量)。
```
# 客户端规则:允许任何人连接到代理
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
socksmethod: username none # 应用上面定义的认证方式
}

# SOCKS 规则:允许代理将流量转发到任意目标
socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    socksmethod: username none
}
```
如需将客户端访问限制在特定 IP 段:
```
client pass {
    from: 192.168.1.0/24 to: 0.0.0.0/0
    socksmethod: username none
}
```
  1. 为认证创建系统用户:
    如果使用 socksmethod: username,请创建一个系统用户(出于安全考虑,不创建家目录、不允许 shell 登录)。
    bash sudo adduser --no-create-home --shell /usr/sbin/nologin proxyuser # 为 proxyuser 设置强密码
  2. 重启 Dante:
    bash sudo systemctl restart danted sudo systemctl enable danted sudo systemctl status danted

对比表:Squid、3proxy 与 Dante

特性 Squid 3proxy Dante SOCKS 服务器
类型 HTTP/HTTPS、缓存、正向/反向 HTTP、HTTPS(CONNECT)、SOCKS4/5、FTP SOCKS4/5
复杂度 中到高(功能繁多) 低到中(配置紧凑) 中(稳健的 SOCKS 实现)
主要用途 Web 缓存、内容过滤、访问控制 轻量代理、SOCKS 网关、用途广泛 高性能 SOCKS 代理、隧道
性能 高(尤其是启用缓存时) 极轻量、高效 高,针对 SOCKS 流量优化
认证 Basic、Digest、NTLM、外部 helper Basic、NTLM、基于 IP、外部 helper 用户名/密码(系统用户)、基于 IP
系统支持 Linux、FreeBSD、Windows(通过 Cygwin) Linux、Windows、BSD、macOS Linux、FreeBSD、Solaris、macOS
配置方式 丰富、精细、文本式 紧凑、类脚本、文本式 文本式、分区清晰

通用安全与性能注意事项

  • 防火墙: 始终配置服务器防火墙(例如 ufwfirewalld),仅允许可信 IP 或 IP 段访问代理端口。
  • 认证: 为代理认证使用高强度且唯一的密码。面向公网的代理必须始终启用认证。
  • 最小权限: 以专用的非特权用户(例如 nobody 或自定义用户)运行代理服务,以降低被入侵时的潜在损失。
  • 监控: 定期检查代理日志中的异常活动,并监控服务器资源(CPU、内存、网络 I/O),以发现性能瓶颈或潜在攻击。
  • 更新: 及时更新代理软件和操作系统,以修补安全漏洞。
  • 硬件: 确保服务器具备与预期负载相匹配的 CPU、内存和网络带宽。对于启用大量缓存的 Squid,使用 SSD 存储更有优势。
已更新: 04.03.2026
返回分类

试用我们的代理

遍布 100+ 国家的 20,000+ 代理

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.