1.Socks5项目
在一众xray、ss等协议和应用的包围下,单纯的Socks5不太受关注,老E倒是认为简单、轻便,挂个TG也不错。近期由于需要使用到socks5代理,资源很多,可谓海量,梳理一下大致包括sock5 only(核心功能就是提供socks5 service)、socks5 module(socks5仅是一个模块甚至辅服务)、socks5 distributed(可与其他节点组网多级转发)3类。不考虑x2ray、ss的情况下,典型项目主要有:
- Goproxy
goproxy是golang实现的高性能http、https、websocket、tcp、socks5代理服务器,支持内网穿透、链式代理、通讯加密、智能HTTP、SOCKS5代理、黑白名单、限速/限流量/限连接数,同时可以跨平台,提供KCP支持及认证API。
- Hysteria
Hysteria 是一个功能丰富的,专为恶劣网络环境(如卫星网络、拥挤的公共 Wi-Fi、从中国连接境外服务器等)进行优化的双边加速工具,基于修改版的 QUIC 协议。
- WARP及一键脚本
WARP是Cloudflare公司推出的一款服务,可以用来保护使用者隐私,基于wireguard协议,使用UDP来传输数据,额外提供对socks5的有效支持。WARP一键脚本可以在VPS上一键添加CloudFlare WARP IPv4/IPv6或双栈接口,添加Socks5代理。可支持 ChatGPT,解锁奈飞流媒体。
- Dante
Dante(但丁)是一个免费的Socks代理服务器,其开发公司主要是通过销售扩展Modules以及服务来盈利。如果只是需要代理,不需要安装额外的Modules。按照其官方文档介绍,dante由 SOCKS 服务器和客户端组成,实现 RFC 1928 和相关标准。在大多数情况下,它可以使客户端透明,提供的功能有点类似于可描述为非透明第 4 层路由器的功能。Dante SOCKS 服务器可以提供包括安全性和 TCP/IP 终止、资源控制(带宽、会话)、日志记录(主机信息、传输的数据)和身份验证等功能。
- Gost
Gost是go语言实现的安全隧道(st--simple/secure tunnel),支持多端口监听、可设置转发代理,支持多级转发(代理链),同时,支持标准HTTP/HTTPS/HTTP2/SOCKS4(A)/SOCKS5代理协议,Web代理支持探测防御等,功能丰富。核心在于GOST中一个代理服务逻辑上被分成两层:协议层(Protocol)和传输层(Transport),每层有若干可选的类型,两层之间相互独立,并可以任意组合使用。
毫无疑问,老E选择简单、快速,直接danted/sockd走起,选择docker方式安装部署,后续有需要方便替换其他项目。
2.docker方式安装dante
老E使用了lozyme/sockd的dante基于Alpine的精简镜像,镜像作者还提供、发布一键安装脚本,本文一并采用。lozyme/sockd支持Pam.user
认证且默认开启,不与系统用户关联,对于VPS管理员而言非常友好。
docker pull lozyme/sockd mkdir -p /home/dockers/danted docker run -d --name mydante lozyme/sockd docker cp mydante:/home/danted/conf/sockd.conf /home/dockers/danted docker cp mydante:/home/danted/conf/sockd.passwd /home/dockers/danted docker stop mydante docker rm -f mydante #如有需要,可编辑Socks5服务器配置文件,文件内容可参考下文 vim /home/dockers/dante/sockd.conf #10080保持于sockd.conf中设置端口一致,默认2020,此处应保持一致 docker run --name mydante \ -p 12345:2020 \ -v /home/dockers/danted/sockd.passwd:/home/danted/conf/sockd.passwd \ -v /home/dockers/danted/sockd.conf:/home/danted/conf/sockd.conf \ -d lozyme/sockd docker exec mydante script/pam add test 1234
可使用如下命令测试socks5代理是否成功开启:
curl -v -x socks5://uaername:passwd@127.0.0.1:portnum https://bing.com
当前版本lozyme/sockd dante默认端口采用2020,可以修改。除passwd文件外,可一并将dante.conf文件拷贝宿主机目录,并在后续创建、挂载容器时映射至宿主机对应目录。老E给出如下一份最为简单的sockd.conf文件内容参考。其中的接口(internal、external)可使用接口名称或ip,也可使用主机名。
logoutput: stdout #debug: 2 internal: eth0 port = 2020 external: eth0 #external.rotation: same-same clientmethod: none socksmethod: pam.username none user.privileged: root user.notprivileged: nobody client pass { from: 0/0 to: 0/0 log: connect disconnect } #client block { # from: 0/0 to: 0/0 # log: connect error #} socks pass { from: 0/0 to: 0/0 log: connect disconnect } #socks block { # from: 0/0 to: 0/0 # log: connect error #}
同时,精简的lozyme/sockd Dante镜像具备相应的账户管理功能。
docker exec mydante script/pam show #mydante为 --name指定的容器名,script/pam show显示账户 docker exec mydante script/pam add USER PASSWORD #添加、修改账户 docker exec mydante script/pam del USER #删除账户
3.一键脚本(danted/sockd)方式安装
Dante的安装相对简单,但配置需要一定的Linux基础,化繁为简,可以使用Dante一键安装脚本进行快速安装部署(Lozy/danted: Fast script for installing & configing Danted--Socks5 Proxy Server)。
#apt-get install dante-server #普通安装方式 wget --no-check-certificate https://raw.github.com/Lozy/danted/master/install.sh -O install.sh bash install.sh bash install.sh --name mysockd --ip="a.b.c.d" -p 12345 --user=test --passwd=1234 #bash install.sh --uninstall #卸载danted/sockd
可通过以下命令添加用户。
/etc/init.d/sockd adduser USERNAME PASSWORD
4.最后
至此,在调整VPS安全策略、防火墙规则的前提下,需要使用socks5代理服务的应用即可通过lozyme/sockd宿主机的相应端口、dante服务账户及密码上线部署、运行了,socks5相对轻便、可通过TLS以支持加密通信。而本地部署的应用也可以充分借助其高效转发代理的功能,以Go-proxy-bingai为例,其docker启动加载命令进行如下调整即可。
#画蛇添足 docker run -e Go_Proxy_BingAI_SOCKS_URL=VPS_IP:DantePort -e Go_Proxy_BingAI_SOCKS_USER=username -e Go_Proxy_BingAI_SOCKS_PWD=passwd -d -p 8080:8080 --name go-proxy-bingai --restart=unless-stopped adams549659584/go-proxy-bingai
Goproxy、Gost等都是非常优秀的项目,而WARP作为一款Cloudflare全家桶的一员,其应用非常广泛,因其IP相对较为洁净、未受污染,常被用于解锁Netflix、ChatGPT服务,而带宽虽有不足,但可作为备份以应对不时之需,后续我们将针对WARP、WARP+及Zero Trust的部署和应用进行分析和分享。
文章评论
请问openwrt虚拟多播取的多个外网ip 有什么办法搭建对应的socks5吗?
我有一个python程式有一个功能只限定socks5连接('socks5://192.168.11.20:1080')
我想要让这个程式连接五个不同的外网ip从我家自己连出去的 该怎么连线且使用socks5对应到绑定的外网ip?
@acc663yjk 手动修改python程序或者在11.20部署支持级联代理的socks5服务端