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

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