Как работает команда traceroute (tracert) в Linux?

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

Ответ

В Linux аналогом tracert является traceroute. Эта утилита определяет маршрут следования IP-пакетов до целевого хоста.

Принцип работы:

  1. TTL (Time To Live): traceroute отправляет серию пакетов (по умолчанию UDP на «неиспользуемый» высокий порт), последовательно увеличивая значение TTL в их заголовках, начиная с 1.
  2. ICMP Time Exceeded: Каждый маршрутизатор на пути уменьшает TTL пакета на 1. Когда TTL достигает 0, маршрутизатор отбрасывает пакет и отправляет обратно отправителю ICMP-сообщение «Time Exceeded». По IP-адресу источника этого сообщения определяется адрес промежуточного узла.
  3. Достижение цели: Процесс повторяется с увеличением TTL, пока пакет не достигнет целевого хоста. Целевой хост, получив пакет на закрытый порт, должен ответить ICMP-сообщением «Port Unreachable», что сигнализирует об окончании трассировки.

Пример использования:

traceroute -n 8.8.8.8

Ключевые опции:

  • -I – использовать ICMP Echo-запросы (ping) вместо UDP.
  • -T – использовать TCP SYN-пакеты (полезно для обхода фильтров).
  • -n – не выполнять reverse DNS-запросы, показывать только IP-адреса (быстрее).

Примечание для DevOps: Трассировка может не работать или показывать звёздочки (*) из-за политик безопасности (брандмауэры, отключённые ICMP-ответы на маршрутизаторах). Для диагностики сетевых проблем в облачных средах (AWS VPC, GCP VPC) также используются Flow Logs и инструменты вроде VPC Reachability Analyzer.