1

Вот эта команда:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

Я использую это для перенаправления любого входящего трафика с 80 на 8080 , потому что сервер Apache 2 на этом компьютере работает как непривилегированный пользователь и только root может открывать хорошо известные порты. Он сохраняется в /etc/iptables/rules.v4 и работает, если я открываю веб-сайт на удаленном компьютере. Виртуальный хост связан с 192.168.X.X:8080 .

Однако, если я зайду на этот сервер и открою браузер с активным X11Forwarding, при вводе IP-адреса в адресную строку веб-сайт не откроется, а вместо этого будет время ожидания соединения. Только если я добавлю :8080 к адресу, он работает. Итак, суть в том, что маршрутизация портов не работает при открытии на одном компьютере.

Мой вопрос: как мне нужно изменить или добавить директиву маршрутизации, чтобы она работала и локально?

1 ответ1

1

Причина, по которой это не сработало, заключается в том, что пакеты из локальных источников не прошли этап маршрутизации, поскольку для локальных пакетов маршрутизация не требуется. Следовательно, это правило не применяется. Для маршрутизации пакетов, поступающих из локального источника, необходимо отправить его напрямую в OUTPUT:

iptables -t nat -I OUTPUT -p tcp -o lo --dport 80 -j REDIRECT --to-ports 8080

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .