Обсуждение статьи тематического каталога: Раздача Интернета через VPN (mpd) с ограничением траффика по пользователям средствами PF (freebsd vpn mpd limit traffic pf firewall)Ссылка на текст статьи: http://www.opennet.me/base/net/vpn_mpd_pf.txt.html
а active ftp как будем пропускать? :))
>а active ftp как будем пропускать? :))Ваши предложения? )
Да, согласен активный ftp тут работать не будет. Если кому надо, тогда нужно задействовать proxy-ftp.
>>Далее правим /etc/make.confЗАЧЕМ приводить пример make.conf (без пояснений) для конкретной машины с конкретной версией софта? Чтобы кто-то (так же не думая) тупо его повторил и получил грабли?
>>Для бересборки ядра редактируем GENERIC. Его я переименовал в MYGENERIC1 ..... я приведу
только то что необходимо для работы.
1. Генерик мы не редактируем.
2. Закомментированные строчки _нужны_ для работы? Что за бред? Зачем опять же частную реализацию выдавать за "необходимо для работы"? Без отключения INET6 или NFS оно работать не будет?
Уважаемый ононим. Я Вам поясню.
Во-первых данная статья предполагает, что читающий имеет некий опыт работы с данной ОС и прочитал перед этим хендбук. А те параметры make.conf, что я указал не привязаны к конкретному железу.>1. Генерик мы не редактируем.
нет, именно генерик, переименованный в MYGENERIC1 мы и редактируем
>2. Закомментированные строчки _нужны_ для работы? Что за бред? Зачем опять же частную >реализацию выдавать за "необходимо для работы"? Без отключения INET6 или NFS оно работать >не будет?
Вы какой-то странный. Почему частная реализация? Скажите, зачем IPv6 в реализации с нат??? Или NFS на пограничном фаерволле? Я же не показывал какие сетевые девайсы закомментировать в конфиге.
Вы, извините, сколько дней админите?
1.5. Для бересборки ядра редактируем GENERIC
бересборка Ж)
все же хотелось бы немного пояснений
например anchor "ext_if-out/*"
что это за якорь? и где его описание?
может что проглядел?
>все же хотелось бы немного пояснений
>например anchor "ext_if-out/*"
>что это за якорь? и где его описание?
>может что проглядел?Конечно поясню.
Якоря в конфиге для того, что бы добавлять разрешающие правила в фаервол в момент, когда пользователь подключился по впну, и сбросить правила - когда отключился.
Якоря находятся в старт-скрипте vpn-сервера
set iface up-script /usr/local/etc/mpd5/if-up.sh
set iface down-script /usr/local/etc/mpd5/if-down.shif-up.sh
#!/bin/sh
echo "nat on le0 tag from_$4 tagged from_$4 -> le0" | pfctl -a mpd-nat/$4 -f -;
Собственно правило для натаecho "pass out quick on le0 inet tagged from_$4 queue $4_up" | pfctl -a ext_if-out/$4 -f -;
Правило разрешающее траффик с внешнего интерфейса, для конкретного пользователя с назначеной очередью.echo "pass in quick on $1 inet from $1:peer $4 to any tag from_$4 queue $4_down" | pfctl -a ng-in/$4 -f -;
Это правило разрешает трафик к создавшемуся интерфейсу ng* от пользователя, назначает тег и очередьСейчас такая схема работает вполне успешно, обслуживает 20 клиентов.
спасибо за пояснение :)
Хочу queue anchor и правила в стиле "каждой твари - по харе", a-la "queue XYZ bandwidth 1Mb cbq(ecn each32)" (чтобы каждому хосту давалось по 1Mb) или "queue SDF bandwidth 8Mb cbq(ecn each24)" (чтобы каждой подсети с маской 24 бита давалось по 8Mb)
Зачем приводить пример кучи сискатеелей без пояснения что они делают :)
sРРРРРРРРРррррррр блин ну чё я не так делаю у мя всё вроде маркирует норм но всеравно в очередях которых я прописал не режит трафик всеравно забирает всю полосу
altq on $if_in cbq bandwidth 100Mb qlimit 50 queue { def_download }
queue def_download bandwidth 100% { 192.168.1.0_down, \
192.168.222.1_down, 192.168.222.2_down, 192.168.222.3_down, 192.168.222.4_down, 192.168.222.5_down, \
........... }
queue 192.168.1.0_down bandwidth 40Mb cbq(default red borrow)
queue 192.168.222.1_down bandwidth 1Mb cbq(ecn)
queue 192.168.222.2_down bandwidth 1Mb cbq(ecn)
queue 192.168.222.3_down bandwidth 1Mb cbq(ecn)
...............
altq on $if_out cbq bandwidth 100Mb qlimit 50 queue { def_upload }
queue def_upload bandwidth 100% { 192.168.1.0_up, \
192.168.222.1_up, 192.168.222.2_up, 192.168.222.3_up, 192.168.222.4_up, 192.168.222.5_up, \
........... }
queue 192.168.1.0_up bandwidth 60Mb cbq(default red borrow)
queue 192.168.222.1_up bandwidth 512Kb cbq(ecn)
queue 192.168.222.2_up bandwidth 512Kb cbq(ecn)
..............### NAT
nat-anchor "mpd-nat/*"nat on $if_out from $our_network to any -> $if_out
#nat on $if_out from $if_in:network to any -> $if_out#pass quick all
#pass allblock in all
pass out all
antispoof quick for { lo $if_out } inet#ping $$ traceroute (razreshitb vxodashie na BCE !!!)
pass in proto icmp all### EXT_IF_OUT
#anchor "ext_if-out/*"
#anchor "ng-in/*"
pass in quick on ng0 inet from 192.168.222.1 to any tag from_192.168.222.1 queue 192.168.222.1_down
pass out quick on sis0 inet tagged from_192.168.222.1 queue 192.168.222.1_upУже так делаю ну всеравно не шейпит ((((((( всю ширину канала забирает
>[оверквотинг удален]
>
>### EXT_IF_OUT
>#anchor "ext_if-out/*"
>#anchor "ng-in/*"
>pass in quick on ng0 inet from 192.168.222.1 to any tag from_192.168.222.1
>queue 192.168.222.1_down
>pass out quick on sis0 inet tagged from_192.168.222.1 queue 192.168.222.1_up
>
>Уже так делаю ну всеравно не шейпит ((((((( всю ширину канала забирает
>Мне кажется в этом проблема:
altq on $if_in cbq bandwidth 100Mb qlimit 50 queue { def_download }
queue def_download bandwidth 100% { 192.168.1.0_down, \
192.168.222.1_down, 192.168.222.2_down, 192.168.222.3_down, 192.168.222.4_down, 192.168.222.5_down, \
........... }т.е. основная очередь в которую входят пользовательские очереди у тебя не дефаулт, а надо что бы она таковой была.
queue 192.168.1.0_down bandwidth 40Mb cbq(default red borrow)
А здесь дефаулт не нужен.queue 192.168.222.1_down bandwidth 1Mb cbq(ecn)
queue 192.168.222.2_down bandwidth 1Mb cbq(ecn)И еще, важным моментом есть эта строчка в pf.conf
set state-policy if-bound
Внимательно читай статью. Смоделирую в виртуальной среде,а потом подгоняй под свои конкретные задачи.Свою систему шейпирования я сделал, отталкиваясь вот от этой статьи:
http://kestas.kuliukas.com/pf.conf/
Отлично, пасиба