У меня есть ipfilter, работающий на сервере Solaris 11.2 с правилами, похожими на:
pass in log first quick proto tcp from any to any port = 22 flags S keep state
Я хотел бы иметь возможность редактировать и перезагружать конфигурацию ipfilter из /etc/ipf/ipf.conf
. Однако когда я бегу svcadm refresh ipfilter
, динамическое состояние сбрасывается, и я теряю все активные сеансы, которые зависят от состояния.
Похоже, что для обновления службы в Solaris используется простой, но жестокий подход:
ipf -D
ipf -E
Есть ли лучший способ обновить ipfilter, который (а) не сбрасывает состояние и (б) гарантирует, что текущая конфигурация идентична загрузке конфигурации с нуля?
Похоже, это делает то, что я хочу:
ipf -IFa && ipf -If /etc/ipf/ipf.conf && ipf -s -y
Это очищает список неактивных фильтров, загружает правила в список неактивных фильтров, меняет местами активные и неактивные списки фильтров и обновляет ipfilter с текущим списком сетевых интерфейсов.
За динамическим состоянием можно следить с помощью ipfstat -t
и ipfstat -sl
и промывается (при необходимости) с помощью ipf -FS
Чтобы проверить, соответствует ли конфигурация на диске активной конфигурации, я нашел эту команду полезной (обратите внимание, что она уничтожит список неактивных фильтров):
diff -u <(ipfstat -io) <(ipf -IFa && ipf -If /etc/ipf/ipf.conf && ipfstat -Iio)
Если кто знает, почему служба Solaris по умолчанию прибегает к ipf -D
и ipf -E
, Хотелось бы знать.