Базовая настройка ipfilter во FreeBSD


К пакету применяется последнее подходящее правило.
Параметры в rc.conf:
ipfilter_enable="YES" # Запуск межсетевого экрана ipf
ipfilter_rules="/etc/ipf.rules" # Загрузка файла с правилами
gateway_enable="YES" # Включение шлюза для локальной сети
ipnat_enable="YES" # Если надо задействовать nat
ipnat_rules="/etc/ipnat.rules" # Определение файла правил для ipnat

Примеры правил в ipf.rules:
pass out quick on lo0 proto ip from any to any
pass in quick on lo0 proto ip from any to any
pass in quick on fxp1 proto tcp from any to 1.2.3.1/32 port = 80 flags S keep state
pass out log quick on fxp1 from 1.2.3.1/32 to any
pass in quick on fxp1 proto icmp from any to any icmp-type 0
pass in quick on fxp1 proto icmp from any to any icmp-type 11
block in log quick on fxp1 proto icmp from any to any
block return-icmp(port-unr) in log quick on tun0 proto udp from any to 20.20.20.0/24 port = 111

quick означает, что если анализируемый пакет подпадает под данное правило, то дальнейший просмотр правил прекращается.
keep state означает, что так же будут разрешены все пакеты, которые пойдут по этому же соединению в том числе в обратную сторону.

Примеры редиректов в ipnat.rules:
map tun0 192.168.1.0/24 -> 20.20.20.1/32
map tun0 192.168.1.0/24 -> 0/32 portmap tcp/udp 20000:30000

Запускаем:
/etc/rc.d/ipfilter start
/etc/rc.d/ipnat start

Команды:
ipf -Fa -f /etc/ipf.rules # сбросить все правила и загрузить новые из файла
ipfstat -in # вывод правил для входящего трафика
ipfstat -on # вывод правил для исходящего трафика
ipfstat -t # просмотр текущей статистики в виде TOP-а
ipnat -l # смотрим текущие редиректы для ipnat
/etc/rc.d/ipnat reload #для перезагрузки правил ната


http://unix-notes.ru/tag/freebsd/

Обновлено: 12.03.2015