Я работаю на 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 не должен касаться других таблиц правил, кроме своей собственной, но здесь это не так!