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

Переадресация портов, iptables apt-get не работает

Сейчас я настраиваю свой сервер. я использую proxmox который похож на vmware. Важно знать, что у меня только 1 внешний IP-адрес. На моем сервере я перенаправляю порт 80 и 443 на виртуальный хост apache используя эту команду:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 10.0.43.113
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to 10.0.43.113

Моя сеть также связана с:

iptables -t nat -D POSTROUTING -s '10.0.43.0/24' -o eth0 -j MASQUERADE

Теперь проблема в том, что если я перенаправляю порт 80 и 443 таким образом, apt-get выдает ошибку 404, когда я использую его с виртуальной машины (за моими воротами).

Как я могу перенаправить порт на мою виртуальную машину, если все еще работает apt-get? Что я делаю не так ?

Спасибо,

Можете ли вы проверить (с помощью tcpdump), что происходит на веб-сервере? Я предполагаю, что такое правило отсутствует (при условии, что eth1 - ваш внутренний интерфейс):

iptables -t nat -A PREROUTING -i eth1 -o eth1 -j SNAT --to $INTERNAL_GATEWAY_IP

Без этого клиент пытается подключиться к 1.2.3.4, шлюз отклоняет пакет на 10.0.43.113, веб-сервер видит соединение от клиента (например, 10.0.43.112), таким образом, отправляет свой ответ на 10.0.43.112, а клиент отправляет на 1.2.3.4 и получение ответа от 10.0.43.113 просто идет «WTF?» ... Но с SNAT веб-сервер отвечает шлюзу, шлюз перезаписывает и исходный, и целевой адрес, и все счастливы.

Вы перенаправляете ВСЕ пакеты на порт 80 и 443 гостю, включая его собственные пакеты. Добавить

-i eth0 

условие к вашим правилам DNAT.