我已经看过一些关于此问题的帖子,但没有一个完全符合我的情况。我有以下设置:具有公共 IP 地址 1.1.1.1(eth0)的 VM。此计算机还具有私有接口。私有 IP 地址为 2.2.2.2,eth1。在同一台 VMware 计算机上,我有另一台 VM,它只有一个具有私有 IP 地址的私有接口(ip 2.2.2.3,eth0)。我希望通过该私有接口 VMware 计算机访问互联网。该计算机还在端口上设置了 RDP,我有以下适用于远程连接的规则,但该计算机上的公共流量不起作用。RDP 会话在端口 1337 上。
iptables -I FORWARD -m comment --comment "Accept to forward rdp return traffic" -s 2.2.2.3 -m tcp -p tcp --sport 1337 -j ACCEPT
iptables -t nat -I PREROUTING -m tcp -p tcp --dport 1337 -m comment --comment "redirect pkts to virtual machine" -j DNAT --to-destination 2.2.2.3:1337
iptables -I FORWARD -d PUBLIC.IP.1.1.1.1 -m comment --comment "Accept to forward rdp traffic" -m tcp -p tcp --dport 1337 -j ACCEPT
iptables -t nat -I POSTROUTING -m comment --comment "NAT the src ip" -d 2.2.2.3 -o eth1 -j MASQUERADE
提前致谢!
答案1
我设法自己解决了这个问题。这是我的解决方案,以防有人遇到同样的问题:
iptables -t nat -A POSTROUTING --out-interface eth0 -j MASQUERADE
iptables -A FORWARD --in-interface eth1 -j ACCEPT 2.2.2.3:1337
iptables -t nat -A PREROUTING -p udp -d PUBLICIP --dport 1337 -j DNAT --to 2.2.2.3:1337
iptables -A FORWARD -d 2.2.2.3 -p tcp -m tcp --dport 1337 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT