iptables:将单个IP /端口转发到一个接口,将其他所有内容转发给另一个接口

时间:2017-01-02 14:58:32

标签: iptables nat

我正在运行ubuntu 16.0.4作为wifi热点并共享一个VPN连接。

eth0在子网10.10.10.x上 tun0在子网10.9.0.x上 wlan0在子网10.10.11.x上

我能够与以下规则共享vpn连接...
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
...所以任何使用ubuntu盒作为其网关的有线设备都可以共享vpn。

我还通过vpn转发无线接口上的所有流量,并通过以下方式允许返回流量...
iptables -A FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT

到目前为止,非常好。

但是,我希望端口32400上的所有流量都转发到eth0,特别是IP 10.10.10.20(当然,允许返回流量)。

使用我当前的设置,我在wlan0上的无线连接无法看到eth0的子网。

我怎样才能做到这一点?我可以在端口32400上转发所有流量...或者将单个IP(例如wlan0上的10.10.11.200)的所有内容转发到10.10.10.20(eth0)。

我已尝试过端口转发和IP转发,但似乎无法正常工作,因为我不确定方法还是正确的语法。

提前感谢您的建议。

1 个答案:

答案 0 :(得分:0)

这些规则可以解决这个问题,假设目标端口是相同的32400(但我不确定订单引用其他规则)

iptables -t nat -A PREROUTING -p tcp --dport 32400 -j DNAT --to-destination 10.10.10.20:32400
iptables -t nat -A POSTROUTING -p tcp -d 10.10.10.20 --dport 32400 -j SNAT --to-source 10.10.11.200