junior
Как проверить прослушиваемые порты и доступность сервисов?
Проверка прослушиваемых портов — это способ убедиться, что сервис запущен, слушает на ожидаемом адресе и доступен по сети.
Проверка прослушиваемых портов
Пример
# Все TCP-порты в состоянии LISTEN с именами процессов
sudo ss -tlnp
# Пример вывода:
# State Recv-Q Send-Q Local Address:Port Process
# LISTEN 0 128 0.0.0.0:22 users:(("sshd",pid=1234))
# LISTEN 0 100 0.0.0.0:8080 users:(("java",pid=5678))
# LISTEN 0 128 127.0.0.1:5432 users:(("postgres",pid=910))
# UDP-порты
sudo ss -ulnp
# Какой процесс занимает порт 8080
sudo lsof -i :8080
Проверка доступности удалённых сервисов
Пример
# Проверка TCP-порта с помощью nc (netcat)
nc -zv app-server.mybank.local 8080
# Таймаут 3 секунды
nc -zv -w 3 db-master.mybank.local 5432
# Проверка через /dev/tcp (bash built-in)
echo > /dev/tcp/app-server.mybank.local/8080 && echo "Порт открыт" || echo "Порт закрыт"
Сканирование портов с помощью nmap
Пример
# Сканирование конкретных портов
nmap -p 22,80,443,8080,5432 app-server.mybank.local
# Определение сервисов и версий
nmap -sV -p 22,8080,5432 app-server.mybank.local
# Быстрое сканирование подсети
nmap -sn 192.168.1.0/24
Важно для Java-разработчика
При запуске Spring Boot приложения полезно проверять:
Пример
# Убедиться, что приложение слушает нужный порт
ss -tlnp | grep 8080
# Проверить, что приложение привязано к правильному адресу
# 0.0.0.0:8080 — слушает на всех интерфейсах
# 127.0.0.1:8080 — только локально (не доступно извне!)
В Spring Boot это настраивается через:
Пример
server.address=0.0.0.0
server.port=8080
На собеседовании: ключевая пара команд —
ss -tlnpдля локальных портов иnc -zvдля удалённой проверки. Частая ошибка — не понимать разницу между0.0.0.0и127.0.0.1при привязке порта.