分享一个使用 iptables 中转 Xray 的教程方法

195 天前
vasaeru  vasaeru
本教程适用于 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
2272 次点击
所在节点   宽带症候群  宽带症候群
16 条回复
selca
selca
195 天前
这不是官方文档吗?
povsister
povsister
195 天前
这不是端口转发配置吗,没看出和 xray 有啥关系
b1u2g3
b1u2g3
195 天前
学艺不精,估计没看过文档
herozzm
herozzm
195 天前
参看官方文档:透明代理
Altairvelvet
Altairvelvet
195 天前
你都用 iptables 转发了,配置个 CSF 不是更方便?
Redhut
Redhut
194 天前
xray 任意门不是挺好用的嘛
beddo
beddo
194 天前
楼主方便留个联系方式吗?有问题探讨哈。
vasaeru
vasaeru
194 天前
就是一个单纯 nat 中转的教程 因为搜半天没有详细的教程就发出来了 至于官方文档我确实没有看过
vasaeru
vasaeru
194 天前
@selca 和官方文档不一样吧,官方文档里还需要中转服务器安装 xray ,单纯使用 iptables 三分钟就配置好了也不需要安装额外的东西
peasant
peasant
194 天前
@vasaeru #9 很明显你看的和 4 楼说的不是同一个东西
1423
194 天前
人还是比 AI 强
试了几个 AI, 要么忘记 iptables-save, 要么多余地用 systemd 自己实现 iptables restore, 要么开机自动编辑 sysctl.conf 加入转发, 而且普遍不知道用 PREROUTING+POSTROUTING
但是 AI 排版普遍比 op 要强, 楼主没有使用 markdown
vasaeru
194 天前
@peasant 他说的是哪个
xqzr
194 天前
有 SNAT 不需要 MASQUERADE 了吧
Ipsum
194 天前
这不是基操???
sadan9
192 天前
iptables-save 不是只导出规则么?至少应该覆盖默认规则配置文件吧。还是我记错了。
vasaeru
191 天前
@sadan9 iptables-save 是让系统重启以后读取保存的规则

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1064217

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX