Я бы хотел сделать 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