К сожалению, вчера не смог добраться до pf, только что опоробол. Последние новости с полей: Все работает Шейпится траффик нормально. Сильно глубоко не копал, но отпишу сейчас что и как.
1. Шейпить мы можем ТОЛЬКО ИСХОДЯЩИЙ траффик. Что это значит? Чтобы ограничить скорость скорость ЗАКАЧИВАНИЯ (upload) в интернет от пользователя, мы должны ограничивать ВХОДЯЩУЮ скорость от пользователя на ЛОКАЛЬНЫЙ интерфейс шлюза, но очередь создавать на ВНЕШНЕМ интерфейсе шлюза, т.е.
создаем очередь на внешнем интерфейсе
altq on $wan cbq bandwidth 1000Kb queue {low}
queue low bandwidth 50% priority 2 cbq ( default )
далее ловим траффик от нужного пользователя на локальном интерфейсе и применяем к нему очередь
pass in on $lan from 10.0.0.2 to any queue (low) modulate state
2. Далее пилим скорость скачивания (download).
Создаем очередь на ЛОКАЛЬНОМ интерфейсе, потому как мы опять таки пилим скорость ИСХОДЯЩУЮ от шлюза до клиента.
altq on $lan cbq bandwidth 5000Kb queue {llow}
queue llow bandwidth 90% priority 2 cbq ( default )
и создаем правило
pass in on $lan from $lan:network to $lan queue (llow) modulate state
Все это опробовано, скорость замерена на вышестоящем шлюзе. Шейпится нормально. Но тут есть другая проблема: если данный шлюз является не только шлюзом, но еще и, скажем, файлопомойкой, то тут вы столкнетесь с проблемой, а именно: локальный траффик тоже будет шейпится. В моем случае данный вопрос не стоит, но! Решение есть: теггировать траффик. Кому интересно - вот отличная статья