Назад | Перейти на главную страницу

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

Поскольку мой хостер не допускает дополнительных настроек, мне пришлось использовать решение 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

Любые идеи?


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

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