Диагностика сети Linux: от ping до tcpdump
Последовательный подход к сетевым проблемам: интерфейс, маршрут, DNS, порт, пакеты.
· 9 мин чтения
Идём снизу вверх
Сетевую проблему удобно искать по уровням: интерфейс и адрес, маршрут, разрешение имён, доступность порта, содержимое трафика. Каждый шаг исключает целый класс причин.
Интерфейс и маршрут
ip -br address
ip route
ip route get 1.1.1.1Первая команда показывает адреса и состояние интерфейсов, вторая — таблицу маршрутов. ip route get отвечает на главный вопрос: через какой интерфейс и шлюз уйдёт пакет к конкретному адресу.
ping и его пределы
ping проверяет ICMP, а не работоспособность сервиса. Успешный ping не означает, что открыт нужный порт, а неудачный — что хост недоступен: ICMP часто фильтруется.
ping -c 4 192.0.2.10
mtr -rwc 20 example.commtr объединяет ping и traceroute и показывает, на каком узле появляются потери.
Имена и DNS
Если по IP всё работает, а по имени нет — проблема в разрешении имён.
resolvectl status
dig example.com +short
dig @1.1.1.1 example.comСравнение ответа системного резолвера и стороннего сервера быстро показывает, виноват ли локальный DNS.
Порты и сокеты
ss -tulpn
nc -vz example.com 443
curl -vI https://example.comss -tulpn показывает, какие процессы слушают порты на этой машине. nc -vz проверяет, принимается ли TCP-соединение с удалённой.
tcpdump
Когда остальное не помогло, смотрим пакеты.
sudo tcpdump -ni eth0 host 192.0.2.10 and port 443-w capture.pcap) для разбора в Wireshark. Захват без фильтров на загруженном сервере создаёт лишнюю нагрузку.Вывод
Идите по уровням, фиксируйте результат каждого шага и не меняйте несколько параметров сразу. Чаще всего причина находится на первых трёх шагах.
Связанные статьи
Как работает DNS
Рекурсивные и авторитетные серверы, типы записей, кэш и TTL.
TCP против UDP
Чем отличаются протоколы транспортного уровня и как выбрать подходящий.