Jump to content
Калькуляторы

tc filter .. match ether или шейпер по маку

Доброго дня!

 

Коллеги, кто-то может проверить такую конструкцию:

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  

тоже не удалось заставить работать.

Share this post


Link to post
Share on other sites

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 by SABRE

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this