#Когда возникает проблема и к каким системам относится
systemctl показывает active (running), но веб-сайт, API или другой сервис не отвечает. Диагностика отделяет прослушивание порта, адрес привязки, брандмауэр и зависшее приложение. Rocky Linux с systemd и сетевой службой; unit active не гарантирует, что порт слушает, маршрутизация работает или приложение прошло внутреннюю проверку здоровья.
#Основные причины: как отличить одну от другой
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Процесс не слушает ожидаемый портUnit active, но сокет отсутствует или порт иной | ss не показывает LISTEN | Проверить конфигурацию приложения и события запуска |
| Приложение слушает только localhostПорт доступен на 127.0.0.1, но не извне | curl localhost успешен, внешний — нет | Проверить обоснованный listen address и доступ через прокси |
| Проблема за пределами процессаfirewalld, TLS, прокси или балансировщик блокируют трафик | Локальный ответ успешен, внешний — нет | Сверить маршрут трафика и правила, не отключая firewall |
#Пошаговая диагностика и устранение неисправности
- Шаг 1. Назовите конкретную службу и её способ проверкиОткройте терминал сервера и выясните, какой unit должен обслуживать запрос, на каком порту и по какому протоколу. Active (exited) для oneshot отличается от active (running).Linux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
UNIT="имя.service"systemctl show "$UNIT" -p ActiveState -p SubState -p MainPID -p Typesystemctl status "$UNIT" --no-pager
- Шаг 2. Найдите ошибки приложения, а не только systemdПосмотрите журнал за текущую загрузку. Даже запущенный процесс может сообщать database unavailable, listen failed или exceeded limit; если журнал пуст, приложение может вести отдельный закрытый файл логов.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
UNIT="имя.service"journalctl -b -u "$UNIT" --no-pager -n 110
- Шаг 3. Проверьте, какой порт реально слушаетсяКоманда ss показывает локальный адрес и процесс; 127.0.0.1 означает только локальные подключения, 0.0.0.0 — IPv4 на всех интерфейсах. Не меняйте привязку на все интерфейсы без оценки безопасности.
- Терминал Rocky Linux; нужны административные праваLinux · Терминал (Bash)КомандаНужен sudoТерминал Rocky Linux; нужны административные права. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
sudo ss -lntp
- Шаг 4. Протестируйте приложение на самом сервереДля HTTP укажите существующий локальный URL; curl -I отправляет HEAD, который некоторые приложения не поддерживают, поэтому код 405 не равен отсутствию сервиса. Для TCP без HTTP используйте утилиту соответствующего протокола.Linux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
curl -v --connect-timeout 5 http://127.0.0.1:8080/
- Шаг 5. Сопоставьте путь с обратным прокси и клиентомЕсли локальный запрос успешен, проверьте внешний адрес, DNS, порт и наличие обратного прокси. Сравните логи клиента и сервера по времени; не подменяйте тест отключением TLS-проверок для реальных пользователей.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
ip -br addrip routegetent hosts имя.сервера.example
- Шаг 6. Проверьте firewalld только для нужного сервисаfirewall-cmd --list-all показывает активную зону и разрешённые сервисы/порты, но не означает, что решение — открыть порт всем. Если firewalld не установлен или отключён, ищите другие правила и сетевой экран провайдера.Linux · Терминал (Bash)КомандаНужен sudoТерминал Rocky Linux; нужны административные права. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
sudo firewall-cmd --statesudo firewall-cmd --get-active-zonessudo firewall-cmd --list-all
- Шаг 7. Проверьте прикладную готовность, а не статус activeПосле адресного исправления повторите запрос с сервера и другого разрешённого клиента; сравните код HTTP, содержимое ответа и возможность выполнить типичную операцию. Для API может быть отдельная проверка готовности.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
UNIT="имя.service"systemctl status "$UNIT" --no-pagercurl --connect-timeout 5 -i http://127.0.0.1:8080/
#Как убедиться, что неисправность устранена
Сервер отвечает на контрольный запрос с нужного клиента, а не только имеет active; ошибок в журнале нет, сетевые правила по-прежнему соответствуют политике безопасности.
#Если предложенный способ не сработал
Если локальный ответ есть, а внешний отсутствует, проверьте прокси и маршрутизацию; если локального нет — конфигурацию приложения и его зависимые службы. Не открывайте порт во все сети без необходимости.