Какой командой можно определить маршрут прохождения пакетов от одного хоста к другому?

«Какой командой можно определить маршрут прохождения пакетов от одного хоста к другому?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для трассировки маршрута (traceroute) используется утилита traceroute в Linux/macOS или tracert в Windows. Она отправляет серию пакетов с увеличивающимся TTL (Time To Live), чтобы выявить каждый хоп (роутер) на пути.

Базовое использование:

traceroute 8.8.8.8

Практические примеры для диагностики:

  1. Использование TCP или UDP вместо ICMP (полезно, если промежуточные роутеры блокируют ICMP):
    traceroute -T -p 443 google.com  # Использует TCP SYN на порт 443
  2. Указание сетевого интерфейса в многодомной системе:
    traceroute -i eth1 10.0.2.1
  3. Более современная и информативная альтернатива — mtr (My TraceRoute), которая объединяет ping и traceroute, показывая непрерывную статистику потерь и задержек на каждом хопе:
    mtr --report google.com

Эти инструменты помогают локализовать проблему: высокая задержка или потери на конкретном хопе указывают на проблемного интернет-провайдера или перегруженный роутер.