(最初在 StackOverflow 上提问。谢谢肯·怀特将我重定向到这里。)
Ubuntu 16.04 amd64,带 3 个 NIC
NIC1:外部 IP $WAN_IP
NIC2:内部 LAN $LAN_IP
NIC3:基础设施 LAN $INF_IP
(基础设施 LAN 是所有服务器所在的地方,远离台式机和个人计算机)
我想将 NIC1 和 NIC2 的请求端口转发到 NIC3 上的特定服务器。我可以做到这一点,并且一切正常。我的问题是,我无法可靠地设置--to-source
iptables 中的字段。
这是我目前所拥有的:
iptables -A PREROUTING -t nat -p udp -d $WAN_IP --dport 1194 -j DNAT --to-destination 192.168.26.105 # VPN Server on the $INF_IP subnet
iptables -A PREROUTING -t nat -p udp -d $LAN_IP --dport 1194 -j DNAT --to-destination 192.168.26.105
iptables -A PREROUTING -t nat -p udp -d $INF_IP --dport 1194 -j DNAT --to-destination 192.168.26.105
# The above code routes port 1194:udp (openvpn) to the VPN Server 26.105 properly
# The -j SNAT below is where I encounter problems
iptables -A POSTROUTING -t nat -p udp -m udp -s 192.168.26.105 --dport 1194 -j SNAT --to-source ????
以上????是POSTROUTING -j SNAT
我遇到问题的地方。我有 3 个潜在 IP 可以设置为这个,但没有可靠的方法来设置它。如果我将它设置为$WAN_IP
,$LAN_IP
则和上的任何内容$INF_IP
都会收到错误的源数据包。
如何使用 iptables(或其他方式)正确设置地址,SOURCE
无论请求来自哪个接口。
先谢谢了。