PDA

Bekijk de volledige versie : "OUTPUT -j CONNMARK --restore-mark" почему у них это работает?



leniviy
13-02-2010, 20:04
В нашей прошивке действие CONNMARK вроде бы отстутствует. Но если отвлечься.
Вот эта конструкция (есть на многих сайтах) для того, чтобы маршрутизировать локальные исходящие пакеты по маркировке соединения?


iptables -t mangle -A OUTPUT <тут всякие фильтры> -m state --state NEW -j CONNMARK --set-mark 1

iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
...
ip rule add fwmark 1 table ...


Как это работает? Цепочка OUTPUT и соответственно restore-mark происходит после маршрутизации, разве нет?

Есть fwmark в таблице, и есть fwmark пакета.
ip rule смотрит на fwmark пакета.
Как ip rule узнаёт о маркировке соединения?

al37919
13-02-2010, 20:19
ИМХО имеет смысл как минимум конкретизировать понятие "наша прошивка"

leniviy
13-02-2010, 20:42
wl500gP, 1.9.2.7-9


[admin@router sbin]$ iptables -t mangle -A OUT_CONN -j CONNMARK --save-mark
iptables: No chain/target/match by that name

leniviy
13-02-2010, 22:16
странно: я добавил такое правило роутинга на линуксе 2.6

Пока пакет находится в цепочке "mangle INPUT" , он привязан к eth0

Но когда тот же пакет попадает в "nat POSTROUTING", он уже привязан к eth1

Значит пакет роутится дважды! Сначала перед INPUT (при этом ему назначается обратный адрес), затем между INPUT и POSTROUTING