AlmaLinux AlmaLinux

AlmaLinux: порт закрыт firewalld, сервис недоступен снаружи

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

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

Если служба на AlmaLinux работает, но снаружи недоступна, порт закрыт firewalld. Проверьте, что служба слушает порт (ss -ltnp), откройте его через firewall-cmd с флагом --permanent, перезагрузите правила и проверьте группы безопасности облака и NAT роутера.

В этой статье
  1. Как устроено
  2. Проверка по шагам
  3. Частые ловушки

#Как устроено

В AlmaLinux по умолчанию включён firewalld. Он работает с зонами: каждому сетевому интерфейсу назначена зона (обычно public), в зоне перечислены разрешённые службы и порты. Всё остальное входящее блокируется. Поэтому только что установленный nginx, SSH на другом порту или игровой сервер будут недоступны из сети, пока вы их не разрешите. Правила бывают временными (runtime, пропадают после перезагрузки) и постоянными (--permanent).

Возможная причинаКак узнатьЧто делать
Забыли --permanentПравило временное.Всё работает до перезагрузки.Добавьте правило с --permanent или выполните firewall-cmd --runtime-to-permanent.
Служба слушает только localhostВ конфигурации bind 127.0.0.1.ss показывает 127.0.0.1:порт.Измените адрес прослушивания на 0.0.0.0 или нужный интерфейс.
Интерфейс в другой зонеПравило добавлено в public, а интерфейс в internal.--get-active-zones показывает другую зону.Добавьте правило в нужную зону через --zone=.
SELinux запрещает привязку к портуНестандартный порт.В журнале записи AVC.sudo semanage port -a -t http_port_t -p tcp 8080.
Фильтр на стороне хостингаГруппа безопасности, внешний файрвол.Локально порт открыт, снаружи нет.Откройте порт в панели провайдера.
Нет проброса портаСервер за домашним роутером.Снаружи недоступен.Настройте перенаправление портов на роутере.

#Проверка по шагам

  1. Убедитесь, что служба запущена и слушает портКоманда ss -ltnp. Если служба слушает только 127.0.0.1, снаружи она недоступна независимо от файрвола.
  2. Проверьте состояние firewalld и зонуОткройте терминал администратора: sudo firewall-cmd --state, затем sudo firewall-cmd --get-active-zones и sudo firewall-cmd --list-all. Запишите имя активной зоны и разрешённые службы, сравните их с нужным портом. Если firewalld не установлен или не запущен, проверьте фактический межсетевой экран системы, а не устанавливайте второй без необходимости.
  3. Посмотрите открытые порты и службыНа сервере проверьте локально sudo ss -lntup: найдите нужный TCP/UDP-порт и адрес прослушивания. Значение 127.0.0.1:ПОРТ означает доступ только с самого сервера; 0.0.0.0 или [::] — прослушивание на интерфейсах с учётом дополнительных правил. Если порта нет, сначала запускайте/исправляйте службу, а не открывайте межсетевой экран.
  4. Откройте порт или службуТолько администратор и только если нужная служба действительно слушает порт: узнайте активную зону 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.
  5. Перезагрузите правилаСохраните открытые файлы и завершите рабочие процессы. Перезагрузите систему штатным способом или командой sudo reboot, если у вас есть права и допустимо прерывать работу сервера. После загрузки повторите операцию, вызвавшую ошибку.
  6. Проверьте снаружиС другого устройства в той же сети попробуйте подключиться к точному адресу и порту службы, например curl -I http://АДРЕС:ПОРТ для HTTP (подставьте действительные адрес и порт). Если локально служба отвечает, но снаружи нет, проверьте межсетевой экран, роутер и правила облачного провайдера. Не открывайте небезопасный порт в интернет только ради тестирования.
  7. Проверьте внешние фильтрыЕсли служба слушает нужный порт и в правильной зоне firewalld он уже разрешён, проверьте остальные уровни сети. С другой машины выполните запрос к публичному IP и порту через curl -v для HTTP(S) либо проверку порта инструментом, принятым в вашей среде. В панели облачного провайдера проверьте входящие правила группы безопасности, у маршрутизатора — проброс порта и NAT, у приложения — адрес привязки (127.0.0.1 не доступен извне). Не отключайте всю защиту ради одного порта. На сервере с SSH перед изменениями сохраните возможность управления через консоль провайдера.
  8. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Что слушает и на каком адресе
    Linux · Терминал (Bash)КомандаНужен sudo
    Что слушает и на каком адресе
    sudo ss -ltnp
    Вариант 2Состояние, активные зоны и текущие правила
    Linux · Терминал (Bash)КомандаНужен sudo
    Состояние, активные зоны и текущие правила
    sudo firewall-cmd --state
    sudo firewall-cmd --get-active-zones
    sudo firewall-cmd --list-all
    Вариант 3Только проверка действующей зоны и уже открытых служб.
    Linux · Терминал (Bash)КомандаНужен sudo
    Только проверка действующей зоны и уже открытых служб. Изменение правил для HTTP/HTTPS без проверки привязки сетевого интерфейса и согласия владельца сервера не запускается.
    sudo firewall-cmd --get-active-zones
    sudo firewall-cmd --list-all
    Вариант 4Проверка прослушиваемого TCP-порта и зоны.
    Linux · Терминал (Bash)КомандаНужен sudo
    Проверка прослушиваемого TCP-порта и зоны. Открывайте конкретный порт только после подтверждения сервиса, назначения зоны и резервного канала доступа.
    sudo ss -lntp
    sudo firewall-cmd --get-active-zones
    Вариант 5Проверка активных правил без удаления.
    Linux · Терминал (Bash)КомандаНужен sudo
    Проверка активных правил без удаления. Удаление порта 8080 может отключить действующий сервис.
    sudo firewall-cmd --list-all
    Вариант 6Проверка с другого компьютера (адрес замените)
    Linux · Терминал (Bash)Команда
    Проверка с другого компьютера (адрес замените)
    nc -vz 203.0.113.10 8080

#Частые ловушки

Не отключайте firewalld целиком ради быстрой проверки (systemctl stop firewalld): сервер сразу окажется открытым для всех. Если нужно проверить, виноват ли файрвол, лучше временно добавить нужный порт и убедиться в результате, а затем оставить только необходимое. Для SSH не закрывайте порт 22, пока не подключились на новый порт из второй сессии.

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

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

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