linux-labs

Вики / Сеть

Диагностика сети (ping, traceroute, mtr)

Концепция Linux СетьТраблшутинг

Лесенка проверки связности — от шлюза до DNS и порта назначения.

«Не работает сеть» — расплывчато. Диагностируй по лесенке уровней, отсекая половину проблем на каждом шаге:

  1. адрес есть? → ip -br a
  2. шлюз доступен? → ping шлюз
  3. интернет (L3)? → ping 8.8.8.8
  4. DNS? → getent hosts имя (см. dns-resolv)
  5. порт назначения? → nc -zv host port

Каждый шаг отвечает на «докуда дошло» — и сужает поиск вдвое.

ping -c4 192.168.1.1             # 4 пакета и стоп (иначе бесконечно)
ping -c4 8.8.8.8                 # связность с интернетом по IP
ping -c4 -W1 host                # таймаут ответа 1с (не ждать долго)
ping -c100 -i0.2 host            # чаще (0.2с) — ловить редкие потери
ping -s1472 -Mdo -c3 host        # проверить MTU/фрагментацию (1472+28=1500)
ping6 -c4 2001:4860:4860::8888   # IPv6

В выводе смотри: потери (packet loss) и разброс (rtt min/avg/max). 0% и стабильный rtt — канал здоров.

traceroute 8.8.8.8               # путь пакетов по хопам (где теряется)
traceroute -n 8.8.8.8            # без DNS (быстрее)
traceroute -T -p 443 host        # TCP-трейс на порт 443 (когда ICMP режут)
mtr 8.8.8.8                      # traceroute + ping в реальном времени (лучший)
mtr -rwc 10 example.com          # отчёт за 10 циклов (для тикетов/переписки)
mtr -T -P 443 host               # mtr по TCP-порту
ip route get 8.8.8.8             # каким маршрутом/интерфейсом реально пойдёт

mtr — главный инструмент: показывает потери на каждом хопе, видно, у кого именно (у тебя, у провайдера, у промежуточного узла) теряются пакеты.

ping IP идёт, ping имени — нет

Сеть работает, DNS не работает. См. dns-resolv: resolvectl status, getent hosts имя, dig @8.8.8.8 имя.

Не пингуется даже шлюз

Локальная проблема: нет адреса/маршрута (ip -br a, ip r), линк down, не та VLAN/подсеть, дубликат IP. Проверь ip и netplan.

Пинг идёт, но сервис недоступен

ICMP проходит, а нужный порт — нет. Проверь порт: nc -zv host port. Дальше — служба слушает (ss) и firewall.

Потери/высокий пинг в середине пути

mtr -rwc 20 покажет, на каком хопе растут потери. Потери только на промежуточном хопе, но не на конечном — обычно норма (роутеры деприоритизируют ICMP к себе). Потери, тянущиеся до конца, — реальная проблема канала.

ICMP заблокирован — ping не показателен

Многие хосты не отвечают на ping намеренно. Проверяй доступность порта через nc и трейсь через traceroute -T -p PORT, а не только ICMP.

«Работает через раз»

Перемежающиеся потери: ping -c100 -i0.2, mtr подольше. Часто — перегрузка канала, дубликат IP в сети или флапающий линк.

ping -c4 шлюз ; ping -c4 8.8.8.8  # L2/L3 связность
mtr -rwc 10 host                  # путь + потери (отчёт)
traceroute -T -p 443 host         # трейс по TCP-порту (ICMP режут)
getent hosts имя                  # DNS
nc -zv host port                  # порт назначения
ip route get IP                   # каким маршрутом пойдёт
# лесенка: адрес → шлюз → интернет → DNS → порт