部署代理服务

在这里我们提供了两种 SOCKS5 代理的安装方法,为了避免问题,请仔细阅读相关描述。

需要代理 UDP 协议

由于 SOCKS5 UDP 代理的特性,会导致许多难以预料的问题,事情也会变得越来越复杂。如果您确定需要使用 UDP,请务必遵循以下规则:其一,您的宿主机系统必须为 Linux,且防火墙需要放开 50000-55000 的 UDP 端口;其二,您的服务器网络不能是 NAT(FULL NAT 也不行,目前很多云服务器都是 NAT 模式)。

小技巧

为什么宿主机必须是 Linux?因为在其他系统上 docker 可能无法正常映射如此大范围的端口,而且其他系统上 docker 的网络模式也无法设置为主机(host)模式。

如果您不确定自己的服务器网络是否属于 NAT,请通过 ifconfig 等命令获取默认网络接口的 IP 地址,然后在您希望使用代理的机器上 ping 这个地址。如果 ping 不通,那么您的服务器很可能处于 NAT 网络中。当然,即使有部分条件不满足,也不代表完全无法使用 UDP,您仍然可以自行搭建 gost,文末会介绍具体方法。

注意

由于 SOCKS5 UDP 代理的特性,如果您确定需要 UDP,请务必设置防火墙,允许所有端口进行 UDP 通信。

无需代理 UDP 协议

如果您并不需要代理 UDP 协议,那么一切都很简单。执行以下命令即可启动一个 SOCKS5 服务。

docker run -it --rm -p 1080:1080 --name socks -e LOGIN=username -e PASSWORD=passwd rev1si0n/socks5

指定出网网卡

如果您的服务器或电脑上有多个可上网的接口,以家用电脑为例,您通过网线和 Wi‑Fi 分别连接了两个网络,那么您的电脑可能就会有两个网络接口,例如 wlan0eth0。当您想指定代理出网所使用的网络接口时,比如想通过 eth0 出网,使用以下命令启动 SOCKS5 服务即可。

注意

您的电脑或服务器必须为 Linux 系统,其他系统不支持指定出网网卡。

docker run -it --rm --net host --name socks -e LOGIN=username -e PASSWORD=passwd -e DEV=eth0 rev1si0n/socks5

如果您已满足使用 UDP 的全部前置条件,使用如下命令即可。

docker run -it --rm --net host --name socks -e LOGIN=username -e PASSWORD=passwd rev1si0n/socks5

使用 GOST 服务

如果您想使用 UDP,但无法满足上文中使用 UDP 的条件,或者用不到指定出网接口,又或者不想安装 docker,可以尝试 gost。 从 github.com/ginuerzh/gost/releases/ 下载对应系统的可执行文件压缩包。

gost -L=socks5://username:passwd@:1080

提示

完成所有部署操作后,请参照 设置代理 章节,了解如何为设备配置网络代理。