Показать сообщение отдельно
Старый 27.06.2006, 21:21   #2
unn
Неактивный пользователь
 
Регистрация: 22.01.2006
Сообщений: 4
Репутация: 7
По умолчанию Re: Help! Ограничение траффика во FreeBSD 4.1

Чтобы этим управлять надо понимать чем конкретно реализуются эти функции - [Для просмотра ссылок требуется регистрация. Зарегистрироваться...] - хэндбук на русском - там все основные (начальные сведения) по FreeBSD.

Управлять в данном случае придется фаерволом. Фаервол во FreeBSD 4.x это команда ipfw ( man ipfw - мануал по использованию этого самого фаервола ). Но ipfw не единственный фаервол в 4.x - man ipf - еще один мануал по еще одному фаерволу. Кроме того для 4.x одно время существовал порт фаервола pf с OpenBSD.

Основным фаерволом в FreeBSD является ipfw. На его примере я и опишу как сделать необходимые ограничения.

Предпологается что ядро скомпилированно с поддержкой ipfw и dummynet - шейпер трафика в FreeBSD ( т.е. в dmesg присутствуют такие или подобные строки - DUMMYNET initialized (011031) и ipfw2 initialized, divert enabled, rule-based forwarding enabled, default to accept, logging limited to 100 packets/entry by default ). Проверить используется ли в данный момент ipfw можно введя в рутовой консоли ipfw show - на экран будет выведен список правил фаервола.

К примеру:
root@gw:~$ ipfw show
00100 296 38628 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
65500 917677 331261458 allow ip from any to any
65535 0 0 allow ip from any to any

Чтобы наложить скоростные ограничения необходимо сначала их создать - создаются они той же командой ipfw, ограничения называются пайпами (pipe).

Создадим пайп №1.
root@gw:~$ ipfw pipe 1 config bw 200K

В него направим исходящий трафик от узла 192.168.0.1 к любым узлам.
root@gw:~$ ipfw add 400 pipe 1 ip from 192.168.0.1 to any out

Создадим пайп №2.
root@gw:~$ ipfw pipe 2 config bw 200K

В него направим входящий трафик от любых узлов к 192.168.0.1.
root@gw:~$ ipfw add 500 pipe 2 ip from any to 192.168.0.1 in

Посмотрим на то что получилось:
oot@gw:~$ ipfw show
00100 296 38628 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
00400 0 0 pipe 1 ip from 192.168.0.1 to any out
00500 0 0 pipe 2 ip from any to 192.168.0.1 in
65500 917677 331261458 allow ip from any to any
65535 0 0 allow ip from any to any

2 пайпа необходимо для корректного ограничения скорости входящего и исходящего трафика - можно засунуть все и в один пайп, но тогда исходящий трафик будет давить входящий и наоборот .

Теперь так называемые "остальные IP адреса" - положим что они это сеть 192.168.0.0/24. Чтобы залимитировать скорость всей подсети скопом, но не указывать каждый конкретный IP в правиле фаервола нужно пойти на хитрость - создать так называемые динамические пайпы ;) .

root@gw:~$ ipfw pipe 3 config bw 50K mask src-ip 0xffffffff
root@gw:~$ ipfw pipe 4 config bw 50K mask dst-ip 0xffffffff

И направим в них трафик:
root@gw:~$ ipfw add 600 pipe 3 ip from 192.168.0.0/24 to any out
root@gw:~$ ipfw add 700 pipe 4 ip from any to 192.168.0.0/24 in

И естественно посмотрим командой ipfw show что получилось.

Засим всё - всем сестрам по серьгам - каждый IP получил ту скорость которую надо.
unn вне форума
 
Ответить с цитированием Вверх
Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение:
 
Время генерации страницы 0.08501 секунды с 9 запросами