Подробное руководство по команде traceroute в Linux
Время прочтения: 3 мин.
7

    Описание команды traceroute

    Команда traceroute позволяет отслеживать маршрут, который проходят сетевые пакеты данных от вашего компьютера до указанного сетевого хоста. Она использует поле TTL (время жизни) протокола IP и пытается получить ответ ICMP TIME_EXCEEDED от каждого шлюза на пути к хосту. Эта команда полезна для диагностики сетевых проблем, позволяя анализировать, на каком этапе пакеты теряются или задерживаются.

    Синтаксис

    traceroute [-46dFITUnreAV] [-f first_ttl] [-g gate,...] 
    	[-i device] [-m max_ttl] [-p port] [-s src_addr] 
    	[-q nqueries] [-N squeries] [-t tos] 
    	[-l flow_label] [-w waittimes] [-z sendwait] [-UL] [-D] 
    	[-P proto] [--sport=port] [-M method] [-O mod_options] 
    	[--mtu] [--back] host [packet_len]

    Изучив синтаксис, становится очевидным, что команда предлагает множество опций для настройки трассировки. Это позволяет пользователю адаптировать поведение программы под свои специфические требования, например, изменив количество отправляемых пакетов или применив разные протоколы.

    Опции

    Я перечислю ряд параметров, которые часто применяю, а дополнительные опции будут добавлены в примеры.

    • -4, -6: Явно указывает использовать IPv4 или IPv6 для трассировки в сетях, где имеется поддержка обоих протоколов, чтобы избежать конфликтов.
    • -I, --icmp: Использовать ICMP ECHO. Этот метод часто применяется для обхода ограничений, наложенных некоторыми сетями на UDP-пакеты.
    • -T, --tcp: Использовать TCP SYN. Такой подход может быть более эффективным в некоторых сетевых условиях, особенно при наличии фильтров на ICMP.
    • -d, --debug: Включить отладку на уровне сокетов полезно для сетевых администраторов, которые стремятся получить больше информации о процессе трассировки.
    • -F, --dont-fragment: Запретить фрагментацию пробных пакетов для исследования MTU (Maximum Transmission Unit) на каждом узле.
    • -m max_ttl, --max-hops=max_ttl: Устанавливает максимальное количество переходов (максимальное значение времени жизни пакета TTL), которое будет проверять traceroute. По умолчанию это значение равно 30.
    • -p port, --port=port: Указать порт для UDP или ICMP трассировки. Выбор нестандартного порта может помочь избежать блокировок со стороны маршрутизаторов.

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

    Простой пример трассировки

    traceroute example.com

    Этот базовый пример демонстрирует, как отслеживать маршрут до хоста с именем example.com. Он может быть использован как отправная точка для дальнейшей диагностики.

    Использование TCP для трассировки

    traceroute -T example.com

    Команда с опцией -T позволяет использовать TCP в качестве протокола для проб, что поможет обойти некоторые ограничения, накладываемые межсетевыми экранами.

    Указание конкретного порта

    traceroute -p 80 example.com

    В этом примере мы указываем порт 80, который обычно используется для HTTP, чтобы получить информацию о маршруте к веб-серверу.

    Трассировка с ICMP

    traceroute -I example.com

    Использование ICMP для трассировки может быть полезным в случаях, когда другие методы не работают, например, из-за блокировок на UDP.

    Комбинирование опций

    traceroute -m 10 -w 5 -U -s 192.168.0.1 -n -i enp0s1 example.com

    Объяснение параметров:

    • -m 10: Устанавливает максимальное количество переходов (hop) до 10, чтобы ограничить объем выводимых данных.
    • -w 5: Увеличивает время ожидания для ответа до 5 секунд, что полезно для сетей с высокой латентностью.
    • -U: Использует UDP в качестве протокола как альтернативу TCP.
    • -s 192.168.0.1: Задает собственный исходный IP-адрес для проверки маршрутов из разных сетей.
    • -n: Отключает преобразование IP-адресов в имена хостов, это ускоряет процесс трассировки, избегая задержек из-за DNS-запросов.
    • -i enp0s1: Указывает сетевой интерфейс, с которого будет производиться трассировка. Это предназначено для случаев, когда у вас несколько сетевых интерфейсов.

    Такой подход позволит вам получить детальную информацию о маршруте к целевому хосту и выявить возможные проблемы в сети.

    Базовые рекомендации

    • Если вы сталкиваетесь с проблемами при трассировке, попробуйте использовать опцию -N 1 для уменьшения числа одновременно отправляемых пакетов, чтобы снизить нагрузку на сеть.
    • Для более точного контроля времени ожидания, используйте опцию -w для задания максимально допустимого тайминга, что может помочь выявить узкие места в сети.
    • Некоторые маршрутизаторы могут ограничивать ICMP-ответы, поэтому попробуйте использовать TCP-трассировку с помощью опции -T, чтобы повысить вероятность успешного выполнения запросов.