Docker部署Socks5代理失败求助:多公网IP代理池搭建遇连接拒绝
解决Docker部署Socks5代理的连接拒绝问题
问题根源
日志里的Connect to 127.0.0.1:80 failed说明代理容器将目标域名google.fr错误解析到了本地回环地址,或者curl测试命令的写法有问题,导致代理请求指向了容器内部未运行服务的80端口。
解决方案
1. 修正curl测试命令
必须指定完整的协议头(http/https),否则curl的请求格式会被代理错误处理。执行以下命令测试:
curl -x socks5://serverip:1080 https://google.fr
2. 强制容器使用公共DNS解析
如果容器内部DNS配置异常,会导致域名解析失败。运行容器时手动指定公共DNS服务器:
docker run -p 1080:1080 --dns 8.8.8.8 serjs/go-socks5-proxy
3. 验证容器内部的DNS解析
进入容器检查域名解析是否正常:
# 替换为你的容器ID或名称 docker exec -it <container-id> sh # 在容器内执行解析测试 nslookup google.fr
如果返回正常的公网IP,说明DNS配置没问题;如果还是解析到127.0.0.1,需要检查宿主机的DNS配置,或者在运行容器时添加--dns-search参数指定域名搜索域。
4. 多公网IP代理池的后续配置
等单IP代理正常工作后,你可以为每个公网IP单独部署一个代理容器,通过绑定特定宿主机IP来实现多IP切换:
# 绑定第一个公网IP docker run -d -p 1.1.1.1:1080:1080 --dns 8.8.8.8 serjs/go-socks5-proxy # 绑定第二个公网IP docker run -d -p 2.2.2.2:1080:1080 --dns 8.8.8.8 serjs/go-socks5-proxy
后续可以通过脚本或代理池管理工具来统一调度这些不同IP的Socks5代理。
内容的提问来源于stack exchange,提问作者Sancho
相关产品推荐
相关产品推荐

