Рейтинг:2

iptables сбрасывается при перезагрузке firewalld

флаг br

Я работаю на Rocky Linux (на базе RHEL8) и немного борюсь с firewalld и iptables. Ну, в любом случае, не совсем iptables… Позвольте мне объяснить.

Я настроил кластер K8S на VMWare ESXi с шестью виртуальными машинами, все одинаково. я необходимость чтобы запустить firewalld, учитывая эту среду. Я использую Weave CNI, который использует iptables для создания своих сетевых правил.

Вот мои первоначальные выводы:

  • на ткацких докер-контейнерах и Хосты ВМ, используется iptables с бэкендом nf_tables
    • это подтверждается iptables -V вывод, который дает мне iptables v1.8.4 (nf_tables)
  • firewalld настроен на использование nftables в качестве серверной части (БрандмауэрБэкенд)
  • служба iptables не существует (Модуль iptables.service не найден.)
  • Служба nftables загружена, но неактивна
  • служба firewalld работает
  • если я запускаю службу nftables, служба firewalld останавливается и наоборот

Насколько я понимаю firewalld, поскольку он использует nftables, он вообще не должен сбрасывать iptables, согласно их Сообщение блога о бэкенде nftables.

Когда weave устанавливает свои правила iptables (для политик маршрутизации и сети), я могу видеть их либо с помощью iptables-сохранить или же набор правил списка nft. Это означает, что даже если weave использует iptables для установки своих правил, на самом деле они устанавливаются в nftables.

Теперь моя проблема в том, что если я перезагружу firewalld (с брандмауэр-cmd --перезагрузить или же systemctl перезагрузить firewalld.service) после того, как ветка установила свои правила, все правила сбрасываются! Я могу подтвердить это с iptables-сохранить или же набор правил списка nft.

Может ли это быть связано с использованием iptables команды вместо нфт? Даже если iptables использует бэкэнд nf_tables?

Обратите внимание, что эта проблема частично решается с помощью плетения, потому что они отслеживают правила, чтобы увидеть, существует ли еще специальная (пустая) цепочка WEAVE-CANARY. Если его нет, они воссоздают маршруты маршрутизации, но для правил сетевой политики ничего не делается. В настоящее время это запрос функции.

Каковы возможные решения? Я подумал о том, чтобы подключиться к службе firewalld, чтобы добавить ExecStopPre и ExecReloadPre чтобы сохранить правила, отличные от правил firewalld, в /etc/sysconfig/nftables.conf (или другой файл, включенный оттуда), но это своего рода хакерство, и мне не нравится это «решение». Более того, я даже не уверен, что это сработает, учитывая, что служба nftables остановлена.

Изменить: я сделал несколько тестов, и поведение действительно странное.

Я добавил правило с iptables: iptables -I ВВОД 3 -s 10.1.1.9 -j УДАЛИТЬ, потом перезагрузил брандмауэр и правила больше нет! Я пробовал то же самое с нфт: nft добавить правило ip filter INPUT ip saddr 10.1.1.9 drop, перезагрузил брандмауэр и результат тот же...

Это сводит меня с ума, firewalld не должен касаться других таблиц правил, кроме своей собственной, но здесь это не так!

A.B avatar
флаг cl
A.B
Если firewalld действительно использует nftables в качестве серверной части, он должен работать только с таблицей firewalld: https://firewalld.org/2018/07/nftables-backend#only-flush-firewallds-rules. Есть ли таблица firewalld?
A.B avatar
флаг cl
A.B
См. также этот вопрос/ответ: https://serverfault.com/questions/1046179/rhel-centos-now-to-add-nftable-rules-to-firewalld-on-system-boot (обратите внимание на мое замечание о службе nftables промывка всего).
флаг br
@AB Действительно, есть таблица firewalld.И FirewallBackend настроен на nftables в конфигурации firewalld, как указано в моем сообщении. Вот почему это сводит меня с ума ^^' Уже видел и читал Q/A, на который вы указали, но я не думаю, что это решит проблему, потому что служба nftables вообще не работает (из-за запущенной службы firewalld). На самом деле, идея подключения к службе firewalld во многом вдохновлена ​​​​вашим ответом. Тем не менее, я попробовал добавить некоторые правила в /etc/sysconfig/nftables.conf и перезагрузить firewalld, но я не вижу этих правил, так что это не работающее решение… Я немного застрял rn.
флаг br
@А.Б. Для наглядности вот таблицы, которые у меня есть: ip filter, ip6 filter, bridge filter, ip security, ip raw, ip mangle, ip nat, ip6 security, ip6 raw, ip6 mangle, ip6 nat, bridge nat, inet firewalld, ip firewalld, ip6 firewalld. Weave добавляет свои правила в ip filter, ip mangle и ip nat. При перезагрузке/перезапуске брандмауэра эти таблицы очищаются.
A.B avatar
флаг cl
A.B
Действительно, при запуске/остановке/перезагрузке firewalld правило nftables в таблице, отличной от совместимости с iptables или firewalld, сохраняется, а правила iptables — нет. Таким образом, блог, на который я ссылаюсь, кажется неправильным.
A.B avatar
флаг cl
A.B
Обратите внимание, что firewalld с серверной частью nftables по-прежнему может использовать iptables: с прямыми правилами. Так что это может быть причиной того, что iptables все еще очищается. Теперь, чтобы найти, где это задокументировано, если это...
флаг br
Увы, это официальный блог firewalld... Думаю, тогда мне лучше зарегистрировать проблему на их GitHub! Спасибо за помощь кстати :)
Рейтинг:2
флаг br

Источник: GitHub выдает ответ от сотрудника firewalld

Здесь происходит несколько вещей.

  • NFT-вариант iptables добавит правила в nftables в известных таблицах: фильтр, нат, сырой, и т.д.
  • firewalld всегда сбрасывает все iptables правила (напр. iptables -F -t фильтр), который сбрасывает все цепочки в фильтр Таблица. Это соответствует известному nftables имена таблиц, упомянутые выше.

Firewalld's nftables серверная часть Только касается брандмауэр стол, но столы фильтр, нат, сыройи т. д. затрагиваются косвенно через iptables-nft для поддержки прямых правил iptables. Это поведение нельзя изменить из-за совместимости. Firewalld не будет трогать другие nftables таблицы, например. таблица с именем фубар не покраснел бы.

К сожалению, здесь мы ничего не можем сделать. Мы либо а) поддерживаем совместимость и позволяем iptables именованные таблицы очищаются или б) удаляются iptables прямая поддержка правил. Вариант А является наиболее удобным для пользователя.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.