Shadowsocks+shadow-tls UDP转发
本文最后更新于 2024-02-28,文章原本内容可能已经过时,请查看是否有更新内容。
前言
老刘原话
正好最近重建博客,需要补充这个,所以本文尝试使用iptables
将shadow-tls
端口的udp
流量转发至shadowsocks
端口
搭建Shadowsocks+Shadow-TLS
Surge && shadow-tls v3 | Lalala’s Blog
这篇是snell+stls,ss类似(doge,不过不管怎么搭建的,反正都可以用
我的配置
docker-compose.yml
ss配置
UDP转发
没转发时的ss+shadow-tls测试
很明显没有UDP
那么使用下面两行命令
sudo iptables -t nat -A PREROUTING -p udp --dport 8443 -j REDIRECT --to-port 9087
sudo iptables -t nat -A OUTPUT -p udp --dport 8443 -j REDIRECT --to-port 9087
⚠️注意:换成自己对应的端口
这样,任何发送到我的 shadow-tls 端口 (8443) 上的 UDP 流量都会被自动转发到 ss节点端口 (9087) 上
使用以下命令查看NAT表中的所有规则
sudo iptables -t nat -L
如图
现在再进行测试
SUCCESS!!
但是现在有一个问题,就是reboot vps之后,这些规则就没了,所以需要用到iptables-persistent
下载iptables-persistent
sudo apt-get update
sudo apt-get install iptables-persistent
在安装过程中,系统可能会询问你是否要保存当前的 IPv4 和 IPv6 规则。选择是(Yes),以便保存你当前的 iptables
规则,如下图
直接回车即可
现在iptables-persistent
服务会在系统启动时自动加载/etc/iptables/rules.v4
和 /etc/iptables/rules.v6
中保存的规则,无需进一步的手动干预
至此全部完成!!
删除iptables规则
如果你没有使用iptables-persistent
,那么reboot你的vps即可
如果使用了,那么使用下面的命令来删除iptables规则
sudo iptables -t nat -D PREROUTING -p udp --dport 8443 -j REDIRECT --to-port 9087
sudo iptables -t nat -D OUTPUT -p udp --dport 8443 -j REDIRECT --to-port 9087
⚠️注意:换成自己对应的端口
然后输入以下命令保存规则的修改
sudo netfilter-persistent save
其他
根据老刘的描述,还有一个方法
-
搭建一个新的 shadowsocks节点: 在你的服务器上搭建一个新的
ss节点
,在配置文件中指定"mode": "udp_only"
-
注意指定不同的端口: 也就是说我原本的ss端口是
9087
,这个新的节点要换一个,确保它不会与shadow-tls
或其他服务的端口冲突 -
客户端配置正确: 客户端需要配置为将 UDP 流量发送到这个新节点的端口上
总结:麻烦多了,还是snell+stls吧