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