iptables - 从多个来源进行端口转发

iptables - 从多个来源进行端口转发

(最初在 StackOverflow 上提问。谢谢肯·怀特将我重定向到这里。)

Ubuntu 16.04 amd64,带 3 个 NIC

NIC1:外部 IP $WAN_IP
NIC2:内部 LAN $LAN_IP
NIC3:基础设施 LAN $INF_IP (基础设施 LAN 是所有服务器所在的地方,远离台式机和个人计算机)

我想将 NIC1 和 NIC2 的请求端口转发到 NIC3 上的特定服务器。我可以做到这一点,并且一切正常。我的问题是,我无法可靠地设置--to-sourceiptables 中的字段。

这是我目前所拥有的:

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无论请求来自哪个接口。

先谢谢了。

相关内容