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

iptables для локальных подключений

На «сервере A» у меня есть служба, работающая на порту 1445. «Сервер B» может подключаться к «серверу A» через порт 445 с помощью следующего правила:

iptables -t nat -A PREROUTING -d www.kunde.de -p tcp -m tcp --dport 445 -j REDIRECT --to-ports 1445

Это не работает для подключений, инициированных на «сервере A», т.е. локальных подключений. Что я могу сделать?

iptables -t nat -A OUTPUT -d www.kunde.de -p tcp -m tcp --dport 445 -j REDIRECT --to-ports 1445

Потому что пакеты, отправленные локально, проходят через ВЫХОД, а не через PREROUTING.

если вы используете lxc или другую технологию виртуализации, вы перенаправляете весь трафик с порта 445 на порт 1455 контейнера.

Локальный запрос на сервере A не пройдет PREROUTING. Причина уже упоминалась ранее. Локальный трафик не получит доступа nat table, но если вы раньше использовали DNAT, он работает только для внешнего трафика на сервер A, REDIRECT работает только для переадресации порта, его нельзя использовать как DNAT

Вам лучше прочитать некоторые руководства и документы.

В любом случае краткое описание цепочек:

* “PREROUTING”: Packets will enter this chain before a routing decision is made.
* “INPUT”: Packet is going to be locally delivered. (N.B.: It does not have anything to do with processes having a socket open. Local delivery is controlled by the “local-delivery” routing table: `ip route show table local`.)
* “FORWARD”: All packets that have been routed and were not for local delivery will traverse this chain.
* “OUTPUT”: Packets sent from the machine itself will be visiting this chain.
* “POSTROUTING”: Routing decision has been made. Packets enter this chain just before handing them off to the hardware.

И посмотрите сюда:

Поток пакетов Netfilter

Википедия