Инженерные заметки
Linux

Диагностика сети Linux: от ping до tcpdump

Последовательный подход к сетевым проблемам: интерфейс, маршрут, DNS, порт, пакеты.

· 9 мин чтения

Идём снизу вверх

Сетевую проблему удобно искать по уровням: интерфейс и адрес, маршрут, разрешение имён, доступность порта, содержимое трафика. Каждый шаг исключает целый класс причин.

Интерфейс и маршрут

bash
ip -br address
ip route
ip route get 1.1.1.1

Первая команда показывает адреса и состояние интерфейсов, вторая — таблицу маршрутов. ip route get отвечает на главный вопрос: через какой интерфейс и шлюз уйдёт пакет к конкретному адресу.

ping и его пределы

ping проверяет ICMP, а не работоспособность сервиса. Успешный ping не означает, что открыт нужный порт, а неудачный — что хост недоступен: ICMP часто фильтруется.

bash
ping -c 4 192.0.2.10
mtr -rwc 20 example.com

mtr объединяет ping и traceroute и показывает, на каком узле появляются потери.

Имена и DNS

Если по IP всё работает, а по имени нет — проблема в разрешении имён.

bash
resolvectl status
dig example.com +short
dig @1.1.1.1 example.com

Сравнение ответа системного резолвера и стороннего сервера быстро показывает, виноват ли локальный DNS.

Порты и сокеты

bash
ss -tulpn
nc -vz example.com 443
curl -vI https://example.com

ss -tulpn показывает, какие процессы слушают порты на этой машине. nc -vz проверяет, принимается ли TCP-соединение с удалённой.

tcpdump

Когда остальное не помогло, смотрим пакеты.

bash
sudo tcpdump -ni eth0 host 192.0.2.10 and port 443
Подсказка. Фильтруйте захват по хосту и порту и пишите в файл (-w capture.pcap) для разбора в Wireshark. Захват без фильтров на загруженном сервере создаёт лишнюю нагрузку.

Вывод

Идите по уровням, фиксируйте результат каждого шага и не меняйте несколько параметров сразу. Чаще всего причина находится на первых трёх шагах.

Связанные статьи

Сети

TCP против UDP

Чем отличаются протоколы транспортного уровня и как выбрать подходящий.

07.11.20266 минЧитать