Назад | Перейти на главную страницу

Обновить конфигурацию ipfilter с сохранением состояния

У меня есть 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 используется простой, но жестокий подход:

  1. ipf -D
  2. ipf -E
  3. Загрузите правила из файла конфигурации

Есть ли лучший способ обновить 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, Хотелось бы знать.