adron2 Опубликовано 14 октября, 2009 · Жалоба Есть записи вида tc filter add dev eth2 protocol ip parent 1: prio 6 u32 match ip dst xx.73.128.0/20 flowid 1:253 tc filter add dev eth2 protocol ip parent 1: prio 7 u32 match ip dst xx.26.80.0/22 flowid 1:253 Есть два аплинка eth0 и eth1 Нужно каким то образом в правила tc добавить что: если пакет пришел через eth0 к ip dst xx.73.128.0/20 то flowid 1:253 если пакет пришел через eth1 к ip dst xx.73.128.0/20 то flowid 1:1000 Как это сделать без помощи iptables -t mangle ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 14 октября, 2009 · Жалоба adron2 а почему mangle не устраивает? там же, по сути, только одно правило - выставить MARK для одного из двух интерфейсов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adron2 Опубликовано 14 октября, 2009 · Жалоба adron2 а почему mangle не устраивает? там же, по сути, только одно правило - выставить MARK для одного из двух интерфейсов. страшно за производительность. Через этот роутер 800 мегабит бегает и по 150 000 pps. Реально в мангле будет где то 10 правил всего. Не более. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adron2 Опубликовано 14 октября, 2009 (изменено) · Жалоба пока сделал так. Создал два класса 1:11 и 1:12 В них все нужные подклассы и классификаторы трафика на на базе u32 А в классы 1:11 и 1:12 tc filter add dev eth2 parent 1: protocol ip handle 0x555 fw prio 1 flowid 1:11 tc filter add dev eth2 parent 1: protocol ip handle 0x777 fw prio 1 flowid 1:12 Ну и соответственно iptables -t mangle -A FORWARD -i eth1 -o eth2.+ -j MARK --set-mark 0x555 iptables -t mangle -A FORWARD -i eth0 -o eth2.+ -j MARK --set-mark 0x777 То есть обошлись всего двумя правилами в mangle. Но все равно лишние модули iptable_mangle, xt_MARK загружаются. Вопрос с гуру ядер линукса. На сколько такие вот действия критичны для производительности системы? Ядро стоит 2.6.30 Изменено 14 октября, 2009 пользователем adron2 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 14 октября, 2009 · Жалоба adron2 Я приблизительно такое имел ввиду: tc filter add ... u32 ht ... match ip dst a.b.c.d/e match mark 0x555 0xffffffff flowid 1:253 tc filter add ... u32 ht ... match ip dst a.b.c.d/e flowid 1:1000 iptables -t mangle -A FORWARD -i eth1 -o eth2.+ -j MARK --set-mark 0x555 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 14 октября, 2009 (изменено) · Жалоба Для таких целей подойдет классификатор route: http://lartc.org/howto/lartc.adv-filter.route.html Изменено 14 октября, 2009 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adron2 Опубликовано 14 октября, 2009 · Жалоба Для таких целей подойдет классификатор route: http://lartc.org/howto/lartc.adv-filter.route.html не получится так. Маршруты добавляются зеброй динамически. Можно конечно пропатчить квагу и метить реалмом пекеты но оно все такое нестабильное. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 15 октября, 2009 (изменено) · Жалоба Можно делать не -j MARK, а -j CLASSIFY --set-class 1:11, тогда не нужно будет фильтры tc создавать. Не знаю, будет ли это эффективнее обычной маркировки. Изменено 15 октября, 2009 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...