После обновления моей системы FreeBSD с 12.2 до 13.0-p3 PF блокирует весь трафик в мои тюрьмы.
При отключении PF все работает нормально (кроме незащищенности ;))
Я попытался выяснить, какое правило блокирует этот трафик, установив «блокировать в журнале все», но, кроме некоторых очевидных многоадресных вещей, не появляется ничего, что могло бы объяснить, почему этот трафик заблокирован.
Опять же, раньше все прекрасно работало под версией 12.2.
Я нашел несколько статей о том, что v13 теперь фильтрует через VLAN вместо lo0, но я не использую VLAN.
В каком направлении мне искать дальше?
Обновление 2021-07-15:
Для ясности: вот мой файл pf_rules:
установить возврат политики блокировки
установить агрессивную оптимизацию
установить пропуск на {lo0, lo1, lo2, lo3, lo4, lo5}
ext_if=hn0
ext_address="{ 192.x.x.x, 2001:981:x.x::x}"
ext_services = "{ssh, http, https, smtp, smtps}"
tcp_services = "{ ftp, ssh, домен, ntp, www, smtp, smtps, отправка, http, https, nfs}"
udp_services = "{домен, ntp, nfs}"
icmp6_types="{ 2, 128 }" # слишком большой пакет, эхо-запрос (ping6)
icmp6_types_ext_if="{ 128, 133, 134, 135, 136, 137}"
тюрьма_net = "192.168.1.0/24"
jail_services = "{mysql, http, smtp, 587, 3000}"
таблица <sshguard> сохраняется
вычистить все
nat передает $ext_if из $jail_net в любой -> $ext_address
заблокировать в журнале $ext_if proto tcp от <sshguard> до любого порта метка ssh "ssh bruteforce"
заблокировать в журнале все
быстро передать из <pf_whitelist> флаги состояния синпрокси S/SA
передать на $ext_if inet6 proto icmp6 все эхо-запросы типа icmp6 сохранить состояние
передать через $ext_if inet proto udp на порт 33433:33626
передать $ext_if inet6 proto udp на порт 33433:33626
перейти в $ext_if inet6 proto ipv6-icmp icmp6-type $icmp6_types сохранить состояние
перейти в $ext_if inet6 proto ipv6-icmp from any to { ($ext_if ), ff02::1/16 } icmp6-type $i
cmp6_types_ext_if сохранить состояние
передать по $ext_if proto tcp с любого на порт $ext_address $ext_services сохранить состояние
передать в $ext_if inet6 proto tcp с любого порта $ext_address $ext_services сохранить состояние
передать через $ext_if inet proto tcp на любой порт $tcp_services сохранить состояние
передать через $ext_if inet6 proto tcp на любой порт $tcp_services сохранить состояние
пройти через $ext_if inet6 proto udp на любой порт $udp_services
передать proto udp на любой порт $udp_services сохранить состояние
передать прото tcp с любого на порт $jail_net $jail_services сохранить состояние
передать proto tcp из $jail_net на любой порт $jail_services сохранить состояние
передать inet proto icmp от любого к любому
Это работало много лет до FreeBSD 13.