Документация по ОС FreeBSD Суббота, 20.04.2024, 12:10
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
IPFW [58]

Главная » Статьи » FireWall » IPFW

ALTQ в IPFW [2008]
Предистория. Работа у нас сложная и напряжённая, о чём свидетельствуют протёртые клавиши W A S D на клавиатуре, а канал в инет не резиновый (к нашему всеобщему сожалению). Загвоздка состояла в том, что когда начинали активно серфить или кто-то осмеливался ещё и качать, то пинг в любой игре подскакивал до неприлично больших значений, ну и конечно большая вероятность дисконекта. На шлюзе стоит FreeBSD 7.0 Release с настроенным ipfw и претензий к нему нет. Именно поэтому при возникновении необходимости в altq я полез копаться в pf. Настроил, всё прекрасно заработало. Косяк вылез при редиректе на squid из-за того, что в FreeBSD 7 в pf по умолчанию включен keep state, а в rdr он не убирается. Убил неделю, но, как говорится: "А ларчик то просто открывался!". Настроенный ipfw переводится на работу с ALTQ за несколько минут.
Теперь по порядку:
Естественно надо ядро с поддержкой ALTQ, а именно:
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_CDNR
options ALTQ_PRIQ
options ALTQ_NOPCC #нужен для для SMP
options ALTQ_DEBUG

PF (можно модулем подгружать, но не пробовал) для добавления очередей ALTQ (ipfw сам не умеет):
device pf #обязательно
device pflog #остальное по желанию
device pfsync

Правим /etc/rc.conf и добавляем:
pf_enable="YES"
pf_rule="/etc/pf.conf"

В /etc/pf.conf только включаем altq и прописываем очереди.
altq on $ext_if bandwidth 1000Kb priq queue {def_out, game_out}
 queue def_out priority 1 priq(default red)
 queue game_out priority 5 priq(red)

altq on $int_if bandwidth 1000Kb cbq queue {def_in, game_in}
 queue def_in bandwidth 872Kb cbq(default borrow red)
 queue game_in bandwidth 128Kb priority 7 cbq(borrow red)

Подробно очереди описывать не буду, в интернете множество примеров.
Ну и теперь надо завернуть в очереди трафик из ipfw. При настроенном ipfw, делается это очень удобно через конструкцию count
ipfw add 1 count altq game_out all from any to any 8112 out via $ext_if
ipfw add 2 count altq game_in all from any 8112 to any out via $int_if
...

Ну и т.д. Все, кто не попал в очередь идут в дефолтную.

Для удобства ставим pftop и радуемся работе ALTQ в ifpw.

З.Ы. Замечания по man`у ipfw. При попадании пакета в несколько очередей срабатывает первое. Заворачивать в очереди надо до check-state и keep-state.

Ну, вот, как-то так...

Литература:
FAQ по ALTQ (eng)
FAQ по ALTQ (rus)
Настройка PF (rus)
Полезно у кого асинхронный канал (eng)



Источник: http://www.lissyara.su/?id=1660
Категория: IPFW | Добавил: oleg (23.05.2008) | Автор: Covax
Просмотров: 1316 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024