代理服务器怎么搭建?端口认证与访问控制教程
无论是做数据采集、多账号管理,还是搭建企业出海业务的网络通道,一台稳定的代理服务器都是基础设施中的关键一环。但很多技术同学在实际搭建时,往往卡在两个地方:端口怎么配才不冲突、认证和访问控制怎么设置才既方便使用又足够安全。
这篇文章会从零基础出发,带你完整走一遍代理服务器的搭建流程,重点拆解端口认证和访问控制这两个核心安全环节,让你搭出来的节点既好用又防得住。
一、搭建前的准备工作
在动手之前,先确认以下几项基础条件是否就绪:
1. 服务器环境
一台拥有独立公网 IP 的云服务器(Linux 系统推荐 Ubuntu 22.04 或 CentOS 7+)。如果你没有合适的海外服务器资源,光络云提供国内及海外多节点代理 IP 服务,其中海外节点需要客户自身具备海外网络环境才能接入(TikTok 专线除外),可以省去自行采购和运维的麻烦。
2. 端口规划
提前确定你要开放的代理端口。常见选择如下:
| 用途 | 推荐端口 | 说明 |
|---|---|---|
| HTTP/HTTPS 代理 | 3128 / 8080 / 8443 | 最常用,兼容性好 |
| SOCKS5 代理 | 1080 / 3128 | 支持 TCP/UDP,灵活性高 |
| 备用端口 | 9050 / 8888 | 主端口被占时切换 |
3. 防火墙初始状态
确认服务器的防火墙(firewalld / ufw / iptables)处于可管理状态,后续步骤会用到它来做访问控制。
二、安装与核心配置
以最常见的 Squid 代理为例(Socks 协议可选 3proxy 或 Dante),以下是核心步骤:
# 1. 安装 Squid(Ubuntu 示例)
sudo apt update
sudo apt install -y squid
# 2. 编辑主配置文件
sudo nano /etc/squid/squid.conf
在配置文件中设置监听端口:
# 监听地址与端口
http_port 0.0.0.0:3128
# 如需同时开启 HTTPS 代理(需提前配置证书)
# https_port 0.0.0.0:8443 cert=/etc/squid/ssl/server.pem
保存后重启服务:
sudo systemctl restart squid
sudo systemctl enable squid
如果选择 SOCKS5 协议,以 3proxy 为例:
# 安装 3proxy
sudo apt install -y 3proxy
# 编辑 /etc/3proxy/3proxy.cfg
nserver 8.8.8.8
socket 1 3 3
timeouts 1 5 30 60 180 1800 15 60
allow work 0.0.0.0 0.0.0.0
proxy -p1080 -a -n -r
auth strong
到这里,代理的基本服务已经跑起来了,但裸奔状态——任何人都能连上来用。接下来就是最关键的安全加固环节。
三、端口认证:给代理加一把锁
端口认证的核心思路是:连接代理时必须提供正确的用户名和密码,否则直接拒绝。这一步能有效防止你的代理端口被扫描后滥用。
Squid 的用户认证配置
# 在 /etc/squid/squid.conf 中添加:
# 启用基本认证
auth_param basic program /usr/lib/squid/negotiate_cert_id_lookup
auth_param basic realm Proxy Access
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
# 限制:只有认证通过的用户才能使用代理
auth_required all
http_access allow authenticated
http_access deny all
创建认证用户(使用 htdigest 或 PAM):
# 方法一:htdigest(简单场景)
sudo htdigest /etc/squid/passwd "Proxy" username1
# 输入密码后回车
# 在 squid.conf 中指定:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
3proxy 的认证配置
# /etc/3proxy/3proxy.cfg 中:
auth strong
# 创建用户文件 /etc/3proxy/login:
username1:CL:your_password_here
username2:CL:another_password
# 重启服务
sudo systemctl restart 3proxy
验证是否生效:在客户端配置代理后,如果不填用户名密码,连接应直接超时或返回 407 Proxy Authentication Required。
四、访问控制:只让”自己人”进门
认证解决了”你是谁”的问题,访问控制则解决”你能不能来”的问题。两层叠加,安全等级直接拉满。
1. IP 白名单(应用层)
在代理软件层面,只允许指定 IP 段发起连接:
# Squid 示例:只允许公司出口 IP 段
acl trusted_src src 203.0.113.0/24 198.51.100.10
http_access allow trusted_src
http_access deny all
# 3proxy 示例:
allow work 203.0.113.10
allow work 198.51.100.0-198.51.100.255
# 其余 IP 默认拒绝(3proxy 默认 deny)
2. 防火墙规则(系统层)
即使应用层配置有误,防火墙也能兜底拦截:
# firewalld(CentOS)
sudo firewall-cmd --permanent --add-rich-rule='
rule family="ipv4" source address="203.0.113.0/24"
port port="3128" protocol="tcp" accept'
sudo firewall-cmd --permanent --add-rich-rule='
rule family="ipv4" source address="203.0.113.0/24"
port port="1080" protocol="tcp" accept'
sudo firewall-cmd --permanent --add-rich-rule='
rule family="ipv4" port port="3128" protocol="tcp" drop'
sudo firewall-cmd --permanent --add-rich-rule='
rule family="ipv4" port port="1080" protocol="tcp" drop'
sudo firewall-cmd --reload
# ufw(Ubuntu)
sudo ufw allow from 203.0.113.0/24 to any port 3128 proto tcp
sudo ufw allow from 203.0.113.0/24 to any port 1080 proto tcp
sudo ufw deny 3128
sudo ufw deny 1080
sudo ufw --force enable
3. 连接数与频率限制
防止单个 IP 把带宽打满:
# Squid 限制单 IP 最大连接数
max_client_body 8 MB
request_body_max_size 8 MB
# 配合 iptables 限制每 IP 新建连接速率
sudo iptables -A INPUT -p tcp --dport 3128 \
-m connlimit --connlimit-above 50 --reject
五、安全加固清单
搭建完成后,建议逐项核对以下清单:
| 检查项 | 操作 | 优先级 |
|---|---|---|
| 端口认证已启用 | 无凭据连接返回 407 / 拒绝 | 必须 |
| IP 白名单已配置 | 非白名单 IP 无法建立 TCP 连接 | 必须 |
| 防火墙仅放行白名单 | 非白名单 IP 在系统层即被 DROP | 必须 |
| 日志开启 | Squid/3proxy 日志记录来源 IP 与时间 | 推荐 |
| 定期轮换密码 | 每 30 天更换一次认证密码 | 推荐 |
| 禁用不必要协议 | 关闭 FTP、Gopher 等无关代理协议 | 推荐 |
| SSH 密钥登录 | 关闭密码登录,仅允许密钥 | 推荐 |
六、什么时候该考虑用现成的代理服务?
自己搭建代理服务器适合学习原理、小规模测试,但在以下场景中,自建方案的运维成本和稳定性很难跟上业务节奏:
需要大量 IP 轮换——自建节点 IP 池有限,频繁更换需要批量采购服务器;需要高可用与故障自动切换——单台服务器宕机即业务中断;需要覆盖多地域——自己在全球各地部署和运维节点,人力成本极高。
光络云提供国内及海外多节点的代理 IP 服务,内置端口认证、IP 白名单、连接数控制等安全机制,开箱即用。海外节点需要客户自身具备海外网络环境才能接入(TikTok 专线除外),免去自行采购和运维服务器的麻烦。对于业务量较大、对稳定性和合规性有要求的团队,直接接入成熟的代理服务是更务实的选择。
常见问题
Q: 代理端口被扫描到怎么办?
首先确认认证和防火墙规则是否生效。如果端口暴露且无认证,立即在防火墙层 DROP 该端口,然后重新配置认证。建议将代理端口改为非常用端口(如 443 以外的随机高端口),降低被自动化扫描命中的概率。
Q: 用户名密码认证和 IP 白名单,哪个更重要?
两者解决不同层面的问题,缺一不可。IP 白名单是”第一道门”,在 TCP 层就拦截非授权来源;认证是”第二道门”,即使 IP 在白名单内(比如同事共用出口 IP),也必须凭据正确才能使用。生产环境建议两层都配。
Q: 搭建完成后如何验证代理是否正常工作?
在客户端用 curl 测试:curl -x http://user:pass@代理IP:端口 http://httpbin.org/ip,返回的 JSON 中 IP 应为代理服务器的公网 IP。如果返回 407 说明认证配置有误,如果超时说明防火墙或网络不通。
Q: 光络云的代理服务需要我自己有海外服务器吗?
光络云的海外节点需要客户自身具备海外网络环境才能接入,TikTok 专线产品除外。国内节点则无此限制,可直接使用。具体接入条件可在光络云官网查看产品说明或联系技术支持确认。
Q: 搭建的代理服务器需要定期维护吗?
需要。建议每月检查一次系统安全更新(sudo apt upgrade)、审查访问日志是否有异常来源 IP、轮换一次认证密码。如果业务量增长,还需关注 CPU、内存和带宽是否接近瓶颈。
