IPFW. Ограничиваем ширину канала пользователю с помощью pipe
Как часто у нас возникала ситуация когда пользователь в сети загружал весь канал скачиванием какого-либо файла, либо качанием с торрентов. Как умерить аппетит пользователя и дать другим участникам сети возможность работать в интернете с нормальной скоростью? Кстати прочитать про то как посмотреть кто нагружает канал можно здесь: FreeBSD. Как посмотреть кто загружает канал
Либо ситуация когда необходимо поделить канал — например всем обычным пользователям четверть канала на всех, администрации все остальное.
Делать это будем на шлюзе с системой FreeBSD с помощью ipfw используя такой замечательный инструмент как pipe.
Представим что у нас есть пользователь с IP 192.168.0.15, которому нужно ограничить скорость до 512 кбит/c.
Добавляем отдельный канал для пользователя в правила ipfw
ipfw pipe 7 config bw 512Kbit/s
где,
pipe 7 — номер вашего канала, ставите любой незанятый
Посмотреть список pipe в вашем файрволе, можно так : ipfw pipe show
config bw 512Kbit/s — устанавливается пропускная способность канала (можно использовать Mbit/s)
После того как мы создали отдельную трубу (pipe 7) с максимальной пропускной способностью 512кбит/с, добавляем правило, по которому весь трафик к пользователю с ip 192.168.0.15 будет заворачиваться туда
ipfw add pipe 7 ip from any to 192.168.0.15 out
Итого весь трафик для 192.168.0.15 будет проходить через трубу с максимальной пропускной способностью 512Кбит/с.
Полезная заметка. Будет ли работать это в PFSense?
Спасибо, а как сделать ограничение на ширину канала для всех пользователей. но так чтобы скорость у всех была равная?
@Николай
посмотри в сторону масок
mask dst-ip 0xffffffff
Правила pipe ipfw нумеруются от 1 до 65534. Поэтому если у вас имеется правило с номером 65534 (-100), то данный пример (ipfw add pipe 7 ip from any to 192.168.0.15 out) не будет работать, так как не указан номер правила.
Более правильно было бы четко указать номер:
ipfw add _НомерПравила_ pipe 7 ip from any to 192.168.0.15 out