Привет Всем
Задача - шейпить свою локалку на 1к чел. 50% безлимитчиков, безлимиты от 1Мбита(1, 5,10).
Сейчас стоит 2-а VPN сервера на FreeBSD на них и кручу ограничения, но с этим проблоемы - канал меньше :)
Хочу поставить 2-а сервака(c CARP например) и через них пропускать трафф (до 120Мбит инет и 1Гигабит(загружено до 100Мбит) паритетная сеть).Так же повесить там НАТ+BGP(внешка)+OSPF(внутренка)
Хотелось бы сделать так:Каждый клиент имеет приоритет в канале и... если канал простаивает - пользуйся не жалко, но если канал перегружен - будь добр получи определённый приоритет в канале.
Если надо кому-то дать не больше какой-то скорости - ограничиваю на ВПН-сервере и ставлю приоритет по больше...Так вот денег на циску или что-то железное нет, так что задача организовать на писюке...
Вот сижу и думаю на чем это делать...
Желателен задел на будущее :)
А связка quagga + (pf+altq) такую нагрузку не тянет?
>А связка quagga + (pf+altq) такую нагрузку не тянет?pf на 7.1 вдруг перестал udp nat'ить, что очень важно для онлайн игр :)
ЗЫ:
Меня интересует как можно больше скорости выжать...
Может взять - протестировать Linux...
>>А связка quagga + (pf+altq) такую нагрузку не тянет?
>
>pf на 7.1 вдруг перестал udp nat'ить, что очень важно для онлайн
>игр :)Нифига, работает. Сначала тоже с этим столкнулся, у меня ipfw + pfnat. Починилось путём явного указания для dummynet и pfnat, на каких интерфейсах шейпить и натить. И где-то встречал в рассылках такое же описание, поскольку вроде в семёрке они по изменили значения по умолчанию (лень, лень искать более подробно).
>ЗЫ:
>Меня интересует как можно больше скорости выжать...
>Может взять - протестировать Linux...
>[оверквотинг удален]
>>
>>pf на 7.1 вдруг перестал udp nat'ить, что очень важно для онлайн
>>игр :)
>
>Нифига, работает. Сначала тоже с этим столкнулся, у меня ipfw + pfnat.
>Починилось путём явного указания для dummynet и pfnat, на каких интерфейсах
>шейпить и натить. И где-то встречал в рассылках такое же описание,
>поскольку вроде в семёрке они по изменили значения по умолчанию (лень,
>лень искать более подробно).
>Не работало вот так:
ext_if="vlan20"
scrub in all fragment reassemble
set skip on lo0
nat on $ext_if from <inat> to any -> {91.203.XXX.XXX}
pass allТо есть надо было?Или причина в нате на влане?:
ext_if="vlan20"
scrub in all fragment reassemble
set skip on lo0
nat on $ext_if from <inat> to any -> ($ext_if)
pass all
>Не работало вот так:
>[оверквотинг удален]
У меня tcpdump показывал, что ответные UDP (и ICMP) пакеты не проходили снаружи внутрь, к абоненту. На ipfw у меня dummynet, на pf [BI-]NAT. "Вскрытие" показало, что пакеты блокируются после входа в pipe, несмотря на наличие дальнейшего разрешающего правила. В итоге сделал так.
Было:
# Rule 3000: generated by utm2shaper script from billing database
$ipfw add $shapers_rulenum queue tablearg all from any to 'table(4)' // Incoming traffic shaping
$ipfw add $shapers_rulenum queue tablearg all from 'table(5)' to any // Outgoing traffic shaping
Стало:
# Rule 3000: generated by utm2shaper script from billing database
$ipfw add $shapers_rulenum queue tablearg all from any to 'table(4)' xmit $int_if // Incoming traffic shaping
$ipfw add $shapers_rulenum queue tablearg all from 'table(5)' to any xmit $ext_if // Outgoing traffic shapingВ таблицах содержатся локальные адреса пользователей и номера pipe, в которые их нужно адресовать:
root@home-vr:/root/nasscripts (308) ipfw table 4 list |head -n 3
10.54.0.8/29 141
10.54.1.8/29 69
10.54.2.8/29 19
root@home-vr:/root/nasscripts (309) ipfw table 5 list |head -n 3
10.54.0.8/29 10141
10.54.1.8/29 10069
10.54.2.8/29 10019PF, как теперь вспомнил, не трогал, выглядит примерно вот так:
ext_if="em0"
int_if="em1"
dst_nat1="93.92.199.0/26"
dst_nat2="93.92.199.252/29"
table <allow-nat> persist file "/etc/pf.allow-nat"
table <peering-nets> const { 84.52.101.0/24 84.52.102.0/24 84.52.106.0/24 84.52.117.0/24 84.52.118.0/24 84.52.119.0/24 84.52.121.0/24 84.52.125.0/24 172.20.0.0/14 195.177.121.0/24 }
set limit { states 200000, frags 50000, src-nodes 30000 }
set state-policy if-bound
set optimization normal
set ruleset-optimization profile
set block-policy drop
set fingerprints "/etc/pf.os"
set skip on lo0
scrub in all max-mss 1440
no nat on $ext_if from <peering-nets> to any
no nat on $ext_if from any to <peering-nets>
binat-anchor "binat"
load anchor "binat" from "/etc/pf.anchor.binat"
nat on $ext_if from <allow-nat> to any -> $dst_nat1 static-port source-hash
nat on $ext_if from 10.78.78.0/24 to any -> $dst_nat2 static-port source-hash
pass in all
pass out all
>>Не работало вот так:
>>
>
>[оверквотинг удален]
>
>У меня tcpdump показывал, что ответные UDP (и ICMP) пакеты не проходили
>снаружи внутрь, к абоненту. На ipfw у меня dummynet, на pf
>[BI-]NAT. "Вскрытие" показало, что пакеты блокируются после входа в pipe, несмотря
>на наличие дальнейшего разрешающего правила. В итоге сделал так.Угу примерно так, но не помню точно...
Помню, что Я делал одно правило allow all from any to any (вроде...)
Еще вроде компилил ядро с отключеным ipfw и отключал его при загрузке...
И это не помогло....