openSUSE openSUSE

openSUSE: порт закрыт файрволом firewalld

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

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

В openSUSE используется firewalld. Ниже — причины и порядок действий от простого к сложному.

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

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

Сообщение
Сервис недоступен из сети, порт закрыт

В openSUSE по умолчанию работает firewalld (в новых версиях; раньше — SuSEfirewall2). Порт, закрытый брандмауэром, делает сервис недоступным снаружи, хотя локально он работает. Открыть порт можно через YaST или командами firewall-cmd.

Различайте runtime- и permanent-правила: без --permanent правило пропадёт после перезагрузки.

Проверьте зону сетевого интерфейса.

В openSUSE используется firewalld. Откройте порт или службу в нужной зоне и примените правило навсегда.

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

Возможная причинаКак узнатьЧто делать
Нет правилаПорт закрыт.Добавьте.
Не сохраненоRuntime.--permanent.
Другая зонаИнтерфейс.Проверьте.
Служба слушает localhostBind.Измените.

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

  1. Проверьте firewall-cmd --stateОткройте терминал администратора: sudo firewall-cmd --state, затем sudo firewall-cmd --get-active-zones и sudo firewall-cmd --list-all. Запишите имя активной зоны и разрешённые службы, сравните их с нужным портом. Если firewalld не установлен или не запущен, проверьте фактический межсетевой экран системы, а не устанавливайте второй без необходимости.
  2. Проверьте, что служба слушает портНа сервере openSUSE в терминале выполните sudo ss -lntup и найдите нужный номер порта в локальном адресе (например, 0.0.0.0:443 или [::]:443). Если приложение слушает только 127.0.0.1, открытие порта в firewalld само по себе не сделает его доступным извне. Проверьте конфигурацию самой службы и её журнал; не открывайте порт, пока не понятно, какой процесс должен на нём работать.
  3. Добавьте порт с --permanentТолько администратор и только если нужная служба действительно слушает порт: узнайте активную зону sudo firewall-cmd --get-active-zones и текущее правило sudo firewall-cmd --list-all. Для стандартной службы предпочтительнее sudo firewall-cmd --permanent --zone=ИМЯ_ЗОНЫ --add-service=ИМЯ_СЛУЖБЫ (замените оба имени фактическими), затем sudo firewall-cmd --reload. Проверьте правило, запомните его для отката через --remove-service; не открывайте публичный доступ к административным портам без ограничения IP.
  4. Примените --reloadПосле изменения правил в постоянной конфигурации firewalld выполните sudo firewall-cmd --reload. Сначала убедитесь, что ваш текущий доступ по SSH разрешён правилами и есть консоль провайдера на случай ошибочной блокировки. Затем проверьте sudo firewall-cmd --get-active-zones и sudo firewall-cmd --zone=ИМЯ_ЗОНЫ --list-all, заменяя имя зоны из первого вывода. Если порт не появился, проверьте, в какую зону добавлялось правило.
  5. Проверьте с другой машиныС другого устройства в той же сети попробуйте подключиться к точному адресу и порту службы, например curl -I http://АДРЕС:ПОРТ для HTTP (подставьте действительные адрес и порт). Если локально служба отвечает, но снаружи нет, проверьте межсетевой экран, роутер и правила облачного провайдера. Не открывайте небезопасный порт в интернет только ради тестирования.
  6. Определите зону и действующие сервисы
    Linux · Терминал (Bash)КомандаНужен sudo
    Определите зону и действующие сервисы. Не меняйте правила до проверки, какой интерфейс подключён к сети.
    sudo firewall-cmd --get-active-zones
    sudo firewall-cmd --list-all

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

Состояние: sudo systemctl status firewalld, sudo firewall-cmd --state. Зона и правила: sudo firewall-cmd --get-active-zones, sudo firewall-cmd --list-all. Убедитесь, что служба слушает: sudo ss -ltnp | grep :8080. Если слушает только 127.0.0.1, брандмауэр ни при чём — настройте приложение на 0.0.0.0.

#Открытие портов

Порт: sudo firewall-cmd --permanent --add-port=8080/tcp, диапазон: --add-port=5000-5100/tcp, служба: --add-service=http (--get-services покажет доступные). Применить: sudo firewall-cmd --reload. Для определённой зоны: --zone=public. Закрыть: --remove-port=8080/tcp. Ограничить источник: sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.0/24" port port="22" protocol="tcp" accept'.

#YaST и проверки

Графически: sudo yast2 firewall → «Allowed Services» → «Add». Проверьте внешний доступ с другой машины: nc -zv IP 8080 или онлайн-проверка. Для NAT и проброса: --add-forward-port=port=80:proto=tcp:toport=8080. Если настроен роутер или облачный Security Group, откройте порт и там. На серверах зону public не заменяйте на trusted. Для SuSEfirewall2 в старых системах используйте /etc/sysconfig/SuSEfirewall2.

Linux · Терминал (Bash)КомандаНужен sudo
Проверка порта и правил вместо безусловного добавления постоянного разрешения на 8080/tcp.
sudo ss -lntp
sudo firewall-cmd --list-all

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

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

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