LINUX.ORG.RU
ФорумAdmin

Опять шейпинг трафика


0

2

Привет всем! Случайно нажал ctrl+enter. Проблема такая. Имеем следующую конфигурацию: Linux - сервер с двумя сетевыми платами: eth0 - внутренняя сеть, eth1 - провайдер. Задача: ограничить входящзий и исходящий трафик. Насколько я знаю, то мы можем ограничивать только исходящий трафик без использования ifb устройств.

Делаем: /sbin/tc qdisc add dev eth0 root handle 1: htb default 900 /sbin/tc class add dev eth0 parent 1: classid 1:1 htb rate 100Mbit burst 15k /sbin/tc class add dev eth0 parent 1:1 classid 1:100 htb rate 2Mbit burst 15k /sbin/tc class add dev eth0 parent 1:1 classid 1:200 htb rate 512Kbit burst 15k #tc class add dev eth0 parent 1:1 classid 1:900 htb rate 128kbit burst 15k /sbin/tc class add dev eth0 parent 1:200 classid 1:201 htb rate 1Mbit ceil 2Mbit /sbin/tc filter add dev eth0 protocol ip parent 1: u32 match ip src 192.168.10.20 flowid 1:201

Тем самым пытаясь ограничить исходящий от пользователей из локальной сети трафик, но он не ограничивается, без поднятия устройства ifb и редиректа всего трафика на него, но при такой конфигурации, при изменении фильтра на dst 192.168.10.20 отлично ограничивается входящий трафик.

Вопрос: Я чего-то не понимаю? или смотрб не с той стороны на интерфейс?



Последнее исправление: BusTeR (всего исправлений: 1)

Да что ж такое....при редактировании не было user line breaks......

/sbin/tc qdisc add dev eth0 root handle 1: htb default 900
/sbin/tc class add dev eth0 parent 1: classid 1:1 htb rate 100Mbit burst 15k
/sbin/tc class add dev eth0 parent 1:1 classid 1:10 htb rate 50Mbit ceil 80Mbit burst 15k
/sbin/tc class add dev eth0 parent 1:1 classid 1:100 htb rate 2Mbit burst 15k
/sbin/tc class add dev eth0 parent 1:1 classid 1:200 htb rate 512Kbit burst 15k
#tc class add dev eth0 parent 1:1 classid 1:900 htb rate 128kbit burst 15k
/sbin/tc class add dev eth0 parent 1:200 classid 1:201 htb rate 1Mbit ceil 2Mbit
/sbin/tc filter add dev eth0 protocol ip parent 1: u32 match ip src 192.168.10.20 flowid 1:201

BusTeR
() автор топика
Ответ на: комментарий от cac2s

Повесил на eth1.

/sbin/tc qdisc add dev eth1 root handle 1: htb default 900
/sbin/tc class add dev eth1 parent 1: classid 1:1 htb rate 100Mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:10 htb rate 50Mbit ceil 80Mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:100 htb rate 2Mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:200 htb rate 512Kbit burst 15k
/sbin/tc class add dev eth1 parent 1:200 classid 1:201 htb rate 256Kbit ceil 512Kbit
/sbin/tc filter add dev eth1 protocol ip parent 1: u32 match ip src 192.168.10.20 flowid 1:201

Не сработало.

BusTeR
() автор топика
Ответ на: комментарий от cac2s

Проблема только в отсутстувии редиректа egress трафика на ifb0 и шейпирования его там.

В такой конфигурации всё заработало.

#!/bin/bash
/sbin/tc qdisc add dev eth0 ingress
/sbin/tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0

/sbin/tc qdisc add dev ifb0 root handle 1: htb default 900
/sbin/tc class add dev ifb0 parent 1: classid 1:1 htb rate 100Mbit burst 15k
/sbin/tc class add dev ifb0 parent 1:1 classid 1:10 htb rate 50Mbit ceil 80Mbit burst 15k
/sbin/tc class add dev ifb0 parent 1:1 classid 1:100 htb rate 2Mbit burst 15k
/sbin/tc class add dev ifb0 parent 1:1 classid 1:200 htb rate 512Kbit burst 15k
/sbin/tc class add dev ifb0 parent 1:200 classid 1:201 htb rate 256Kbit ceil 512Kbit
/sbin/tc filter add dev ifb0 protocol ip parent 1: u32 match ip src 192.168.10.20 flowid 1:201

BusTeR
() автор топика
Ответ на: комментарий от BusTeR

Я так понял, что если посмотреть с другой стороны - то исходящий трафик - это трафик из мира к пользователю локальной сети, а входящий - это трафик от пользователя в мир.
А т.к. мы может только ограничивать скорость исходящего трафика - вот и используем ifb.

BusTeR
() автор топика
Ответ на: комментарий от cac2s

чё-то у меня сегодня день тупизма... :) для начала попробуй создать одну корневую дисциплину. на неё повесить один класс и один фильтр и посмотри попадают ли в этот класс пакеты (tc -s -d class show dev eth1)

cac2s
()
Ответ на: комментарий от BusTeR

я не вижу смысла на данном этапе использовать ifb. должно работать и с физ.-устройствами.

cac2s
()
Ответ на: комментарий от BusTeR

делайте c ifb.

правило типа:

/sbin/tc filter add dev eth1 protocol ip parent 1: u32 match ip src 192.168.10.20 flowid 1:201

не будет работать, ибо шейпер на интерфейсе eth1 будет работать «после» ната - он оперирует с очередью на интерфейсе. Соответственно пакетов с src=192.168.10.20 там просто не будет. Никаких проблем с ифб в плане производительности не будет.

ventilator ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.