虚拟机中通过虚拟网卡使用 IPTABLE 进行 PAT

虚拟机中通过虚拟网卡使用 IPTABLE 进行 PAT

我遇到了一个奇怪的问题,但找不到解决办法。首先,这是我的配置;我有一个带有公共 IP 的 ESXI:1.1.1.1,我托管一个虚拟 Ubuntu 服务器,该服务器带有一个 NIC(在我的 esxi 中配置)eth0,公共 IP 为 2.2.2.2,并且我插入了一个虚拟网卡 eth0:0,公共 IP 为 3.3.3.3。这是我的 /etc/network/interfaces:

auto eth0
allow-hotplug eth0
iface eth0 inet static
        address 2.2.2.2
        netmask 255.255.255.255
        broadcast 2.2.2.2
        post-up route add 1.1.1.1 dev eth0
        post-up route add default gw 1.1.1.1
        post-down route del 1.1.1.1 dev eth0
        post-down route del default gw 1.1.1.1

auto eth0:0
allow-hotplug eth0:0
iface eth0:0 inet static
        address 3.3.3.3
        netmask 255.255.255.255
        broadcast 3.3.3.3

到目前为止一切顺利,一切正常。我可以 ping 2.2.2.2 和 3.3.3.3 现在我想将 3.3.3.3:443 重定向到 3.3.3.3:8777

因此我使用 iptables 制作了一个如下的 PAT:

iptables -t nat -A PREROUTING -i eth0:0 -p tcp --dport 443 -j DNAT --to-destination :8777

但当我执行 telnet 3.3.3.3:443 时失败了。所以我试过了

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 7778 -j DNAT --to-destination :22

telnet 2.2.2.2:443 工作正常。所以我猜想它来自我的接口文件中的“添加路由”,但我不确定。

有什么想法吗?谢谢

答案1

解决方案已在这里找到: iptables:IP 别名和端口转发 所以我不能使用 DNAT,例如:

iptables -t nat -A PREROUTING -i eth0:0 -p tcp --dport 443 -j DNAT --to-destination :8777

但重定向:

iptables -t nat -A PREROUTING -i eth0 -d 3.3.3.3 -p tcp --dport 443 -j REDIRECT --to 8777

就是这样!

相关内容