LINUX.ORG.RU
ФорумAdmin

проблема с IMQ


0

0

Решил воспользоваться дисциплиной IMQ на рутере:
пакеты из внутренней сети eth1 (192.168.1.0/24) snat'ятся на внешний интерфейс маршрутизатора ppp0 (10.10.56.2).
Создал классы.
iptables -t mangle -A PREROUTING -i ppp0 -j IMQ --todev 0 - чтобы ловить все входящие на сервере.
tc filter add dev imq0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.0/24 flowid 1:10 собственно сам фильтр.
В итоге, ни один пакет не попадает в класс 1:10, а падают в дефолтовый 1:20. Если добавить правило iptables для цепочки -t mangle -A FORWARD то пакеты в класс падают и шейпятся нормально. Посмотрел еще раз на таблицу прохождения пакетов в iptables, приходящий пакет в любом случае попадает сначала в -t mangle PREROUTING и заворачитваться шейпером просто обязан. Где косяк? Как быть?

anonymous

> Где косяк?

У тебя в правиле "iptables -t mangle -A PREROUTING -i ppp0 ..." для всех пакетов ip dst = ip интерфейса ppp0.

> Как быть?

Делать в построутинге - т. е. "iptables -t mangle -A POUSTROUTING -o eth0 ..."

Хотя я и не вижу смысла использовать imq в данном случае - интерфейс eth0 то один.

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

А почему -o eth0, ведь мне надо ingress трафик шейпить, то бишь входящий, и не просто входящий транзитный, а весь (INPUT Тоже).

anonymous
()

В этом случае нужно смотреть схему не только для iptables, а более полную: http://www.docum.org/docum.org/kptd/
Здесь как раз и видно, что в IMQ пакеты попадают на входе и на выходе, причем, если вы их определили туда в mangle PREROUTING, значит попадут на входе, и согласно схеме - до nat-а, т.е. ваш внешний адрес пока еще будет не раз-nat-чен в локальный, о чем anonymous (06.06.2006 10:45:49) вам и сказал.

В дополнение могу сказать, что для IMQ есть патч, который позволяет видеть "NATed packets": http://www.linuximq.net/patchs/imq-nat.diff
(см. http://www.linuximq.net/patches.html)
Сам его не использовал (не было надобности), но люди говорят работает.

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

Еще как я понял, в 2.6 ядрах такое можно реализовать без патча, достаточно поменять IMQ behavior в конфигурации. Только вот на что менять в моем случае?

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

Как на что ? В patch-е ж написано - на imq.c.

На счет "IMQ behavior" думаю вам подойдет пункт 2:
PREROUTING - After NAT
POSTROUTING - Before NAT

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