本教程适用于 Ubuntu20 系统,其他系统也可以尝试。
因为 Xray 只使用 TCP 进行代理(虽然它支持 fullcone 的 UPD ),所以我们只需要转发 TCP 流量即可。
代理服务器记得打开所有 TCP 端口,否则 UDP 可能会失效。
1.开启转发功能
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
2.打开 iptables NAT
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
3.开放指定端口
iptables -A INPUT -p tcp --dport 中转服务器端口 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 中转服务器端口 -j ACCEPT
iptables -A FORWARD -o eth0 -d 目标服务器 IP -p tcp --dport 目标服务器端口 -j ACCEPT
iptables -A FORWARD -i eth0 -s 目标服务器 IP -p tcp --sport 目标服务器端口 -j ACCEPT
4.获取中转服务器本地 IP (中转服务器 eth0 的局域网 IP ,不是公网 IP )
ifconfig
5.转发到指定服务器
iptables -t nat -A PREROUTING -d 中转服务器本地 IP -p tcp --dport 中转服务器端口 -j DNAT --to-destination 目标服务器 IP:目标服务器端口
iptables -t nat -A POSTROUTING -s 目标服务器 IP -p tcp --dport 目标服务器端口 -j SNAT --to-source 中转服务器本地 IP:中转服务器端口
举个例子
我想通过端口号 10000 中转服务器 IP 为 113.108.81.189 ,端口号为 443 (通常默认)的代理服务器
通过 ifconfig 查询到 eth0 本地 IP 为 172.13.0.26
iptables -A INPUT -p tcp --dport 10000 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 10000 -j ACCEPT
iptables -A FORWARD -o eth0 -d 113.108.81.189 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i eth0 -s 113.108.81.189 -p tcp --sport 443 -j ACCEPT
iptables -t nat -A PREROUTING -d 172.13.0.26 -p tcp --dport 10000 -j DNAT --to-destination 113.108.81.189:443
iptables -t nat -A POSTROUTING -s 113.108.81.189 -p tcp --dport 443 -j SNAT --to-source 172.13.0.26:10000
保存下 iptables 的规则
iptables-save
可以通过以下代码查看规则是否添加成功
iptables -L -n --line-number
最后的最后:记得在安全组打开需要的端口,如果需要开启 fullcone 转发可以参考这篇教程:
https://www.186086.xyz/Linux/Ubuntu%2020%20%E5%90%AF%E7%94%A8%20iptables%20fullconenat
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/1064217
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.