大家好 :) 我有两台虚拟机 KVM。我为 eth0 做了两个别名 - eth0:0 和 eth0:1,并将它们放在外部 IP 上(eth0:0 - 89.114.122.3,eth0:1 - 89.114.122.4)。现在的问题是:从 IP 89.114.122.3 和 89.114.122.4 IP 重定向到为 dhcp 获取的虚拟机的虚拟内部地址(virbr0 桥接器)...我喜欢这样:
主机地址=89.114.122.3
主机端口=23
访客 IP 地址=192.168.122.86
Guest_port=23
iptables -t nat -A PREROUTING -p tcp -d ${Host_address} --dport ${Host_port} -j DNAT \ --to ${Guest_ipaddr}:${Guest_port}
iptables -I FORWARD -d ${Guest_ipaddr}/32 -p tcp -m state --state NEW \ -m tcp --dport ${Guest_port} -j ACCEPT
根据手动脚本:http://wiki.libvirt.org/page/Networking#NAT_forwarding_.28aka_.22virtual_networks.22.29
从 WAN 来看我的虚拟机看起来不错,但如果我在虚拟机会话中执行此操作:
deploy@bothunter:~$ telnet domain.in 23 尝试 89.114.122.3... 连接超时
怎么了?
答案1
好吧,我明白了,哪里出了问题:我有一条路由:89.114.150.3 (eth0:0)->192.168.122.1(virbr0)->192.168.122.5(vint0)。我在 iptables 中重写了我的路由,如下所示:
iptables -t nat -A PREROUTING -p tcp -d 89.114.150.3 --dport 80 -j DNAT --到 192.168.122.1:80 iptables -t nat -A PREROUTING -p
tcp -d 192.168.122.1 --dport 80 -j DNAT --到 192.168.122.5:80
iptables -I FORWARD -d 192.168.122.5/32 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp -s 192.168.122.5 --sport 80 -j SNAT --到源 192.168.122.1 iptables -t nat -A POSTROUTING -p tcp -s 192.168.122.1 --sport 80 -j SNAT --到源 89.114.150.3
但我遇到了新问题——这也不起作用...为什么?