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

вопрос по u32 match

Добрый день!

Есть:

1) сеть 192.168.5.0/24

2) роутер с линуксом eth0 - интернет, eth1 - 192.168.5.1

3) куча клиентов в сети 192.168.5.0/24

Нужно ограничивать скорость от клиентов в интернет. Всё вроде бы получилось, но текущие настройки режут и трафик от клиентов к самому роутеру 192.168.5.1

Далее привожу текущий конфиг:

#in root
$TC qdisc add dev ifb0 root handle 1: htb default 300
#out root
$TC qdisc add dev ifb1 root handle 2: htb default 300

#ingress
$TC class add dev ifb0 parent 1: classid 1:1 htb rate 900kbit ceil 901kbit
#egress
$TC class add dev ifb1 parent 2: classid 2:1 htb rate 900kbit ceil 901kbit

#others
$TC class add dev ifb0 parent 1:1 classid 1:300 htb rate 32kbit
$TC class add dev ifb1 parent 2:1 classid 2:300 htb rate 32kbit

$TC qdisc add dev ifb0 parent 1:300 sfq perturb 10
$TC qdisc add dev ifb1 parent 2:300 sfq perturb 10

#2
$TC class add dev ifb0 parent 1:1 classid 1:2 htb rate 64kbit ceil 512kbit
$TC class add dev ifb1 parent 2:1 classid 2:2 htb rate 64kbit ceil 512kbit

$TC qdisc add dev ifb0 parent 1:2 sfq perturb 10
$TC qdisc add dev ifb1 parent 2:2 sfq perturb 10

$TC filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.5.2 flowid 1:2
$TC filter add dev ifb1 protocol ip parent 2:0 prio 1 u32 match ip dst 192.168.5.2 flowid 2:2
#voip
$TC class add dev ifb0 parent 1:1 classid 1:100 htb rate 320kbit ceil 512kbit
$TC class add dev ifb1 parent 2:1 classid 2:100 htb rate 320kbit ceil 512kbit

$TC qdisc add dev ifb0 parent 1:100 sfq perturb 10
$TC qdisc add dev ifb1 parent 2:100 sfq perturb 10

$TC filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.5.100 flowid 1:100
$TC filter add dev ifb1 protocol ip parent 2:0 prio 1 u32 match ip dst 192.168.5.100 flowid 2:100

ifconfig ifb0 up
#ingress redirection
$TC qdisc add dev eth1 ingress
$TC filter add dev eth1 parent ffff: protocol ip prio 1 u32 match u32 0 0 flowid 1: action mirred egress redirect dev ifb0
#egress redirection
$TC qdisc add dev eth1 root handle 2: htb
$TC filter add dev eth1 parent 2: protocol ip prio 1 u32 match u32 0 0 flowid 2: action mirred egress redirect dev ifb1

Вобщем надо каким-то образом переделать фильтр u32 match. Я понимаю как работает данный фильтр. И предполагаю что нужно сделать подобное правило:

трафик с src 192.168.5.0 и dst НЕ 192.168.5.0 отправлять в ifb, остальное мимо. Но вот как это сделать с помощью данного фильтра - не понимаю. Смотрел документацию и не нашёл там возможности задать адрес отрицанием.

Подскажите, каким образом можно решить мою проблему?

Share this post


Link to post
Share on other sites

Видимо и правда нельзя использовать отрицание, ну и фик с ним.

Подскажите, как будет обработан трафик в такой ситуации:

1)есть трафик с src 192.168.5.0\24 и dst 192.168.5.0\24.

2)есть два разных правила, но трафик соотетствует обоим, например :

$TC filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.5.0\24 flowid 1:100
$TC filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.5.0\24 flowid 1:101

Интересует: трафик будет обработан только первым правилом? обоими? как-то ещё?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.