Написал свой первый конфиг для PF хотелось бы узнать насколько он надёжен и где допустил упущения, что можно изменить ?#1Макросы: Определяемые пользователем переменные, которые могут\
содержать адреса IP, имена интерфейсов, и т.д.
ext_if="xl0" # внешний интерфейс
int_if="em0" # внутренний (локальный) интерфейс
int_net="{192.168.137.1/24}" # внутренняя сеть
ext_net="{10.0.0.1/21}" #внутренняя сеть Калева
me="192.168.137.1"
lan_to_int="{ftp,ftp-data,www,https,ssh,smtp,pop3,nntp,8080,ntp,411,5190}"
#2. Таблицы: Применяются для хранения списков IP адресов
#3. Опции: Параметры, влияющие на работу pf
#4Scrub: Подготовка пакета к нормализации и дефрагментации
#Нормалиация входящего трафика
scrub in all
#5. Очереди: Обеспечивает управление полосой пропускания и\
установку приоритетов пакета.
#6. Трансляции: Контроль NAT и перенаправлением пакета
# разрешаем натить всё, что должно быть снаружи
nat on $ext_if from $int_net to any -> ($ext_if)
rdr on xl0 proto tcp from any to any port 5808 -> 192.168.137.1
#Проброс порта для торента
rdr pass on $ext_if proto tcp to $ext_net port 38825 -> 192.168.137.1 port 38825
#Натим порты
nat on $ext_if inet from $int_net to any port $lan_to_int -> $ext_if
#7. Правила фильтрации: Осуществляют выборочную фильтрацию пакетов\
на интерфейсах
#Исходящие соединенения на внешний интерфейс in packs on ext_if
# Блокируем все исходящие соединения
block in on $ext_if from any to any
# Разрешаем пинги
pass in on $ext_if inet proto icmp from any to $ext_if icmp-type 8 keep state
# Разрешаем соединяться с ssh-сервером из внешки
pass in log on $ext_if inet proto tcp from any to $ext_if port 22 keep state
# исходящий доступ через внешний интерфейс в сеть Калева
pass in on $ext_if from any to $int_net keep state
#Пропускаем порты из сети Для меня
pass in on $int_if inet proto tcp from $me to any port $lan_to_int
# Доступ к WWW
file "/etc/pf.conf", 94 lines
pass in on $ext_if inet proto tcp from any to $ext_if port www keep state
# Входящие соединенения на внешний интерфейсout packs on ext_if
# Блокируем все входящие соединения
block out on $ext_if from $ext_if to any
# Разрешаем пинги от нас
pass out on $ext_if inet proto icmp from $ext_if to any icmp-type 8 keep state
# входящий доступ через внешний интерфейс в сеть Калева
pass out on $ext_if from any to $ext_net keep state
#Пропускаем входящие порты для меня
pass out on $ext_if inet proto tcp from $me to any port $lan_to_int
#пропускаем входящие порты в гейт
pass out on $ext_if inet proto tcp from $ext_if to any port $lan_to_int
# Разрешаем обращаться на Web
pass out on $ext_if inet proto tcp from $ext_if to any port www keep state
#Исходящее соединения из внутреннего интерфейса in packs on int_if
# Блокируем все входящие соединения
block in on $int_if from $int_net to $me
pass in on $int_if inet proto tcp from $int_net to $me port 22 keep state
# Входящее соединения на внутреннеий интерфейс out packs on $int_if
# Разрешаем пинги от нас
pass out on $int_if inet proto icmp from $me to $int_net icmp-type 8 keep state