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

PREROUTING различает пакеты INPUT и FORWARD

Я бы хотел сделать iptables REDIRECT правило в NAT PREROUTING цепочка, чтобы перенаправить соединения на порт 80 для перехода на 8080. Но я бы хотел сделать это только для входных пакетов (предназначенных для этой машины), а не для пересылаемых пакетов (предназначенных, например, для Интернета).

Есть ли способ в правилах в PREROUTING цепочка, чтобы отличать пакеты, предназначенные для этой машины, от пакетов, которые пересылаются, и обрабатывать их по-разному?

Было бы идеально сделать это таким образом, чтобы не требовалось перечисление в правилах конкретных интерфейсов или IP-адресов, потому что это менее гибко (например, если интерфейсы или IP-адреса меняются, это более сложно, а затем потребуется обновить iptables. правила).

Я думаю, вы обречены на необходимость вручную перечислять все свои «локальные» IP-адреса. Основываясь на моем прочтении эта схема потока пакетов netfilter, нет разделения входных / пересылаемых пакетов, пока после все цепочки PREROUTING - что имеет смысл, потому что цепочка, в конце концов, называется ПРЕДМАРШРУТИЗАЦИЯ ...

Я только что наткнулся на addrtype модуль, который, кажется, может различать входящие пакеты в зависимости от того, является ли адрес назначения локальным адресом или нет. Таким образом, это можно использовать для различения входных и пересылаемых пакетов.

Например. что-то вроде:

iptables -A PREROUTING -t nat -p tcp --dport 80 -m addrtype --dst-type LOCAL -j REDIRECT --to-port 8080