У меня странная проблема, и я не могу ее решить. Итак, сначала вот моя конфигурация; У меня есть ESXI с общедоступным IP: 1.1.1.1, я размещаю виртуальный сервер Ubuntu с одной сетевой картой (настроенной в моем esxi) eth0 с общедоступным IP 2.2.2.2, и я подключил виртуальный nic eth0: 0 с общедоступным IP 3.3 .3.3. Вот мой / etc / network / interfaces:
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 2.2.2.2
netmask 255.255.255.255
broadcast 2.2.2.2
post-up route add 1.1.1.1 dev eth0
post-up route add default gw 1.1.1.1
post-down route del 1.1.1.1 dev eth0
post-down route del default gw 1.1.1.1
auto eth0:0
allow-hotplug eth0:0
iface eth0:0 inet static
address 3.3.3.3
netmask 255.255.255.255
broadcast 3.3.3.3
Пока все хорошо, его работа. Я могу пинговать 2.2.2.2 и 3.3.3.3. Теперь я хочу, чтобы 3.3.3.3:443 был перенаправлен на 3.3.3.3:8777.
Итак, я сделал PAT с iptables следующим образом:
iptables -t nat -A PREROUTING -i eth0:0 -p tcp --dport 443 -j DNAT --to-destination :8777
но когда я делаю telnet 3.3.3.3:443, это не удалось. Итак, я попробовал
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 7778 -j DNAT --to-destination :22
И telnet 2.2.2.2:443 нормально работает. Так что я предполагаю, что это происходит из "добавления маршрута" в моих файлах интерфейсов, но я не уверен.
Любые идеи? Спасибо
Решение было найдено здесь: iptables: псевдоним IP и перенаправление портов Поэтому я не должен использовать DNAT, например:
iptables -t nat -A PREROUTING -i eth0:0 -p tcp --dport 443 -j DNAT --to-destination :8777
Но ПЕРЕНАПРАВЛЕНИЕ:
iptables -t nat -A PREROUTING -i eth0 -d 3.3.3.3 -p tcp --dport 443 -j REDIRECT --to 8777
Это оно!