将流量从 2 个 Ubuntu 外部网卡重定向到特定的内部主机

将流量从 2 个 Ubuntu 外部网卡重定向到特定的内部主机

我在将 Ubuntu 12.10 服务器上面向外部的 2 个接口的传入流量重定向到 2 个独立的内部主机时遇到了问题。我能够将 eth0 上的传入流量顺利重定向到内部主机,但传入 eth1 接口的传入流量却无处可去。

有什么建议么?

这是我正在使用的 iptables 和接口设置。

/etc/iptables.rules
-A PREROUTING -i eth0 -p tcp -m tcp --dport 8000 -j DNAT --to-destination 10.101.0.20:3389
-A PREROUTING -i eth1 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 10.101.0.79:3389
-A POSTROUTING -o eth0 -j SNAT --to-source 63.22.130.186
-A POSTROUTING -o eth1 -j SNAT --to-source 63.22.130.187


/etc/network/interfaces
# eth0
auto eth0
allow-hotplug eth0
iface eth0 inet static
      address 63.22.130.186
      netmask 255.255.255.248
      gateway 63.22.130.185
      dns-nameservers 8.8.8.8
      pre-up iptables-restore < /etc/iptables.rules

# eth1
auto eth1
allow-hotplug eth1
iface eth1 inet static
      address 63.22.130.187
      netmask 255.255.255.248
      dns-nameservers 8.8.8.8

# eth2
auto eth2
allow-hotplug eth2
iface eth2 inet static
      address 10.101.0.1
      netmask 255.255.0.0
      dns-nameservers 8.8.8.8

答案1

问题出在 POSTROUTING 链中的 -o 语句:

 -A POSTROUTING -o eth0 -j SNAT --to-source 63.22.130.186
 -A POSTROUTING -o eth1 -j SNAT --to-source 63.22.130.187

数据包将被路由到 10.101/16 网络中的主机,因此您需要 -o eth2。

为什么不尝试类似这样的方法呢:

-A PREROUTING -p tcp -m tcp -d 63.22.130.186 --dport 8000 -j DNAT --to-destination 10.101.0.20:3389
-A PREROUTING -p tcp -m tcp -d 63.22.130.187 --dport 3389 -j DNAT --to-destination 10.101.0.79:3389

并将 eth1 的 IP 作为 eth0 的辅助

相关内容