NAT forwarding (весь IP) работает только на некоторых портах

Так как мой хостер не позволяет использовать briged-настройки, мне пришлось искать решение NAT для запуска моей виртуальной машины CentOS на дополнительном IP-адресе и хост-машины на основном IP-адресе.

Теперь у меня проблема, поскольку для портов 22, 80 и 443 это работает, как и ожидалось. Я достиг своего SSH/Apache под CentOS. Но я также запускаю экземпляр DB2 на порту 50000, и я не могу с ним связаться. Соединение отказано каждый раз.

Однако я могу получить доступ к порту с хост-компьютера по внутреннему IP-адресу 192.168.56.2, поэтому нет брандмауэра, блокирующего мой запрос в гостевой системе.

Это настройка:


Хост-машина 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

Есть идеи?


// edit: IP-переадресация включена конечно (net.ipv4.ip_forward=1)

1 ответ

Решаемые. Это не имело ничего общего с моей (правильной) конфигурацией, но с прокси, который я использую для подключения к нестандартным портам. Оказывается, если вы уже находитесь в системе (через прокси-сервер), вам нужно открыть соединение напрямую с виртуальным ip, потому что правила предварительной маршрутизации не применяются, и ваш запрос не будет перенаправлен автоматически.

Другие вопросы по тегам