Как исправить FirewallD на сервере LinuxЗапустите и включите службу, просмотрите журналы на наличие ошибок, устраните конфликты с другими межсетевыми экранами (UFW, службами iptables, nftables), исправьте зоны и правила, затем перезагрузите и протестируйте.
Используйте systemctl и команду firewall для диагностики, проверки конфигурации и безопасного внесения постоянных изменений без нарушения работы системы. SSH доступ. Если вы ищете, как исправить FirewallD на сервере Linux, это руководство расскажет вам о быстрых решениях и подробном устранении неполадок.
Мы проверим работу сервиса, изучим журналы, исправим проблемы с зонами/правилами, разрешим конфликты и применим лучшие практики, чтобы ваш брандмауэр Linux защищал сервисы, не блокируя легитимный трафик.
Контрольный список для быстрого устранения неполадок (используйте безопасно). SSH)
Прежде чем предпринимать какие-либо серьезные действия, попробуйте эти безопасные и распространенные решения. Держите консоль открытой или убедитесь, что она не закрыта. SSH Разрешен (порт 22) во избежание блокировок.

- Проверьте состояние сервиса и запустите его при необходимости.
- Проверьте журналы на наличие непосредственных признаков ошибок.
- Отключите конфликтующие межсетевые экраны (UFW, службы iptables, службы nftables).
- Проверьте и перезагрузите конфигурацию.
- Убедитесь, что ваш интерфейс находится в правильной зоне и разрешены порты/службы.
# 1) Service status and start
sudo systemctl status firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
# 2) Logs
sudo journalctl -u firewalld -b --no-pager
# 3) Conflicts (example fixes)
sudo systemctl stop ufw 2>/dev/null; sudo systemctl disable ufw 2>/dev/null
sudo systemctl stop iptables ip6tables ebtables 2>/dev/null; sudo systemctl disable iptables ip6tables ebtables 2>/dev/null
sudo systemctl stop nftables 2>/dev/null; sudo systemctl disable nftables 2>/dev/null
# 4) Validate and reload rules
sudo firewall-cmd --check-config
sudo firewall-cmd --reload
# 5) Make sure SSH is allowed
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --reloadКак работает FirewallD (чтобы вы не исправили ошибку)
- Зоны: Уровни логического доверия (публичный, внутренний, доверенный, DMZ). Ваш интерфейс (eth0, ens3 и т. д.) должен быть привязан к правильной зоне.
- Временное использование против постоянного использования: Изменения без
--permanentДействует до следующей перезагрузки или обновления. Сохранение времени выполнения на диск с помощью--runtime-to-permanent. - Бэкенды: В современных дистрибутивах в качестве бэкэнда используется nftables; в более старых может использоваться iptables. Не используйте другие брандмауэры. managers наряду с firewalld.
# Inspect zones and mappings
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all --zone=public
# Make permanent changes persist
sudo firewall-cmd --runtime-to-permanentУстранение проблемы с запуском FirewallD
Если firewalld не запускается, это обычно происходит из-за конфликта, поврежденной конфигурации или проблем с D-Bus/бэкэндом.
# Check and unmask, then start
sudo systemctl is-enabled firewalld
sudo systemctl is-active firewalld
sudo systemctl unmask firewalld
sudo systemctl daemon-reload
sudo systemctl restart firewalld
# Look for errors (permissions, D-Bus, conflicts)
sudo journalctl -xeu firewalld --no-pager
# Verify D-Bus is healthy (do NOT restart D-Bus on remote production unless you have console access)
systemctl status dbusЕсли в логах упоминаются ошибки nft или iptables, остановите и отключите другие межсетевые экраны. managers (UFW, службы iptables, nftables) обеспечивают эксклюзивный контроль firewalld. Если конфигурация выглядит поврежденной, проверьте ее и сбросьте до значений по умолчанию (см. ниже).
Устранить проблемы с зонами и правилами.
1) Разместите интерфейс в соответствующей зоне.
# See interfaces active in zones
sudo firewall-cmd --get-active-zones
# Move your interface (e.g., eth0) to "public"
sudo firewall-cmd --zone=public --change-interface=eth0
sudo firewall-cmd --runtime-to-permanent
sudo firewall-cmd --reload
# NetworkManager users can bind zones to connections:
nmcli connection show
sudo nmcli connection modify <CONNECTION_NAME> connection.zone public
sudo nmcli connection up <CONNECTION_NAME>2) Откройте нужные порты/службы.
- Сервисы: Совместимые пакеты протоколов (ssh, http, https, dns, smtp).
- Порты: Исходный протокол/порт (например, TCP/8080).
# Allow common services
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
# Or open explicit ports
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
# Apply
sudo firewall-cmd --reload
# Check
sudo firewall-cmd --zone=public --list-all3) Устранить путаницу между выполнением программы и перманентным устранением неполадок.
Правила добавлены без --permanent Исчезают после перезагрузки или повторной загрузки. Используйте любой из способов. --permanent с самого начала или сохраните правила выполнения на диск:
sudo firewall-cmd --runtime-to-permanent
sudo firewall-cmd --reload4) Проверьте и сбросьте конфигурацию.
# Validate
sudo firewall-cmd --check-config
# Reset to distribution defaults (back up first)
sudo cp -a /etc/firewalld /etc/firewalld.backup.$(date +%F)
sudo rm -rf /etc/firewalld
sudo dnf reinstall -y firewalld || sudo apt-get install --reinstall -y firewalld
sudo systemctl restart firewalldВ качестве альтернативы, если служба не запускается, используйте инструмент для работы в автономном режиме:
sudo firewall-offline-cmd --set-default-zone=public
sudo firewall-offline-cmd --add-service=ssh
sudo systemctl restart firewalldРазрешение конфликтов с другими межсетевыми экранами
- UFW (Ubuntu/Debian)
- службы iptables (RHEL/CentOS 7)
- nftables service (RHEL 8+/Alma/Rocky/Debian/Ubuntu)
# Stop/disable other managers so firewalld is authoritative
sudo systemctl stop ufw nftables iptables ip6tables ebtables
sudo systemctl disable ufw nftables iptables ip6tables ebtables
# Ensure firewalld takes control
sudo systemctl restart firewalld
sudo firewall-cmd --stateПримечание: Группы безопасности облачных сервисов (AWS, Azure, GCP, DigitalOcean) могут блокировать трафик, даже если firewalld настроен правильно. Проверьте правила входящего трафика вашего провайдера.
Расширенный поиск и устранение неисправностей
Проверьте отказы SELinux.
# Look for AVC denials related to firewalld or services
sudo ausearch -m avc -ts recent 2>/dev/null | tail -n 50
sudo journalctl -t setroubleshoot --no-pager | tail -n 50Если вы видите отказы SELinux для порта службы, используйте утвержденный тип или добавьте его через semanage port (не путем отключения SELinux).
Подтвердите, что служба действительно прослушивает соединение.
# Is the application listening on the expected port?
sudo ss -tulpen | grep -E ':80|:443|:22|:8080'
# Test connectivity from local and remote
curl -I http://127.0.0.1/
nc -vz your.server.ip 80Временно увеличьте уровень логирования firewalld.
# Run with debug in foreground (for testing sessions)
sudo systemctl stop firewalld
sudo firewalld --debug
# Ctrl+C to stop, then:
sudo systemctl start firewalldПрактические примеры, которые вы можете использовать повторно.
Разрешить доступ веб-серверу (HTTP/HTTPS)
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reloadКарантин SSH к доверенному IP-адресу
# Allow SSH only from 203.0.113.10
sudo firewall-cmd --permanent --zone=public \
--add-rich-rule='rule family="ipv4" source address="203.0.113.10" service name="ssh" accept'
# Drop others (ensure you have console access first!)
sudo firewall-cmd --permanent --zone=public \
--add-rich-rule='rule family="ipv4" service name="ssh" drop'
sudo firewall-cmd --reloadПереадресация портов и маскировка (NAT)
# Enable masquerade in the public zone
sudo firewall-cmd --permanent --zone=public --add-masquerade
# Forward external 8080 -> internal 10.0.0.5:80
sudo firewall-cmd --permanent --zone=public \
--add-forward-port=port=8080:proto=tcp:toaddr=10.0.0.5:toport=80
sudo firewall-cmd --reloadРекомендации по обеспечению стабильности и безопасности
- Всегда позволяют SSH Перед внесением изменений. Проверьте результаты во время второй сессии.
- Используйте зоны для разделения интерфейсов, обращенных к глобальной сети, и внутренних интерфейсов.
- При наличии возможности отдавайте предпочтение сервисам, а не прямым портам; они отслеживают изменения протокола.
- Внесите необратимые изменения и сделайте резервную копию.
/etc/firewalldдо обновлений. - Избегайте использования нескольких межсетевых экранов одновременно. managers. Firewalld должен быть авторитетным.
- Документируйте правила и используйте систему контроля версий для
/etc/firewalld/*.xml.
Нужна помощь? Вкл. YouStableАвтора manageVPS и выделенные серверыНаша служба поддержки может провести аудит вашего FirewallD, устранить конфликты и согласовать правила с вашей системой безопасности и группами безопасности облака без простоев.
Когда следует связаться с вашим хостингом
- Firewalld не запускается даже после отключения конфликтов и проверки конфигурации.
- Вы оказались заперты снаружи или боитесь потерять доступ. SSH доступ.
- Сложные потребности: Проектирование многосетевых зон, NAT/переадресация или соответствие нормативным требованиям.
- Вам необходим круглосуточный мониторинг и реагирование на инциденты (рекомендуется для производственной среды).
Если вы размещаете свой сайт через YouStableОткройте заявку, и мы проверим ваши журналы, правила, интерфейсы и межсетевые экраны провайдера от начала до конца. Мы устраняем первопричину, а не только симптомы.
Часто задаваемые вопросы (FAQ)
Почему FirewallD не запускается на моем сервере?
Чаще всего это происходит из-за конфликтов с сервисами UFW/iptables/nftables, поврежденных конфигурационных файлов или ошибок бэкэнда/D-Bus. Проверьте журналы с помощью... journalctl -xeu firewalldотключите другие брандмауэры managers, проверить с помощью firewall-cmd --check-configи перезапустите. Если настройки повреждены, сбросьте их до значений по умолчанию и примените правила заново.
Как мне открыть порт в FirewallD на постоянной основе?
Используйте --permanent Укажите свою зону, затем перезагрузите. Пример: firewall-cmd --zone=public --add-port=8080/tcp --permanent последующей firewall-cmd --reloadОтдавайте предпочтение сервисам (например, http/https), если они доступны.
Как сбросить настройки FirewallD до заводских?
Резервное копирование /etc/firewalldЗатем переустановите или восстановите конфигурацию по умолчанию: cp -a /etc/firewalld /etc/firewalld.backup.$(date +%F)Удалите каталог, переустановите firewalld и перезапустите службу. Тщательно пересоздайте правила и протестируйте. SSH доступа.
В чём разница между правилами, действующими во время выполнения, и постоянными правилами?
Правила, действующие во время выполнения, применяются немедленно, но исчезают после перезагрузки. Постоянные правила сохраняются на диске и загружаются при загрузке системы. Можно использовать любой из этих вариантов. --permanent при добавлении правил или запуске firewall-cmd --runtime-to-permanent чтобы сохранить текущие активные процессы.
Как проверить, какую зону использует мой интерфейс?
Run firewall-cmd --get-active-zones Чтобы просмотреть интерфейсы по зонам. Если интерфейс находится в неправильной зоне, измените его с помощью... firewall-cmd --zone=public --change-interface=eth0 (заменить eth0 (при необходимости), сделайте его постоянным и перезагрузите.