>Всем привет
>ситуация такая хочу чтоб нат работал через PF а шейпер через IPFW
>
>как правильно реализовать эту схему поделитесь опытом плизз У меня эта схема работает для PPPoE. На сервере стоят ipfw (для шейпинга) и pf (для NAT) как и сказано. Все просто:
rc.conf:
...
# IPFW
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="CUSTOM"
...
# pf used for NAT
pf_enable="YES" # Set to YES to enable packet filter (pf)
pf_rules="/etc/pf.conf" # rules definition file for pf
...
в rc.firewall стандартные настройки файерволла, а правила для шейпинга сосздаются/удаляются при подключении/отключении каждого клиента скриптами if-up и if-down, в которых соответственно выполняются коммадны:
ipfw pipe 5000 config bw 128kb/sec queue 20 # создает пайп для пользователя
ipfw add 5000 pipe 5000 all from 192.168.1.100 to any # засовывает трафик от пользователя с ip 192.168.1.100 в его пайп.
Здесь номер правила может отличаться от номера пайпа, это я просто для примера
соответственно когда пользователь отключается говорим:
ipfw pipe delete 5000
ipfw delete 5000
pf.conf
nat on $ext_if from $internal_net to any -> $external_addr
$ext_if - интерфейс, смотрящий наружу (="fxp0")
$int_if - интерфейс, смотрящий на клиентов (="fxp1")
$internal_net - клиетнская сеть (="192.168.1.0/24")
Единственное с чем не разбирался - кто отрабатывает первым ipfw или pf. По сути, это не принципиально и все работает нормально.