Сканирование портов и сетевая диагностика в Linux
Когда сервис не отвечает — первым делом проверяю, доступен ли хост и открыт ли нужный порт. ping даёт базовый ответ на уровне ICMP, но для проверки конкретных портов нужны другие инструменты. Вот набор, который использую в работе.
Telnet
Простейший способ проверить, открыт ли порт:
telnet [адрес] [порт]
Если соединение установилось — порт открыт и сервис слушает. Если сразу закрылось или висит — порт закрыт или файрвол режет трафик.
Netcat
Более гибкий инструмент для работы с TCP/UDP. Установка:
sudo apt install netcat
Проверка порта:
nc -vz [адрес] [порт]
Флаг -v — подробный вывод, -z — только проверить соединение, не передавать данные.
Nmap
Nmap — основной инструмент для сканирования портов. Умеет намного больше, чем просто проверить один порт.
Установка:
sudo apt install nmap
Базовое сканирование
Один порт:
nmap -p 80 192.168.0.101
Диапазон портов:
nmap -p 80-1000 192.168.0.101
Все порты:
nmap -p "*" 192.168.0.101
Пример вывода для типичного сервера:
Starting Nmap 4.20 at 2009-11-01 12:42 MST
Interesting ports on server.com (192.168.20.35):
Not shown: 1691 closed ports
PORT STATE SERVICE
25/tcp open smtp
80/tcp open http
TCP и UDP
Сканирование TCP:
nmap -sT 192.168.0.101
UDP:
nmap -sU 192.168.0.101
Комбинированное — конкретные TCP и UDP порты одновременно:
nmap -p U:53,79,113,T:21-25,80,443,8080 192.168.0.101
Стелс-сканирование
Отправляет SYN-пакет, но не завершает handshake — меньше следов в логах:
nmap -sS 192.168.0.101
Определение ОС
Анализирует характеристики TCP/IP-стека и пытается определить операционную систему:
sudo nmap -sV -O 192.168.0.101
Сканирование подсети
Найти все активные хосты в сети:
nmap -sn 192.168.1.0/24
Несколько адресов сразу:
nmap 192.168.0.101 192.168.0.102 192.168.0.107
Или короче:
nmap 192.168.0.101,102,107
Список хостов из файла:
nmap -iL hosts.txt
Исключение хостов
nmap 192.168.1.0/24 --exclude 192.168.1.1
nmap 192.168.1.0/24 --exclude 192.168.1.1,2,3
nmap 192.168.1.0/24 --excludefile exclude.txt
Сохранение результатов
nmap -oN results.txt 192.168.0.101
ss — анализ сетевых соединений
ss входит в пакет iproute2 и заменяет устаревший netstat. Работает быстрее, показывает больше деталей.
Все TCP-соединения с подробностями и именами процессов:
ss -ntap
Все соединения на порту 80:
ss -at '( sport = :80 )'
Удобно для быстрой проверки — что слушает, какой процесс держит порт, есть ли подозрительные соединения.
Если хочешь обсудить похожую задачу — пиши на [email protected] или заходи на 1it.pro.