3

Я использую сервер Ubuntu 16

Я пытаюсь использовать iptables для переадресации порта с определенного сетевого адаптера и порта на определенный порт на lo/127.0.0.1. Это похоже на правильный инструмент.

В качестве примера, давайте представим, что я хочу, чтобы адаптер ens192 перенаправлял входящий трафик через порт 8443 на 127.0.0.1:443. Я не хочу, чтобы 443 ens192 достиг 127.0.0.1:443 ... он должен казаться закрытым.

Я сделал следующие вызовы (как sudo su, для удобства) при новой установке:

# sysctl -w net.ipv4.ip_forward=1  # permits port-forwarding
# sysctl -w net.ipv4.conf.ens192.route_localnet=1  # permits routing adapter 2 localhost
# iptables -P INPUT DROP
# iptables -t nat -A PREROUTING -i ens192 -p tcp --dport 8443 -j DNAT \
--to-destination 127.0.0.1:443
# iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE

Однако это не работает ... переход к [ip]:8443 не дает желаемых результатов ... время ожидания браузера истекло.

Я проверил, что сервер работает правильно на желаемом порту.

Я предполагаю, что TCP-запрос браузера изменяется на сервере и выглядит так, как будто он связывается с 127.0.0.1:443. Затем, при ответе, IP-адрес преобразуется обратно в адрес / порт ens192, а не уходит. Или нет?

1 ответ1

0

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

iptables -A INPUT -m conntrack --ctstate DNAT -j ACCEPT

Посмотрите, если это правило делает то, что вы хотите. Если это все еще не работает, попробуйте временно изменить политику цепочки INPUT на ACCEPT, просто чтобы выяснить, является ли проблема с брандмауэром или нет.

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