Megas Posted March 29, 2012 Кусок кода, пытаюсь найти почему он не работает. Может кто ткнет где ошибка? уже пару дней кручу и не соображу, кучу доки прокурил. # Удаляем все обработчики на интерфейсе /sbin/tc qdisc del dev eth1 root 2>/dev/null /sbin/tc qdisc del dev eth1 ingress 2>/dev/null /sbin/tc qdisc del dev ifb0 root 2>/dev/null /sbin/tc qdisc del dev ifb0 ingress 2>/dev/null $tc qdisc add dev eth1 root handle 1: htb default 1024 $tc class add dev eth1 parent 1:0 classid 1:1 htb rate 100Mbit $tc class add dev eth1 parent 1:1 classid 1:10 htb rate 20Mbit $tc filter add dev eth1 parent 1:0 protocol ip u32 #Создаем 4 хеш таблицы для каждого октета $tc filter add dev eth1 parent 1:0 handle 101: protocol ip u32 divisor 256 $tc filter add dev eth1 parent 1:0 handle 102: protocol ip u32 divisor 256 $tc filter add dev eth1 parent 1:0 handle 103: protocol ip u32 divisor 256 #Создаем фильтр направлящий весь трафик в хеш таблицу с ID 10 $tc filter add dev eth1 parent 1:0 protocol ip u32 ht 800:: match ip dst 0.0.0.0/0 hashkey mask 0xff000000 at 16 link 101: #Добавляем правило в 10 хеш таблицу, если первый октет равен 192, то оправляем пакет в 11 хеш таблицу $tc filter add dev eth1 parent 1:0 protocol ip u32 ht 101:c0: match ip dst 192.0.0.0/8 hashkey mask 0xff0000 at 16 link 102: #Добавляем правило в 11 хеш таблицу, если второй октет равен 168, то оправляем пакет в 12 хеш таблицу $tc filter add dev eth1 parent 1:0 protocol ip u32 ht 102:a8: match ip dst 192.168.0.0/16 hashkey mask 0xff00 at 16 link 103: # Добавляем для подсетей $tc filter add dev eth1 parent 1:0 handle 104: protocol ip u32 divisor 256 $tc filter add dev eth1 protocol ip parent 1:0 u32 ht 103:5: match ip dst 192.168.5.0/24 hashkey mask 0xff at 12 link 104: $tc filter add dev eth1 parent 1:1 protocol ip u32 ht 104:81: match ip dst 192.168.5.129/32 flowid 1:2 root@gateway:/shaper_htb_hash/old# tc -p -s filter show dev eth1 filter parent 1: protocol ip pref 49143 u32 filter parent 1: protocol ip pref 49143 u32 fh 105: ht divisor 1 filter parent 1: protocol ip pref 49143 u32 fh 809: ht divisor 1 filter parent 1: protocol ip pref 49144 u32 filter parent 1: protocol ip pref 49144 u32 fh 808: ht divisor 1 filter parent 1: protocol ip pref 49145 u32 filter parent 1: protocol ip pref 49145 u32 fh 104: ht divisor 256 filter parent 1: protocol ip pref 49145 u32 fh 807: ht divisor 1 filter parent 1: protocol ip pref 49146 u32 filter parent 1: protocol ip pref 49146 u32 fh 806: ht divisor 1 filter parent 1: protocol ip pref 49147 u32 filter parent 1: protocol ip pref 49147 u32 fh 805: ht divisor 1 filter parent 1: protocol ip pref 49148 u32 filter parent 1: protocol ip pref 49148 u32 fh 804: ht divisor 1 filter parent 1: protocol ip pref 49149 u32 filter parent 1: protocol ip pref 49149 u32 fh 103: ht divisor 256 filter parent 1: protocol ip pref 49149 u32 fh 103:5:800 order 2048 key ht 103 bkt 5 link 104: (rule hit 58 success 0) match IP dst 192.168.5.0/24 (success 58 ) hash mask 000000ff at 12 filter parent 1: protocol ip pref 49149 u32 fh 803: ht divisor 1 filter parent 1: protocol ip pref 49150 u32 filter parent 1: protocol ip pref 49150 u32 fh 102: ht divisor 256 filter parent 1: protocol ip pref 49150 u32 fh 102:a8:800 order 2048 key ht 102 bkt a8 link 103: (rule hit 4163 success 0) match IP dst 192.168.0.0/16 (success 4163 ) hash mask 0000ff00 at 16 filter parent 1: protocol ip pref 49150 u32 fh 802: ht divisor 1 filter parent 1: protocol ip pref 49151 u32 filter parent 1: protocol ip pref 49151 u32 fh 101: ht divisor 256 filter parent 1: protocol ip pref 49151 u32 fh 104:81:800 order 2048 key ht 101 bkt 81 flowid 1:2 (rule hit 0 success 0) match IP dst 192.168.5.129/32 (success 0 ) filter parent 1: protocol ip pref 49151 u32 fh 101:c0:800 order 2048 key ht 101 bkt c0 link 102: (rule hit 4165 success 0) match IP dst 192.0.0.0/8 (success 4165 ) hash mask 00ff0000 at 16 filter parent 1: protocol ip pref 49151 u32 fh 801: ht divisor 1 filter parent 1: protocol ip pref 49152 u32 filter parent 1: protocol ip pref 49152 u32 fh 80a: ht divisor 1 filter parent 1: protocol ip pref 49152 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 49152 u32 fh 800::800 order 2048 key ht 800 bkt 0 link 101: (rule hit 4168 success 0) match IP dst 0.0.0.0/0 (success 4168 ) hash mask ff000000 at 16 root@gateway:/shaper_htb_hash/old# смущает вот это: filter parent 1: protocol ip pref 49151 u32 fh 104:81:800 order 2048 key ht 101 bkt 81 flowid 1:2 (rule hit 0 success 0) match IP dst 192.168.5.129/32 (success 0 ) Но это мой ip компа предприятия, гоняется трафик. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Megas Posted March 29, 2012 (edited) Проблема оказалась в at 12 — смещение от начала, по которому находится начало блока данных. Если этот параметр не указан, то смещение считается равным нулю. В самом начале работы фильтра нулевая граница считается началом заголовка сетевого уровня, например IPv4. Возможны и отрицательные смещения. Но вопрос. А как правильно должно задавать смещение или как оно вычисляется? Edited March 29, 2012 by Megas Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
kayot Posted March 29, 2012 (edited) Для входящего интерфейса с фильтрами по dst - смещение 16, для исходящего с src - 12. Это адрес нужных байт в пакете. А у вас все в перемешку, потому и не работает. Edited March 30, 2012 by kayot Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
taf_321 Posted March 30, 2012 ... filter ... ip src ... at 12 ... ... filter ... ip dst ... at 16 ... У вас там для dst смещения и 12 и 16. Вы уж определитесь, вы туда, или сюда фильтруете? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vitalyb Posted March 30, 2012 Megas http://ru.wikipedia.org/wiki/IP#.D0.92.D0.B5.D1.80.D1.81.D0.B8.D1.8F_4_.28IPv4.29 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pavel.odintsov Posted October 28, 2014 vitalyb, taf_321 огромное спасибо :) Сори за некропостинг :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...