这样的 Port Forwarding 规则该怎么用 iptables 创建?

2022-12-25 20:21:40 +08:00
 L4Linux

我目前用 TUN/TAP 给虚拟机分配了 network interface ,通过设置一下三条规则,虚拟机能上网:

iptables -A FORWARD -i tap0 -o wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o tap0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

现在,我想让虚拟机能访问主机上的某些服务,这些服务只监听了 127.0.0.1 。假设 tap0 的网段是 10.0.0/24 ,iptables 命令该怎么写呢?

730 次点击
所在节点    问与答
4 条回复
wonderblank
2022-12-25 21:49:03 +08:00
1. 直接监听 0.0.0.0 ,可以直接访问
2. iptables -t nat -I PREROUTING -i tap0 -p tcp --dport 80 -j REDIRECT --to-port 80 # DNAT
L4Linux
2022-12-25 22:50:08 +08:00
@wonderblank 好像不行,这样设置虚拟机里访问不了 10.0.0.0:80 (网关),而且 iptables -L 也显示不出这条规则。
L4Linux
2022-12-25 23:11:11 +08:00
@wonderblank Samba 成功了 V2Ray 没成功。这条规则是没问题的。
wonderblank
2022-12-26 09:20:53 +08:00
可以加上-d tap0_ip_on_host ,这样就不会影响其他网站访问。

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

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

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

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

© 2021 V2EX