Вот pf.conf:
Код: Выделить всё
# юзерские виртуальные интерфейсы
usr_if="{ng0 ng1 ng2 ng3 ng4 ng5 ng6 ng7 ng8 ng9 ng10 ng11 ng12 ng13 ng14 ng15}"
#интерфейс. смотрящий в локальную сеть
int_if="nve0"
#интерфейс на модем (ADSL Zyxel Prestige 650)
ext_if="dc0"
#IP на ктотром слущает mpd
vpn_server="192.168.14.251"
# внутренняя сеть с абонами
cli_net="192.168.0.0/20"
set skip on lo0
set block-policy drop
scrub in all
# ограничени канала на одно подключение mpd (pptp)
altq on $usr_if cbq bandwidth 80Kb queue {q_in}
queue q_in bandwidth 40Kb cbq (default borrow)
# повышение приооритете игротраффика на внешнем интерфейсе, на внешнем, чтобы он был впереди всех общих пакетов
altq on $ext_if bandwidth 256Kb priq queue {dflt_ext, game_udp}
queue dflt_ext priority 1 priq (default)
queue game_udp priority 3
antispoof quick for $int_if inet
#запретить траффик из внутренней сети
block in on $int_if all
#разрешаем mpd и ssh
pass in on $int_if proto {tcp udp} from $cli_net to $vpn_server port {1723 22} keep state
#разрешаем инет через pptp и ограничиваем канал до 10 КБ
pass out on $usr_if from any to any queue q_in
# это тоже надо для pptp
pass on $int_if proto gre all
# повышаем приоритете игрвого траффика на внешнем интерфейсе
pass out on $ext_if proto {tcp udp} from $ext_if to any port {1513} keep state queue game_udp
#неигровой траффик на внешнем интерфейсе
pass out on $ext_if from $ext_if to any queue dftl_ext
После старта системы все вроде нормально, после pfctl -f /etc/pf.conf все начинет снова работать, пришлось эту команду загнать в crontab, но кажется это извращение, не айс то есть