NAT 转发(整个 IP)仅在某些端口上起作用

NAT 转发(整个 IP)仅在某些端口上起作用

由于我的主机不允许桥接设置,所以我不得不采用 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 的连接,因为预路由规则不适用,并且您的请求不会自动转发。

相关内容