Проблема в том, что /etc/rc.d/pf
запускается до /usr/local/etc/rc.d/ezjail
, поэтому ядро не настроено заключенная в тюрьму сеть к тому моменту, когда она попытается загрузить правила брандмауэра. У вас может возникнуть соблазн изменить скрипт pf
, чтобы он запускался после ezjail
, но это не очень хорошая идея - вы хотите, чтобы ваш брандмауэр запускался на ранней стадии процесса загрузки, но тюрьмы запускаются довольно быстро поздно. service -r
показывает, в каком порядке будут выполняться ваши сценарии rc.
Вы не показываете никаких правил pf.conf
, но я предполагаю, что они используют статическую конфигурацию интерфейса. Обычно поиск имени хоста и преобразование имени интерфейса в адрес выполняются при загрузке правил. При изменении имени хоста или IP-адреса правила необходимо перезагрузить, чтобы обновить ядро. Однако вы можете изменить это поведение, заключив имена интерфейсов (и любые дополнительные модификаторы) в круглые скобки, что приведет к автоматическому обновлению правил при изменении адреса интерфейса. В качестве простого (и не очень полезного) примера:
ext_if="em0"
pass in log on $ext_if to ($ext_if) keep state
Справочная страница pf.conf
очень подробна. В частности, здесь актуален раздел «ПАРАМЕТРЫ».