Инструменты диагностики сети
Собираем набор команд для диагностики сети и учимся читать их вывод на реальных примерах.
Когда «что-то не работает», эти команды отвечают на вопросы по слоям: жив ли узел, резолвится ли имя, что отвечает сервер, какие соединения открыты.
ping — доступен ли узел
Проверяет, отвечает ли хост, и измеряет задержку (RTT). Первый вопрос диагностики: «сервер вообще жив?».
ping example.com
64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=11.8 ms
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=12.1 ms
2 packets transmitted, 2 received, 0% packet loss
0% packet loss и стабильный time — связь хорошая. Большие потери или растущая задержка — проблемы на пути.
traceroute — путь до узла
Показывает все маршрутизаторы на пути. Помогает понять, где теряется связь.
traceroute example.com
1 192.168.1.1 1.2 ms (ваш роутер)
2 10.0.0.1 5.4 ms (узел провайдера)
3 172.16.31.1 12.0 ms
4 93.184.216.34 18.7 ms (цель)
nslookup и dig — что в DNS
Показывают, в какой IP резолвится имя и какие записи есть. Отвечают на вопрос «проблема в DNS или дальше?».
nslookup example.com
dig example.com A # подробнее: запись типа A
dig example.com MX # почтовые серверы
;; ANSWER SECTION:
example.com. 3600 IN A 93.184.216.34
Здесь 3600 — это TTL записи в секундах, A — тип, 93.184.216.34 — адрес.
curl — что отвечает сервер
Главный инструмент для работы с HTTP из терминала. Делает запрос и показывает ответ — без браузера и его кэша.
curl -I https://example.com # только заголовки ответа
curl -v https://example.com # подробно: запрос, TLS, ответ
curl -X POST -d '{"a":1}' -H 'Content-Type: application/json' https://api.example.com/items
HTTP/2 200
content-type: text/html; charset=UTF-8
cache-control: max-age=604800
content-length: 1256
curl -I мгновенно показывает статус и заголовки — удобно проверять редиректы, кэш-политику, тип контента.
netstat / ss — открытые соединения
Показывает, какие соединения и порты сейчас активны на машине. Помогает найти «кто занял порт» и «куда соединён процесс».
netstat -tuln # слушающие TCP/UDP порты
ss -tuln # современная замена netstat (Linux)
lsof -i :3000 # какой процесс занял порт 3000
Proto Local Address State
tcp 0.0.0.0:443 LISTEN
tcp 0.0.0.0:22 LISTEN
tcp 127.0.0.1:5432 LISTEN
Алгоритм диагностики
ping— узел жив? Нет — проблема сети/узла.nslookup/dig— имя резолвится в правильный IP? Нет — проблема DNS.curl -v— сервер отвечает? Какой статус? Проблема с TLS/HTTP?traceroute— если связь рвётся, на каком участке?netstat/ss— локально: слушает ли нужный порт нужный процесс?
Итог
ping— доступность и задержка;traceroute— путь до узла.nslookup/dig— что отдаёт DNS;curl— что отвечает сервер по HTTP.netstat/ss— какие порты и соединения активны локально.- Диагностируй по слоям: сеть → DNS → HTTP → локальные порты.