最近总有人问我:"我在VPS上搭了代理,但速度很慢,是不是哪里没配好?"
代理这个东西,看似简单——装个软件、跑起来就能用——但实际上里面的门道不少。协议选择、性能优化、安全配置,每一个环节都能影响最终体验。
我玩VPS代理玩了七八年,从早期的 Squid 到现在的各种协议,都折腾过。今天就把这些经验整理出来,给大家一份完整的 VPS 代理搭建指南。
目录
什么时候需要用VPS做代理?
先搞清楚场景。用VPS做代理,通常就这几个原因:
- 科学上网 — 最常见的需求,不多解释
- API代理中转 — 绕过某些API的地区限制或速率限制
- 爬虫代理池 — 用多个VPS做代理轮换,防止被封IP
- 内网穿透 — 通过VPS代理访问内网服务
- CDN加速 — 用VPS做反向代理加速网站访问
不同场景需要的配置和方案完全不同。搞清楚你要做什么,再选择方案。
常见的代理方案对比
| 方案 | 协议 | 配置难度 | 速度 | 安全性 | 推荐场景 |
|---|---|---|---|---|---|
| Squid | HTTP/HTTPS | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ | 网页加速、缓存代理 |
| Dante | SOCKS5 | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | 科学上网、通用代理 |
| Nginx | HTTP/HTTPS | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 反向代理、API中转 |
| HAProxy | TCP/HTTP | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 负载均衡、高性能代理 |
| Shadowsocks | 自定义 | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 科学上网(需要客户端) |
我的建议: 如果不是有特殊需求,SOCKS5(Dante)是最通用的选择。它支持TCP和UDP,几乎所有软件都能配置使用。
方案一:HTTP代理(Squid)
Squid 是最老牌的HTTP代理软件,优点是稳定、功能强大,而且支持缓存。
安装和配置
# 安装 Squid
apt install squid -y
# 备份原始配置
cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
编辑配置文件 /etc/squid/squid.conf:
# 监听端口(修改默认的3128为自定义端口)
http_port 8888
# 允许的网段(按需修改)
acl localnet src 0.0.0.0/0
# 允许所有通过
http_access allow localnet
http_access deny all
# 关闭缓存(如果是做代理而非缓存)
cache deny all
启动并验证:
systemctl restart squid
systemctl enable squid
# 验证端口是否监听
netstat -tlnp | grep 8888
优点: 配置简单,支持缓存,兼容性好
缺点: 只支持HTTP协议,不支持UDP,不适合游戏和视频通话
方案二:SOCKS5代理(Dante)
Dante 是目前最流行的SOCKS5代理软件,配置相对简单,功能强大。
安装和配置
# 安装 Dante
apt install dante-server -y
编辑配置文件 /etc/danted.conf:
logoutput: /var/log/danted.log
# 监听端口
internal: 0.0.0.0 port = 1080
# 出口网卡
external: eth0
# 认证方式(无认证,配合防火墙IP白名单使用)
socksmethod: none
clientmethod: none
# 允许的客户端
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
}
# SOCKS5 规则
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
protocol: tcp udp
}
启动:
systemctl restart danted
systemctl enable danted
# 检查端口
netstat -tlnp | grep 1080
安全提醒: 默认配置是没有任何认证的,任何人知道你的IP和端口都能使用。必须配合防火墙限制IP访问。
配置防火墙
# 只允许特定IP访问1080端口
iptables -A INPUT -p tcp --dport 1080 -s 你的家庭公网IP -j ACCEPT
iptables -A INPUT -p tcp --dport 1080 -j DROP
或者使用密码认证(需要编译安装额外模块),但最简单的做法就是防火墙IP白名单。
方案三:Nginx反向代理
Nginx 反向代理适合做API中转、网站加速等场景。
配置示例
# 安装 Nginx
apt install nginx -y
编辑配置文件 /etc/nginx/sites-available/proxy:
server {
listen 8080;
location / {
# 代理到目标服务器
proxy_pass https://目标API地址;
# 传递请求头
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 超时设置
proxy_connect_timeout 30s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
}
优点: 功能强大,支持HTTPS、负载均衡、流量控制
缺点: 配置相对复杂,需要一定的Nginx基础
代理性能优化指南
不管你用哪种方案,下面的优化都能显著提升代理性能:
1. 开启BBR
这个我之前说过,BBR对网络传输的提升非常明显:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
2. 调整系统参数
# 在 /etc/sysctl.conf 中添加
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.core.somaxconn = 4096
# 生效
sysctl -p
3. 选择最优的机房
这个很关键。代理的速度,70% 取决于线路,30% 取决于配置。
- 面向国内用户:选 CN2 GIA 线路的VPS
- 面向海外用户:选离目标地区近的机房
安全注意事项
代理服务器直接暴露在公网上,是黑客的重点关注对象。以下安全措施一定要做好:
1. 防火墙是底线
不管是哪种代理方案,一定配合防火墙使用。只允许可信的IP访问代理端口。
2. 不使用默认端口
把端口改成非标准端口(如 1080 改成 10080-65535 之间的随机端口),能挡住大量自动扫描。
3. 启用认证
如果代理需要长期使用,最好启用用户名密码认证。Dante 需要配合 libpam 使用,Nginx 可以配置 basic auth。
4. 监控异常流量
定期检查代理的日志文件,看有没有异常的大流量或者异常的连接IP:
# 查看连接最多的IP
netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10
5. 及时更新软件
定期更新 Squid、Dante、Nginx 等软件到最新版本,修补已知漏洞。
总结
最后,给不同需求的用户一个简单直接的建议:
- 想要通用代理、兼容各种软件 → Dante SOCKS5,配合防火墙IP白名单
- 需要缓存加速、浏览网页 → Squid HTTP代理
- 做API中转或网站加速 → Nginx 反向代理
- 追求兼容性和加密 → Shadowsocks(需要客户端配合)
不管你选择哪种方案,记住三点:
- 安全第一 — 防火墙是必须的,代理端口不能对所有人开放
- 线路决定体验 — 再好的配置也弥补不了垃圾线路
- 做好监控 — 定期检查日志,及时发现异常
代理这个东西,配置起来不难,但要配得好、用得稳,还是需要一些心思的。
希望对你有帮助。
(全文完)
评论 (0)