LINUX.ORG.RU
решено ФорумAdmin

Как с помощью iptables сделать перенаправление трафика на localhost?

 ,


0

1

Система Debian 9 x64

Вот Prerouting правила:

Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL
2    DNAT       tcp  --  anywhere             anywhere             tcp dpt:2222 to:10.0.3.170:22
3    DNAT       tcp  --  anywhere             anywhere             tcp dpts:1024:65535 to:10.0.3.170
4    DNAT       tcp  --  anywhere             anywhere             tcp dpt:domain to:10.0.3.170:53



Соответственно все соединения на непривилегированные порты отправляются в lxc комтейнер.
Нужно сделать исключения для пары портов.
Делаю так:
iptables -t nat -A PREROUTING -i enp2s0 -p tcp --dport 9000 -j DNAT --to 127.0.0.1:9000


и не работает (поднятый веб-сервер на 9000 порту недоступен)

роутинг на локалхост разрешил
sysctl -w net.ipv4.conf.enp2s0.route_localnet=1


Что я делаю не так?

★★★★★
Ответ на: комментарий от anonymous

попробовал - не работает

sysctl -w net.ipv4.conf.all.route_localnet=1
iptables -t nat -A PREROUTING -i enp2s0 -p tcp --dport 9000 -j REDIRECT --to-port 9000

Qwentor ★★★★★
() автор топика

В цепочке PREROUTING правила заворота в цепочку DOCKER стоит первым. Вы своё правило добавляете в цепочку PREROUTING последним. Почему оно должно выполняться?

Mike_RM
()
Ответ на: комментарий от Mike_RM

О, спасибо!
Сделал

iptables -t nat -I PREROUTING -i enp2s0 -p tcp --dport 9000 -j DNAT --to 127.0.0.1:9000

и заработало

Я думал почему-то, что наоборот порядок, сверху вниз

Qwentor ★★★★★
() автор топика
Последнее исправление: Qwentor (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.