Rocky Linux Rocky Linux

Rocky Linux: конфликт nftables и firewalld

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

Firewalld сам управляет nftables и заменяет ручные правила. Ниже — причины и порядок действий от простого к сложному.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Диагностика
  5. Вариант 1: firewalld
  6. Вариант 2: чистый nftables

#Что означает ошибка

Сообщение
Правила nftables сбрасываются после запуска firewalld

В Rocky Linux firewalld управляет правилами nftables сам, поэтому ручные правила nft или файл /etc/sysconfig/nftables.conf перезаписываются при запуске firewalld. Две системы управления брандмауэром одновременно создают путаницу: правила то пропадают, то дублируются.

Нужно выбрать одну схему и придерживаться её.

Для большинства серверов проще оставить firewalld.

Firewalld сам управляет nftables и заменяет ручные правила. Используйте либо firewalld, либо nftables — не смешивайте.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Два менеджераКонфликт.Выберите один.
АвтозапускОбе службы.Отключите одну.
Ручные правилаСбрасываются.Перенесите в firewalld.
ЗоныНеверные.Проверьте.

#Пошаговое решение

  1. Проверьте, какой сервис активенНа сервере Rocky Linux с консольным доступом выполните systemctl is-active firewalld и systemctl is-active nftables, а затем sudo nft list ruleset. Если обе службы активны, запишите, какие правила и цепочки присутствуют, и выясните, кто ими управляет. Само наличие правил nftables при включённом firewalld нормально: firewalld часто использует nftables как внутренний механизм. Конфликт возникает при независимом управлении одними и теми же цепочками; не останавливайте firewalld, пока не проверили доступ по SSH.
  2. Выберите одну схемуСначала проверьте, какие службы управления правилами установлены: systemctl status firewalld nftables --no-pager и sudo nft list ruleset. На рабочем сервере не останавливайте действующий межсетевой экран по SSH без консоли провайдера и сохранённых правил. Выберите один способ управления правилами для постоянной конфигурации, перенесите необходимые разрешения и только затем отключайте дублирующую службу.
  3. Отключите второй сервисНа сервере не выполняйте systemctl disable --now без точного имени службы: это немедленно остановит выбранный брандмауэр и может оборвать SSH. Сначала через консоль провайдера проверьте systemctl is-active firewalld nftables и sudo nft list ruleset, сохраните действующие правила и убедитесь, что нужный SSH-порт разрешён в выбранной системе. После переноса правил и подготовки отката администратор может отключить только реально лишнюю службу, а затем проверить доступ с нового SSH-сеанса. Если консоль недоступна, отложите смену схемы управления.
  4. Задайте правила в выбранной системеВыберите один способ управления правилами, согласованный с администратором сервера. Если используется firewalld, проверяйте активные зоны sudo firewall-cmd --get-active-zones и добавляйте разрешения через firewall-cmd, сохраняя доступ к SSH. Если применяется самостоятельная конфигурация nftables, храните её в системе управления конфигурацией и проверяйте перед загрузкой командой sudo nft -c -f /etc/sysconfig/nftables.conf только если именно этот файл используется вашим сервисом. Не применяйте flush ruleset через SSH.
  5. Проверьте итоговые правилаПосле изменений проверьте правила sudo nft list ruleset, затем активную конфигурацию firewalld sudo firewall-cmd --list-all (если служба используется) и доступ к нужному порту с другого доверенного устройства. Оставьте текущий SSH-сеанс открытым, пока не проверите новый. Если доступ пропал, восстановите правило через консоль провайдера или заранее подготовленный откат; не отключайте межсетевой экран целиком в качестве проверки.
  6. После изменения правил проверьте удалённый доступЕсли сервер доступен только через SSH, заранее откройте отдельную проверочную сессию и обеспечьте доступ к консоли. После точечной корректировки firewalld/nftables проверьте подключение SSH и нужных служб, затем сохраните правила в поддерживаемом формате. Если связь пропала, используйте консоль для возврата исходной конфигурации, а не автоматический сброс всех правил.
  7. Состояние обеих служб
    Linux · Терминал (Bash)КомандаНужен sudo
    Состояние обеих служб.
    sudo systemctl status firewalld nftables

#Диагностика

Проверьте, что запущено: systemctl is-active firewalld nftables. Текущие правила: sudo nft list ruleset и sudo firewall-cmd --list-all. Если активны оба сервиса, отключите один. Правила firewalld видны в таблицах inet firewalld; свои таблицы nft от пользователя firewalld не трогает, если они в других таблицах, но пересечения по хукам влияют на порядок.

#Вариант 1: firewalld

Отключите nftables: sudo systemctl disable --now nftables. Открывайте порты через firewalld: sudo firewall-cmd --permanent --add-port=8080/tcp, службы: --add-service=http, затем sudo firewall-cmd --reload. Для особых случаев используйте rich rules или direct-правила: firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -s 203.0.113.5 -j DROP. Проверка: sudo firewall-cmd --list-all.

#Вариант 2: чистый nftables

Отключите firewalld: sudo systemctl disable --now firewalld и (по желанию) sudo systemctl mask firewalld. Включите nftables: sudo systemctl enable --now nftables. Правила храните в /etc/sysconfig/nftables.conf или /etc/nftables/*.nft; применяйте sudo nft -f /etc/sysconfig/nftables.conf. Проверьте синтаксис: sudo nft -c -f файл. Не забудьте разрешить SSH до включения политики drop, иначе потеряете доступ.

Linux · Терминал (Bash)КомандаНужен sudo
Показывает, какой сервис управляет брандмауэром, и текущие правила.
systemctl is-active firewalld nftables
sudo firewall-cmd --list-all
sudo nft list ruleset | head -50

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.