1 (21.05.2013 19:16:04 отредактировано Sinder)

День добрый.

Дано:
Шлюз на debian
eth0 - инет
eth1 - локалка

Задача:
Пускать локалку в инет, ограничивать ширину канала для определенных адресов и по портам.

Решил использовать shorewall и шейпиг его встроенными средствами. Протестировал шейпинг с такими настройками:

tcdevices

#INTERFACE      IN-BANDWITH     OUT-BANDWIDTH
eth0            6Mbit           6Mbit
eth1            100Mbit         100Mbit

tcclasses

#INTERFACE      MARK    RATE            CEIL            PRIORITY        OPTIONS

eth0        1    2000kbit    full        2        

eth0        255    1000kbit    full        255        default
eth1        255    full        full        255        default

tcrules

#MARK  SOURCE           DEST            PROTOCOL        PORT(S)

1      0.0.0.0/0         0.0.0.0/0     tcp   http,https,8000,8080

На шлюзе из консоли выкачивал файл, но скорость скачки резалась до примерно 1/3 от максимальной скорости. Если закомментировать правила, то по идее должен остаться дефолтный класс для eth0:
eth1        255    full        full        255        default
Никаких других ограничений не будет, однако, скорость скачки все равно 1/3. Нормальная скорость возвращается если стопнуть shorewall.

Подскажите, где я не правильно понимаю шейпинг?

UPD. Так, я действительно не понял сам принцип. Шейпится только исходящий трафик, а я фигню какую-то написал. Пойду читать более вдумчиво.

2

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