Dark_Angel Опубликовано 8 октября, 2005 · Жалоба Господа, есть задача в раздельном шейпинге на разные сети. Скажем есть локальная и внешняя сети. Так вот необходимо шейпить например адреса 10.0.0.0/8 и 192.168.0.0/16 в одну полосу, а все остальное в другую. К сожалению на роутере который шейпит эти сети находятся на одном интерфейсе, соотв просто зашейпить интерфейс нельзя. Я понял что это можно сделать таким образом: Маркировать пакеты через iptables и потом отлавливая их уже tc filter разкладывать по классам шейпера. Единственная проблема в конкретной реализации. То есть не хватает банального примера комманд для того чтобы понять. То есть как мне марикровать пакеты iptables и как их потом фильтром отлавливать. Возможно существуют и другие способы решить эту задачу - буду рад советам. Заранее спасибо за ваши ответы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
IbZ Опубликовано 10 октября, 2005 · Жалоба Надо смотреть www.netfilter.org www.lartc.org в частности http://lartc.org/howto/lartc.ratelimit.single.html Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dark_Angel Опубликовано 11 октября, 2005 · Жалоба Ссылка которая в часнсти - это банальный шейпинг при помощи tc. Здесь все совершенно ясно и вопрос был не в этом. Вопрос был в том как маркировать пакеты iptables и после этого их фильтрами загонять в классы htb например. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Гость Опубликовано 11 октября, 2005 · Жалоба iptables -t mangle -I OUTPUT -o eth1 -d 194.67.57.50 -p tcp --dport 80 -j MARK --set-mark 10 Ну а потом tc class add dev eth1 parent 1:1 classid 1:10 htb rate 3kbps ceil 3kbps prio 0 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
IbZ Опубликовано 12 октября, 2005 · Жалоба Гость, Я бы добавил /sbin/tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 0 handle 10 fw flowid 1:10 Dark_Angel, не надо ленится, надо вдумчиво изучать доки, разжевывать на форумах это неблагодарное занятие. Вот вам пример куска рабочего скрипта, который сможете адаптировать под себя. iptables -v -t mangle -F MYSHAPER-OUT iptables -v -t mangle -N MYSHAPER-OUT iptables -v -t mangle -I POSTROUTING -o $OUT_DEV -j MYSHAPER-OUT /sbin/tc qdisc del dev $OUT_DEV root /sbin/tc class add dev $OUT_DEV parent 1: classid 1:1 htb rate 10Mbit /sbin/tc qdisc add dev $OUT_DEV root handle 1 htb default 30 r2q 100 /sbin/tc class add dev $OUT_DEV parent 1:1 classid 1:21 htb rate 8kbit ceil 10kbit prio 0 /sbin/tc qdisc add dev $OUT_DEV parent 1:21 handle 21: sfq perturb 10 /sbin/tc filter add dev $OUT_DEV parent 1:0 protocol ip prio 0 handle 21 fw flowid 1:21 /usr/sbin/iptables -v -t mangle -A MYSHAPER-OUT -p all -d $CLIENT_IP -j MARK --set-mark 21 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dark_Angel Опубликовано 13 октября, 2005 · Жалоба 2IbZ: Спасибо большое за подробную инструкцию. Ноу меня вопрос. Вот в последнем примере и класс и хендл который ставится и марк ровняются 21, а если у меня марк будет другой, то мне надо будет везде кроме classid поставить номер марка? И еще: есть ли необходимость создавать второй qdisc на устройство? Или можно обойтись и одним qdisc? Заранее спасибо за ответы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Гость Опубликовано 13 октября, 2005 · Жалоба Вот самый простой способ зажать траффик: Тут у нас xxx.xxx.xx.xxx и xxx.xxx.xx.yy получают цыра 3 k а еира 6 k ipt_cmd -t mangle -I OUTPUT -o eth1 -d xx.xx.xx.xx -j MARK --set-mark 10 ipt_cmd -t mangle -I OUTPUT -o eth1 -d xx.xx.xx.yy -j MARK --set-mark 11 #дисциплина очереди tc qdisc add dev eth1 root handle 1: htb #главный класс tc class add dev eth1 parent 1: classid 1:1 htb rate 6kbps ceil 6kbps #дочерние классы tc class add dev eth1 parent 1:1 classid 1:10 htb rate 3kbps ceil 6kbps prio 0 tc class add dev eth1 parent 1:1 classid 1:11 htb rate 3kbps ceil 6kbps prio 0 #фильтр tc filter add dev eth1 protocol ip handle 10 parent 1:0 prio 0 fw flowid 1:10 tc filter add dev eth1 protocol ip handle 11 parent 1:0 prio 0 fw flowid 1:11 Вот еще почитай: http://lartc.org/howto/lartc.cookbook.ulti...tc.html#AEN2241 http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dark_Angel Опубликовано 14 октября, 2005 · Жалоба Я уже разобрался, handle в фильтре отвечает за то какие марки держать. Спасибо большое за вашу помощь и терпение. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...