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

Как маркировать входящий через NAT трафик?

 


1

1

Доброго времени суток!

Нужно в iptables промаркировать входящий через NAT трафик, для последующего использования в tc.

Пытаюсь сделать так:

# Set default policies for the INPUT, FORWARD and OUTPUT chains
$IPTABLES -P FORWARD DROP
# FORWARD chain
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
$IPTABLES -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -p ALL -i $LAN_IFACE -m set --match-set whitelist src,src -j fw_allow
$IPTABLES -A FORWARD -p ALL -m set --match-set whitelist dst -j  MARK --set-mark 10
Ничего не получается:
0     0 MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set whitelist dst MARK set 0xa
Расскажите, плз, почему?

Сет whitelist содержит пару ip,mac.

К слову, пытался так же сделать с цепочкой OUTPUT. Тоже никакого эффекта.

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

Пробовал уже. Сейчас специально вернул на

$IPTABLES -A FORWARD -t mangle -p ALL -m set --match-set whitelist dst -j  MARK --set-mark 10
Результат точно такой же
0     0 MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set whitelist dst MARK set 0xa

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

iptables-save фстудию

anonymous
()

Входящий из WAN трафик по NAT приходит весь по
-A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT,
потому вместо -j ACCEPT сделай перенаправление куда нужно.

whoami
()

Нельзя так. Логика iptables в том, перенаправляемые пакеты проходят через цепочку mangle два раза. Тебе нужно сначала замаркировать входящий пакет, потом сделать что-то с ним в цепочке nat, а потом уже перенаправляемый пакет еще раз обработать в цепочке mangle. Только после этого пакеты уходят в FORWARD. Все действия с маркировкой пакетов делаются в mangle. После этого, с маркированными пакетами можно будет работать в цепочке filter.

Что касается списков, то список должен заполняться до правила в цепочке mangle. А именно в nat/PREROUTING/POSTROUTING (тогда ты пропустишь проход через mangle), либо перед правилом маркировки в цепочке mangle (тогда правила сработают дважды, если написаны криво :).

gh0stwizard ★★★★★
()

Сет whitelist содержит пару ip,mac

дык "--match-set whitelist dst " не будет работать. должно быть dst,dst или src,src

делай доп. сет только с ip адресами и проверяй по нему.

И обычно маркировку лучше делать в mangle, а не в filter.

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от whoami

потому вместо -j ACCEPT сделай перенаправление куда нужно.

Попробовал. Результат тот же.

2 gh0stwizard

Логика iptables в том, перенаправляемые пакеты проходят через цепочку mangle два раза...

С этого места поподробней, пожалуйста. Я запутался.

Итак, список заполнен до выполнения любых правил iptables. Правда, может меняться на ходу, на то он и ipset.

Маркировка должна производится до этой команды?

$IPTABLES -t nat -A POSTROUTING -o $PPP0_IFACE -s $LAN_IP_RANGE -j SNAT --to-source $PPP0_IP

Нужно ли ещё раз маркировать после?

2 vel

дык "--match-set whitelist dst " не будет работать. должно быть dst,dst или src,src

Разве, если я делаю просто dst не подставляется только ip? Пакет же из инета приходит, а там понятия не имеют о моих mac-адресах.

fractaler ★★★★★
() автор топика
Ответ на: комментарий от fractaler

дык "--match-set whitelist dst " не будет работать. должно быть dst,dst или src,src

Разве, если я делаю просто dst не подставляется только ip? Пакет же из инета приходит, а там понятия не имеют о моих mac-адресах.

Если сет типа «ip,mac», то параметров должно быть 2. В мане об этом четко сказано. Делай другой сет без мак-ов.

А про следование пакетов по iptables есть замечательная картинка http://inai.de/images/nf-packet-flow.png

Маркируй пакеты в mangle/prerouting и в nat их можно будет использовать.

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

Чёрт возьми, ты прав!
Без дополнительного сета не обойтись :(
Создал новый сет, и с теми же правилами в него сразу пошли пакеты...

Спасибо.

2 ALL:
Всем большое спасибо за помощь! Насчёт mangle я тоже всё исправил как надо. Заодно лучше понял документацию.

fractaler ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.