Вопрос или проблема
Я получил ошибку, которую не могу решить при настройке зоны по умолчанию в firewalld. Я добавил интерфейс с помощью
firewall-cmd --zone=public --change-interface=ens3
и затем увидел, что активна зона по умолчанию – публичная.
Затем я выполнил firewall-cmd --reload
*ошибка: Command_failed: ‘usr/sbin/ip6tables-restore -w -n’ не удалась: ip6tables-restore v1.8.2 (nf_tables): строка 4: Rule_Replace не удалась (Нет такого файла или директории: правило в цепочке INPUT)
Таким образом, ip6tables-restore пытается что-то сделать при перезапуске firewalld. Но когда я ввожу “iptables -L”, я получаю “bash: iptables: команда не найдена.”
firewall-cmd --list-all
Ошибка: Неверная_зона
Но зона показывалась несколько минут назад…
Если вы говорите о CentOS 8, вам может быть интересно узнать, что RHEL (а также CentOS) переходит с iptables на nftables. В RHEL/CentOS 8 это означает, что firewalld
фактически использует nftables, в то время как старые пакеты iptables
и ip6tables
все еще доступны, если вам нужно вернуться к iptables.
Попробуйте nft list ruleset
, чтобы увидеть правила зон, созданные firewalld
, и подумайте дважды, прежде чем использовать одновременно как ip[6]tables-restore
, так и firewalld
.
Ответ или решение
Ошибка Firewalld: Invalid Zone
При настройке службы firewalld в CentOS 8, вы столкнулись с ошибкой "Error: Invalid_zone". Судя по описанию вашей проблемы, давайте внимательно разберёмся с возможными причинами и решениями.
1. Контекст проблемы
Вы успешно добавили интерфейс ens3
в зону public
с помощью команды:
firewall-cmd --zone=public --change-interface=ens3
После этого вы перезагрузили конфигурацию firewalld с помощью:
firewall-cmd --reload
Однако, именно на этом этапе возникла ошибка, связанная с ip6tables
. Сообщение об ошибке гласит:
error: Command_failed: 'usr/sbin/ip6tables-restore -w -n' failed: ip6tables-restore v1.8.2 (nf_tables): line 4: Rule_Replace failed (no such file or directory: rule in chain INPUT)
Также возвращение к команде iptables -L
было не успешным, вы получили сообщение о том, что команда не найдена.
2. Причины ошибок
Переход на nftables: В CentOS 8 произошло перемещение с iptables на nftables. Это означает, что firewalld теперь использует nftables для обработки правил файрвола. Ошибка Invalid_zone
может указывать на проблемы с определением правил зоны или их несовместимость.
Оборудование или конфигурация интерфейса: Возможно, интерфейс ens3
неправильно настроен или не располагает необходимыми разрешениями для участия в зоне public
.
3. Шаги для устранения проблем
Проверьте зоны firewalld:
Сначала проверьте, какие зоны доступны в вашей конфигурации firewalld:
firewall-cmd --get-zones
Затем, чтобы увидеть список правил, связанных с вашими зонами, используйте:
nft list ruleset
Это позволит вам убедиться, что ваши правила действительно существуют и соответствуют ожидаемым уровням доступа.
Устранение конфликтов между iptables и nftables: Если вы используете firewalld, рекомендуется полностью исключить использование iptables. В CentOS 8, для работы с файрволом, используйте nftables и firewalld. Проверьте, активны ли службы iptables и ip6tables:
systemctl status iptables
systemctl status ip6tables
Если они активны, деактивируйте их:
systemctl stop iptables
systemctl disable iptables
systemctl stop ip6tables
systemctl disable ip6tables
Перезагрузка firewalld: После остановки служб iptables попробуйте перезагрузить firewalld снова:
firewall-cmd --reload
4. Заключение
Ошибки, связанные с firewalld и несовпадением зон, могут быть сложными, особенно при использовании миграции на новые инструменты, такие как nftables. Убедитесь, что ваша система правильно настроена, и избегайте одновременной работы iptables и firewalld. При возникновении новых трудностей, проверьте логи системы или запустите команды в увеличенном режиме детализированной информации, чтобы лучше диагностировать проблему.
Это руководство должно помочь вам устранить ошибку, а также уверенно настроить firewalld в вашей системе.