Добрый день. Прошу, кто сталкивался - дать рекомендации по такому вопросу:Как проще организовать altq на шлюзе FreeBSD с 11 интерфейсами?
Хочется, чтобы важным протоколам (VPN, DNS, RDP, VOIP) всегда хватало канала, а остальным - по остаточному принципу.
Интерфейсы - WAN1, WAN2(основной и резерв), LAN, WIFI, DMZ, VLAN.
Плюс OpenVPN и на нем еще 5 виртуальных интерфейсов-тоннелей (tun0 - tun4).Для каждого интерфейса прописывать группу очередей - громоздко, может знающие люди подскажут - как упростить?
При этом скорость-пропускная способность у интерфейсов разная (WAN1 и WAN2) - можно ли вообще им сделать им общую очередь и как при этом задать очередь по умолчанию для остального неважного трафика(с остатком пропускной способности).
Спасибо.
PS: FreeBSD 10.2, packet filter.
> Добрый день. Прошу, кто сталкивался - дать рекомендации по такому вопросу:
> Как проще организовать altq на шлюзе FreeBSD с 11 интерфейсами?
> Хочется, чтобы важным протоколам (VPN, DNS, RDP, VOIP) всегда хватало канала, а
> остальным - по остаточному принципу.
> Интерфейсы - WAN1, WAN2(основной и резерв), LAN, WIFI, DMZ, VLAN.
> Плюс OpenVPN и на нем еще 5 виртуальных интерфейсов-тоннелей (tun0 - tun4).
> Для каждого интерфейса прописывать группу очередей - громоздко, может знающие люди подскажут
> - как упростить?11 интерфейсов - не 700.
Используйте shell.
> 11 интерфейсов - не 700.
> Используйте shell.Правильно ли я понял, что можно какими-то скриптами на шелле создать правила очередей?
Может быть у Вас есть какие-то ссылки на эти скрипты?
>> 11 интерфейсов - не 700.
>> Используйте shell.
> Правильно ли я понял, что можно какими-то скриптами на шелле создать правила
> очередей?да.
> Может быть у Вас есть какие-то ссылки на эти скрипты?
Настройка Firewall, NAT,ALTQ на PF - http://www.unix.ck.ua/content/nastroika-firewall-nataltq-pf
#Очереди, полоса - 2мбит, режем исходящий трафик от сервера с стороны внешнего интерфейса tun0.
altq on $ext_if cbq bandwidth 1980Kb queue { qssh, qhttp, qdns, qack, qftp }
queue qhttp bandwidth 70% priority 6 cbq (default borrow)
queue qssh bandwidth 15% priority 5 cbq (borrow)
queue qdns bandwidth 5% priority 5 cbq (borrow)
queue qack bandwidth 5% priority 6 cbq (borrow)
queue qftp bandwidth 5% priority 2 cbq (red)
#IN ALTQ
pass in on $ext_if inet proto { tcp,udp } from any to $ext_if port 2222 queue ( qssh, qack )
pass in on $ext_if inet proto { tcp,udp } from any to $ext_if port 80 queue qhttp
pass in on $ext_if inet proto { tcp,udp } from any to $ext_if port 53 queue qdns
pass in on $ext_if inet proto { tcp,udp } from any to $ext_if port { 21 30000:35000 } queue qftp#OUT ALTQ
pass out on $ext_if inet proto { tcp,udp } from $ext_if to $ext_if port 2222 queue ( qssh, qack )
pass out on $ext_if inet proto { tcp,udp } from $ext_if to $ext_if port 80 queue qhttp
pass out on $ext_if inet proto { tcp,udp } from $ext_if to $ext_if port 53 queue qdns
pass out on $ext_if inet proto { tcp,udp } from $ext_if to $ext_if port { 21 30000:35000 } queue qftp
Спасибо за ответ. Правда я не совсем понял при чем здесь shell.Дело в том, что подобных конфигов я нашел много.
Но в них во всех как правило 1 внешний интерфейс и 1 внутренний, и правил pass достаточно мало.У меня 6 интерфейсов и около 200 правил пропуска, ната и переадресаций по разным условиям. Если я это все еще разделю по очередям, то конфиг разбухнет раз в пять. В нем ориентироваться и так сейчас сложно, а станет вообще невозможно. В этом и вопрос - как можно сделать просто и красиво.
Пока придумал - вешать очереди на pass out - они у меня все разрешены и не используются для пропуска. К тому так и советуют - ограничивать исходящий трафик.
> У меня 6 интерфейсов и около 200 правил пропуска, ната и переадресаций
> по разным условиям. Если я это все еще разделю по очередям,
> то конфиг разбухнет раз в пять. В нем ориентироваться и так
> сейчас сложно, а станет вообще невозможно. В этом и вопрос -
> как можно сделать просто и красиво.Ну, так используйте shell для генерации конфига, раз недостаточно переменных в pf.conf.
Если правил много, то нужна оптимизация.
> Как проще организовать altq на шлюзе FreeBSD с 11 интерфейсами?
> Хочется, чтобы важным протоколам (VPN, DNS, RDP, VOIP) всегда хватало канала, а
> остальным - по остаточному принципу.
> Интерфейсы - WAN1, WAN2(основной и резерв), LAN, WIFI, DMZ, VLAN.
> Плюс OpenVPN и на нем еще 5 виртуальных интерфейсов-тоннелей (tun0 - tun4).
> При этом скорость-пропускная способность у интерфейсов разная (WAN1 и WAN2) - можно
> ли вообще им сделать им общую очередь и как при этом
> задать очередь по умолчанию для остального неважного трафика(с остатком пропускной способности).для упрощения используй группы интерфейсов, pf умеет работать по ним. А протоколы в очереди по приоритетам организуй. А вот будет ли ALTQ на группе работать - не знаю, не пробовал.
ок, спасибо большое, попробую, как вариант.
> ок, спасибо большое, попробую, как вариант.Мне кажется, ты меня неправильно понял. Я об этом:
ifconfig wan1 inet a.a.a./b group wan
ifconfig wan2 inet c.c.c.c/d group wanpf.conf:
pass on wan allЭто реально количество правил уменьшит.
> Мне кажется, ты меня неправильно понял. Я об этом:
> ifconfig wan1 inet a.a.a./b group wan
> ifconfig wan2 inet c.c.c.c/d group wan
> pf.conf:
> pass on wan all
> Это реально количество правил уменьшит.Да, спасибо, за уточнение, я попробую, просто у меня на первый план сейчас зависания сети на шлюзе вылезли, я с этим стал разбираться, поставил мунин, он не заработал - какие-то несвязанные ссылки между библиотеками, пока пытаемся сейчас это побороть.
прописал, группы в rc.conf перегрузил сеть, прописал правила
pass out on wan queue qwanother
.....
pf. применил - ошибок не выдал, работает или нет - пока не понятно.