由于我的主机不允许桥接设置,所以我不得不采用 NAT 解决方案,以在附加 IP 上运行我的 CentOS VM,并在主 IP 上运行我的主机。
现在,我遇到了一个问题,因为对于端口 22、80 和 443,这可以按预期工作。我在 CentOS 下访问了我的 SSH/Apache。但我还在端口 50000 上运行了一个 DB2 实例,而这个实例我无法访问。每次都拒绝连接。
但是,我可以使用内部 192.168.56.2 IP 从主机访问该端口,因此客户系统上没有防火墙阻止我的请求。
设置如下:
Ubuntu 12.04 主机:
ifconfig -a
eth0 Link encap:Ethernet HWaddr censored
inet addr:85.25.PRIMARY.IP Bcast:85.25.NETWORK.SEGMENT Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth0:1 Link encap:Ethernet HWaddr censored
inet addr:85.25.SECONDARY.IP Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
vboxnet0 Link encap:Ethernet HWaddr 0a:00:27:00:00:00
inet addr:192.168.56.1 Bcast:192.168.56.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -d 85.25.SECONDARY.IP/32 -i eth0 -j DNAT --to-destination 192.168.56.2
-A PREROUTING -d 85.25.SECONDARY.IP/32 -i eth0 -j DNAT --to-destination 192.168.56.2
-A POSTROUTING -s 192.168.56.2/32 -o eth0 -j SNAT --to-source 85.25.SECONDARY.IP
-A POSTROUTING -s 192.168.56.2/32 -o eth0 -j SNAT --to-source 85.25.SECONDARY.IP
在客户机(CentOS 6.6)上:
ifconfig -a
eth0 Link encap:Ethernet HWaddr 08:00:27:D6:D5:4B
inet addr:192.168.56.2 Bcast:192.168.56.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth0:1 Link encap:Ethernet HWaddr 08:00:27:D6:D5:4B
inet addr:85.25.SECONDARY.IP Bcast:85.25.SECONDARY.IP Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
iptables -t nat -S
-P PREROUTING ACCEPT
-P POSTROUTING ACCEPT
-P OUTPUT ACCEPT
有任何想法吗?
//编辑:当然启用了 IP 转发 ( net.ipv4.ip_forward=1
)
答案1
已解决。这与我的(正确)配置无关,但与我用于连接非标准端口的代理有关。事实证明,如果您已经在系统上(通过代理),则需要直接打开与虚拟 IP 的连接,因为预路由规则不适用,并且您的请求不会自动转发。