sirmax Posted August 22, 2014 · Report post Доброго дня! Коллеги, кто-то может проверить такую конструкцию: tc filter add \ dev eth0 \ parent 1: \ protocol 802_3 \ pref 10 \ u32 \ match ether src 12:34:56:78:9a:bc \ match u16 0x0806 0xffff at -2 \ action mirred egress mirror dev ifb0 У меня не заработало ни в каком виде (варианты со смещением тоже пробовал) Взял здесь: http://habrahabr.ru/post/138463/ Пробовал на ядре 2.6.32 и на убунте 3.13.0-34-generic При этом конструкция /sbin/tc filter add dev eth0 parent 1: prio 1 protocol ip u32 match u16 0x0800 0xFFFF at -2 match u16 0x${M4}${M5} 0x0000 at -4 match u32 0x${M0}${M1}${M2}${M3} 0x00000000 at -8 action mirred egress redirect dev ifb0 заворачивает весь траффик. M{${I}} - мак адрес разбитый на байты. 0х00 ... для теста, а вот замена на 0xFF... приводит к тому что перестают матчится пакеты. Пример с хабра tc filter add \ dev eth0 \ parent 1: \ protocol 802_3 \ pref 10 \ u32 \ match u32 0x12345678 0xffffffff at -8 \ match u32 0x9abc0000 0xffff0000 at -4 \ match u16 0x0806 0xffff at -2 \ action mirred egress mirror dev ifb0 тоже не удалось заставить работать. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
SABRE Posted August 22, 2014 (edited) · Report post sirmax Эмм.. 802_3 по-моему вообще не работает. 3.11.0-19-generic tcpdump 0x0000: 000b 2b81 bf64 0024 1d75 d3d9 0800 4500 ..+..d.$.u....E. 0x0010: 0033 d64c 4000 4011 506b 0a00 0002 0a00 .3.L@.@.Pk...... 0x0020: 0001 4929 0035 001f bf35 0a28 0100 0001 ..I).5...5.(.... 0x0030: 0000 0000 0000 0279 6102 7275 0000 0100 .......ya.ru.... 0x0040: 01 src-eth 00:24:1d:75:d3:d9 tc qdisc add dev eth0 root handle 1:0 htb default 2 root@main:~# tc class add dev eth0 parent 1:0 classid 1:1 htb rate 10Mbit ceil 10Mbit root@main:~# tc class add dev eth0 parent 1:0 classid 1:2 htb rate 10Mbit ceil 10Mbit root@main:~# tc filter add dev eth0 pref 1 protocol ip handle 800:0:1 u32 ht 800:0 match u32 0xd3d90800 0xffffffff at -4 classid 1:1 action ok Смещение считается от начала L3 пакета. Сразу после Ethernet. protocol указывает для каких l3 пакетов применять фильтр - ip - только IPv4, ipv6 - только для IPv6, all - для всех. root@main:~# tc -s -d class show dev eth0 class htb 1:1 root prio 0 quantum 125000 rate 10000Kbit ceil 10000Kbit burst 1600b/1 mpu 0b overhead 0b cburst 1600b/1 mpu 0b overhead 0b level 0 Sent 910231 bytes 7182 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 7182 borrowed: 0 giants: 0 tokens: 18812 ctokens: 18812 class htb 1:2 root prio 0 quantum 125000 rate 10000Kbit ceil 10000Kbit burst 1600b/1 mpu 0b overhead 0b cburst 1600b/1 mpu 0b overhead 0b level 0 Sent 1786730 bytes 16148 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 16148 borrowed: 0 giants: 0 tokens: 19475 ctokens: 19475 root@main:~# tc -s -d filter show dev eth0 filter parent 1: protocol ip pref 1 u32 filter parent 1: protocol ip pref 1 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 1 u32 fh 800::1 order 1 key ht 800 bkt 0 flowid 1:1 match d3d90800/ffffffff at -4 action order 1: gact action pass random type none pass val 0 index 1 ref 1 bind 1 installed 514 sec used 1 sec Action statistics: Sent 910231 bytes 7182 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 16148 - проскочило до вставки фильтра Edited August 23, 2014 by SABRE Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...