- Как запустить Traceroute в Linux
- О трассировке
- Установка traceroute
- Использование traceroute
- Основное использование
- IPv4 или IPv6
- Тестирование портов
- Скрытие имен устройств
- Предел тайм-аута Traceroute
- Методы исследования
- Установка максимального количества прыжков
- Указание интерфейса
- Маршрутизация пакетов через шлюз
- Страница справки Traceroute
- Заключение
- Linux traceroute через определенный интерфейс
- Трассировка в Linux
- Для CentOS и RedHat
- Для Debian и Ubuntu
- TRACEROUTE
- КРАТКИЙ ОБЗОР
- ОПИСАНИЕ
- ОПЦИИ
- СПИСОК ДОСТУПНЫХ МЕТОДОВ
- ПРИМЕЧАНИЯ
- СМОТРИ ТАКЖЕ
- АВТОР ПЕРЕВОДА
Как запустить Traceroute в Linux
Traceroute — это инструмент в Linux, позволяющий исследовать маршруты сетевых пакетов. Это может помочь вам определить ограничивающий фактор перемещения сетевых пакетов. Traceroute также полезен для устранения проблем с медленными сетевыми подключениями. В этом руководстве показано, как запустить traceroute в Linux.
О трассировке
Traceroute отправляет пакеты данных на целевой компьютер, сервер или веб-сайт и записывает любые промежуточные шаги, через которые проходят пакеты. Результатом команды traceroute будут IP-адреса и доменные имена, через которые проходят пакеты. Эти записи также показывают, сколько времени требуется, чтобы пакеты достигли каждого пункта назначения. Это может объяснить, почему некоторые веб-сайты загружаются дольше, чем другие, поскольку количество переходов трафика может варьироваться.
Traceroute также полезен для отображения локальных сетей. Понимание топологии и подключений локальной сети можно найти при запуске инструмента.
Обратите внимание, что при использовании traceroute некоторые устройства могут плохо взаимодействовать. Это может быть связано с ошибками маршрутизаторов, ограничивающими скорость сообщениями ICMP интернет-провайдерами, устройствами, не настроенными для отправки пакетов ICMP (для предотвращения распределенных DoS-атак) и т.д. Некоторые сети также настроены на блокировку запросов трассировки.
Установка traceroute
Traceroute — мощный инструмент, доступный для всех дистрибутивов Linux. Ниже приводится краткий список команд для установки traceroute в различных дистрибутивах.
Для Debian/Ubuntu и производных:
Для Fedora и производных:
Для openSUSE, SUSE Linux и производных:
Для Arch Linux и производных:
Использование traceroute
В следующих разделах показано, как использовать traceroute в вашей системе Linux.
Основное использование
Основной метод использования traceroute довольно прост. Все, что требуется traceroute, — это пункт назначения для выполнения зондирования. Назначением может быть домен или IP-адрес.
Если сеть настроена на блокировку сигнала traceroute, то этот зонд будет отмечен звездочками.
IPv4 или IPv6
По умолчанию traceroute будет использовать Интернет-протокол по умолчанию, на который настроена ваша система. Чтобы вручную установить версию IP, выполните описанную ниже процедуру.
Чтобы указать traceroute на использование IPv4, используйте флаг -4 :
Чтобы указать traceroute использовать IPv6, используйте флаг -6 :
Тестирование портов
Если есть необходимость протестировать конкретный порт, его можно указать с помощью флага -p . Для отслеживания UDP traceroute будет начинаться с заданного значения и увеличиваться с каждым зондом. Для трассировки ICMP значение будет определять начальное значение последовательности ICMP. Для TCP и других это будет постоянный порт назначения для подключения.
Скрытие имен устройств
В некоторых ситуациях имена устройств в выводе могут сделать вывод беспорядочным. Для большей наглядности вы можете скрыть имена устройств из вывода. Для этого используйте флаг -n :
Предел тайм-аута Traceroute
По умолчанию traceroute ждет 5 секунд, чтобы получить ответ. В определенных ситуациях вы можете изменить время ожидания на больше или меньше 5 секунд. Для этого используйте флаг -w . Обратите внимание, что значение времени — это число с плавающей запятой.
Методы исследования
Есть несколько методов, которые вы можете использовать для проверки удаленного адреса. Чтобы указать traceroute на использование эха ICMP, используйте флаг -I :
Чтобы использовать TCP SYN для зондирования, используйте флаг -T :
Установка максимального количества прыжков
По умолчанию traceroute отслеживает 30 переходов. Traceroute предлагает возможность вручную установить количество отслеживаемых переходов.
Используйте флаг -m для количества переходов:
Указание интерфейса
Если к компьютеру подключено несколько сетевых интерфейсов, может оказаться полезным указать сетевой интерфейс, который будет использоваться для отправки пакетов. Чтобы указать сетевой интерфейс, используйте флаг -i :
Определение количества запросов для прыжка
Чтобы определить количество запросов для перехода, укажите это число с помощью флага -q :
Маршрутизация пакетов через шлюз
Чтобы маршрутизировать пакеты через определенный шлюз, используйте опцию -g , за которой следует шлюз:
Страница справки Traceroute
Вышеупомянутые демонстрации — это лишь некоторые из распространенных способов использования traceroute, и вы можете использовать еще больше функций. Чтобы получить быструю помощь, откройте страницу справки traceroute с помощью следующей команды:
Чтобы получить более полное и подробное руководство по всем доступным параметрам traceroute, посетите страницу руководства с помощью следующей команды:
Заключение
Traceroute — это мощный инструмент, используемый для диагностики сети, и он поддерживает множество опций. Освоение traceroute может потребовать времени и практики. При использовании этого инструмента вы часто будете использовать методы, описанные в этой статье.
А ранее мы писали об использовании аналогичной команды tracert в Windows.
Источник
Linux traceroute через определенный интерфейс
Командой tracert мы инициируем отправку пакетов данных тому получателю, который указали – это может быть адрес сайта, имя компьютера в сети или IP-адрес. При этом пакеты проходят через все промежуточные системы (обычно это специальные сетевые устройства – машрутизаторы) между нашим компьютером и получателем. Таким образом, мы устанавливаем маршрут до пункта назначения и, что гораздо более важно – определяем время отклика (значение в миллисекундах) каждого промежуточного узла.
Таким образом можно установить, в каком месте цепочки находится проблема. Если пакеты не доходят до самого пункта назначения – значит, проблема в нем. Если цепочка обрывается на середине – проблема в каком-то из промежуточных маршрутизаторов. При этом с другого компьютера или по другому маршруту (если такой существует) наш отвалившийся сайт может быть доступен. Если пакеты не выходят за пределы сети нашего провайдера – стало быть, там и проблема.
Трассировка в Linux
В linux за трассировку отвечает пакет traceroute. Первое что сделаем это поставим пакет.
Для CentOS и RedHat
yum install -y traceroute
Для Debian и Ubuntu
apt-get install traceroute -y
Как сделать трассировку в Ubuntu-Debian-CentOS с помощью traceroute-01
Сделаем трассировку до Яндекса. traceroute ya.ru. Видим пошло построение маршрута.
Как сделать трассировку в Ubuntu-Debian-CentOS с помощью traceroute-02
Как видите команда очень похожа на команду из операционной системы Windows. Данная команда очень сильно вам поможет в решении сетевых проблем, так что трассировка вам в помощь.
Источник
TRACEROUTE
traceroute − выводит маршрут прохождения пакетов к узлу сети
КРАТКИЙ ОБЗОР
traceroute [−46dFITUnreAV] [−f начальное_ttl] [−g шлюз. ]
[−i интерфейс] [−m макс_ttl] [−p порт] [−s адрес_отправителя]
[−q количество_запросов] [−N количество_одновременных_пакетов] [−t тип_сервиса]
[−l метка_потока] [−w время_ожидания] [−z ожидание_отправки] [−UL] [−D]
[−P протокол] [−−sport=порт] [−M метод] [−O опции_модуля]
[−−mtu] [−−back]
узел [длина_пакета]
traceroute6 [опции]
tcptraceroute [опции]
lft [опции]
ОПИСАНИЕ
traceroute отслеживает маршрут пакетов, полученных из IP сети на пути к указанному узлу. Он использует поле время_жизни (TTL) IP протокола и пытается извлечь отклик TIME_EXCEEDED ICMP протокола от каждого шлюза на всём пути к узлу.
Команда traceroute6 эквивалентна команде traceroute −6
Команда tcptraceroute эквивалентна команде traceroute −T
Команда lft , the Layer Four Traceroute, выполняет TCP трассировку, подобно команде traceroute −T , но пытается обеспечить совместимость с одноимённой оригинальной реализацией «lft».
Требуемый параметр − имя или IP адрес назначения узел. Необязательный параметр длина_пакета − общий размер зондирующего пакета (по−умолчанию 60 байт для IPv4 и 80 для IPv6). Указанный размер в некоторых случаях может быть проигнорирован или увеличен до минимального значения.
Эта программа пытается проследить маршрут IP пакета, следующего к некоторому интернет−узлу, запуская зондирующие пакеты с малым значением ttl (time to live − время жизни), а затем ожидая от шлюза ICMP ответ «time exceeded» − «время истекло». Процесс зондирования начинается с единичного значения ttl и увеличивается с шагом 1 до тех пор, пока не будет получен ICMP ответ «port unreachable» − «порт недоступен» (или TCP reset), который означает, что «узел» достигнут, или достигнут максимум звеньев (который по умолчанию равен 30). Каждое значение ttl по умолчанию используется трижды, а в итоге выводится строка, показывающая ttl, адрес шлюза и время между между запросом и ответом каждой попытки зондирования. За адресом может следовать дополнительная запрошенная информация. Если в процессе зондирования ответы приходят с разных шлюзов, будет отображён адрес каждой отвечающей системы. При отсутствии ответа в течении 5.0 секунд (по умолчанию), для соответствующей попытки выводится «*» (звёздочка).
После времени ответа может отображаться дополнительная метка: !H, !N или !P (узел, сеть или протокол недоступны), !S (ошибка в маршруте отправителя), !F (необходима фрагментация), !X (взаимодействие административно запрещено), !V (нарушение приоритета узла), !C (сработал приоритет отсечения), или ! (ICMP код недоступности ). Если почти все попытки зондирования свидетельствуют о недоступности, программа traceroute завершается.
Нужно чтобы узел−получатель не обрабатывал зондирующие пакеты UDP, поэтому указанный порт назначения должен быть редко используемым (его можно изменить с помощью флага −p). Такой проблемы не существует при трассировке ICMP или TCP (для TCP используется полуоткрытая техника, при которой приложения на узле назначения не видят попыток зондирования).
В современной сетевой среде традиционные методы трассировки маршрутов не всегда могут быть применены из−за широкого распространения фильтрации пакетов. Они отбрасывают «редко используемые» порты UDP или даже ответы ICMP. Для решения этой проблемы используются несколько дополнительных методов трассировки (включая tcp), см. ниже СПИСОК ДОСТУПНЫХ МЕТОДОВ. Такие методы пытаются использовать определённый протокол и порт отправителя/получателя, чтобы обойти фильтры пакетов (чтобы фильтры пакетов рассматривали их просто как начало разрешённого типа сетевого сеанса).
ОПЦИИ
Вывести справочную информацию и завершить работу.
Явное указание трассировки IPv4 или IPv6. По умолчанию программа пытается решить указанное имя и автоматически выбирает подходящий протокол. Если имя узла решается одновременно в адреса IPv4 и IPv6, traceroute будет использовать IPv4.
Использовать для зондирования ICMP ECHO.
Использовать для зондирования TCP SYN.
Включить отладку на уровне сокета (если ядро Linux поддерживает её).
Не фрагментировать зондирующие пакеты. (Для IPv4 также будет установлен бит DF, который указывает промежуточным маршрутизаторам также не фрагментировать пакеты).
Изменяя размер зондирующего пакета с помощью параметра командной строки длина_пакета, можно вручную получить информацию о MTU каждого звена сети. Опция −−mtu (см. ниже) пытается выполнить это автоматически.
Заметим, что функции запрета фрагментации (например, −F или −−mtu) работают правильно только начиная с версии ядра Linux 2.6.22. До этой версии IPv6 фрагментируется всегда, а для IPv4 будет использоваться однажды обнаруженное значение mtu (из кэша маршрутов), которое может быть меньше действительного mtu устройства.
Указывает начальное значение TTL. По умолчанию − 1.
Указывает команде traceroute добавлять к отправляемому пакету опцию IP для маршрутизации отправителем, которая заставляет сеть маршрутизировать пакеты через указанный шлюз (на большинстве маршрутизаторов маршрутизация отправителем отключена по соображениям безопасности). В общем случае можно указать несколько шлюзов (разделённых запятыми). Для IPv6 позволена форма число,адрес,адрес. , где число − тип заголовка (по умолчанию − тип 2). Отметим, что тип заголовка 0 устарел (rfc5095).
Указывает интерфейс, через который команда traceroute должна посылать пакеты. По умолчанию, интерфейс выбирается в соответствии с таблицей маршрутизации.
−m максимальное_ttl, −−max−hops=максимальное_ttl
Указывает максимальное количество звеньев (максимальное значение time−to−live − время жизни), которое будет зондировать программа traceroute. По умолчанию − 30.
−N одновременных_запросов, −−sim−queries=одновременных_запросов
Указывает количество одновременно посылаемых пакетов зондирования. Отправка нескольких пакетов одновременно может значительно ускорить выполнение команды traceroute. Значение по умолчанию − 16.
Отмети, что некоторые маршрутизаторы и узлы могут использовать регулирование скорости ICMP. В этой ситуации указание слишком большого количества пакетов может привести к потере некоторых ответов.
Не пытаться сопоставить IP−адресам их имена при их отображении.
При трассировке UDP указывает базовый порт получателя, который будет использовать программа traceroute (номер порта получателя будет увеличиваться при каждом зондировании).
При трассировке ICMP указывает начальное значение последовательности ICMP (также увеличивается при каждом зондировании).
При трассировке TCP и прочих указывает просто порт получателя (постоянный). При использовании обёртки tcptraceroute параметр −p указывает порт отправителя.
Для IPv4 задаёт значение типа сервиса (TOS − Type of Service) и приоритета (Precedence). Полезные значения: 16 (малая задержка) и 8 (высокая пропускная способность). Отметим, что для использования некоторых значений приоритета TOS нужно быть суперпользователем.
Для IPv6 задаёт значение Traffic Control (управление трафиком).
Использовать указанную метку_потока для пакетов IPv6.
Задаёт время ожидания (в секундах) ответа на зондирование (по умолчанию − 5.0 секунд).
−q количество_запросов, −−queries=количество_запросов
Устанавливает количество зондирующих пакетов для каждого звена. По умолчанию 3.
Игнорировать обычные таблицы маршрутов и отправлять пакеты к узлу через непосредственно подключенную сеть. Если узел не принадлежит к непосредственно подключённой сети, то возвращается ошибка. Эта опция может быть использована для проверки доступности локального узла через интерфейс, через который нет маршрута.
−s адрес_отправителя, −−source=адрес_отправителя
Выбрать альтернативный адрес отправителя. Отметим, что нужно выбрать адрес одного из интерфейсов. По умолчанию используется адрес интерфейса, через который будут отправляться пакеты.
−z ожидание_отправки, −−sendwait=ожидание_отправки
Минимальный интервал между попытками зондирования (по умолчанию 0). Если значение больше 10, то это количество миллисекунд, иначе − это количество секунд (также доступны значения с плавающей запятой). Опция полезна, если некоторые маршрутизаторы используют ограничение скорости сообщений ICMP.
Показать расширения ICMP (rfc4884). Общий вид CLASS/TYPE: с последующим шестнадцатеричным дампом. MPLS (rfc4950) отображается в виде MPLS:L=метка,E=используемые_биты_exp,S=дно_стека,T=TTL (дальнейшие объекты разделяются символом / ).
Выполяет поиск пути к автономной системе в реестрах маршрутизации и выдаёт результаты сразу после соответствующих адресов.
Вывести версию программы и завершить работу.
Существует несколько дополнительных опций, предназначенных для продвинутого использования (другие методы трассировки и т.п.):
−−sport=порт
Выбрать используемый порт отправителя. Подразумевает −N 1. Обычно порты отправителя (если они используются в проверке) выбираются системой.
Установить метку пакетного фильтра для исходящих пакетов (начиная с ядра Linux версии 2.6.25).
Использовать указанный метод для операций трассировки маршрута. Используемый по умолчанию традиционный метод udp называется default, icmp (−I) и tcp (−T) имеют имена icmp и tcp соответственно.
Специфические для метода опции могут быть переданы с помощью параметра −O . Большинство методов имеют сокращения (−I означает −M icmp и т.п.).
Указывает специфичную для метода опцию. Несколько опций разделяются запятой (или указываются в отдельных опциях −O). Каждый метод может иметь свои специфические опции, а многие из них не имеют их вообще. Для вывода информации об имеющихся опциях воспользуйтесь −O help.
Использовать UDP для трассировки к определённому порту назначения (вместо увеличения значения порта при каждом зондировании). Порт по умолчанию − 53 (dns).
Использовать UDPLITE для трассировки (порт по умолчанию − 53).
Использовать для зондирования запросы DCCP.
Использовать для трассировки raw−пакет указанного протокола. Протокол по умолчанию − 253 (rfc3692).
Обнаружить MTU на всём пути трассировки. Подразумевает −F −N 1. Новое значение mtu выводится единожды в виде F=ЧИСЛО после первого зондирования звена, требующего этого значения mtu. (На самом деле, предыдущим звеньям обычно посылается соответствующее icmp сообщение «frag needed» − «необходима фрагментация»).
Отметим, что некоторые маршрутизаторы могут кэшировать однажды полученную информацию о фрагментации. Поэтому можно получить окончательное значение mtu от ближайшего звена. Попытайтесь указать необычный tos с помощью опции −t, это поможет сделать ещё одну попытку (затем её результат тоже может быть закэширован).
За дополнительной информацией обратитесь к опции −F.
Выводит количество звеньев на обратном пути, если есть отличия с прямым направлением. Это количество угадывается в предположении, что удалённые звенья посылают ответные пакеты с начальным значением ttl 64, либо 128, либо 255 (что похоже является обычной практикой). Оно выводится, как отрицательное значение в виде ’−ЧИСЛО’.
СПИСОК ДОСТУПНЫХ МЕТОДОВ
В целом, определённый метод трассировки может быть выбран с помощью −M имя, но большинство методов имеют соответствующие опции командной строки (если они есть, вы можете их увидеть после названия метода).
default
Традиционный, старинный метод трассировки. Используется по умолчанию.
Тестовые пакеты − датаграммы udp с так называемыми «редко используемыми» портами назначения. Первый «редко используемый» порт − 33434, затем при каждом последующем зондировании он увеличивается на единицу. Поскольку ожидается, что порты не будут использоваться, узел−получатель обычно возвращает в качестве окончательного отклика «icmp unreach port» − «icmp порт недоступен». (Никто не знает, что случится, если приложение всё же прослушивает такие порты).
Этот метод доступен для непривилегированных пользователей.
icmp −I
На данный момент − самый обычный метод, который использует для зондирования пакеты imcp echo.
Если можно осуществлять ping(8) узла−получателя, то можно осуществлять и трассировку icmp.
Этот метод может быть доступен непривилегированным пользователям начиная с ядра 3.0 (только IPv4), которое поддерживает новые сокеты dgram icmp (или «ping«). Чтобы разрешить использование таких сокетов, системный администратор должен указать в sysctl net.ipv4.ping_group_range диапазон, совпадающий с любой группой пользователей.
Опции:
Использовать только сокеты raw (традиционный способ).
Этот метод используется первым по умолчанию (в целях совместимости), а если он недоступен − новые сокеты датаграмм icmp.
Использовать только сокеты датаграмм icmp.
tcp −T
Общеизвестный современный метод, предназначен для обхода пакетных фильтров.
Использует постоянный порт получателя (по умолчанию − 80, http).
Если по пути через сеть встречаются пакетные фильтры, то скорее всего любые «редко используемые» udp порты (используемые в методе default) или даже пакеты эхо icmp (используемые в icmp) фильтруются, и весь процесс трассировки будет прерван таким пакетным фильтром. Чтобы обойти сетевой фильтр, нужно воспользоваться разрешённым сочетанием протокол/порт. Если трассируется, скажем, путь к почтовому серверу, то лучше всего подойдут настройки −T −p 25, даже если не работает −I.
Этот метод использует общеизвестную «полуоткрытую технику», предотвращающую обнаружение попыток сканирования программами на узле−получателе. Обычно, посылаются пакеты tcp syn. Для не прослушиваемых портов будет получен ответ tcp reset. Для активно прослушиваемых портов будет получен ответ tcp syn+ack, на который будет отправлен tcp reset (вместо ожидаемого tcp ack). Таким образом удалённый сеанс tcp прекращается без какого−либо уведомления приложения.
Для метода tcp существует несколько опций:
syn,ack,fin,rst,psh,urg,ece,cwr
Устанавливает в зондирующем пакете указанное сочетание флагов tcp.
Задаёт поле флагов в заголовке tcp точно равным указанному числу.
Посылает пакет syn с флагами tcp ECE и CWR (для явного уведомления о перегрузке − Explicit Congestion Notification, rfc3168).
Использовать соответствующую опцию заголовка tcp в отправляемом зондирующем пакете.
Использовать текущие настройки sysctl (/proc/sys/net/*) для указанных выше опций заголовка tcp и ecn. Используется по умолчанию, если не указано обратное.
Использовать указанное число в качестве значения опции maxseg из заголовка tcp (при использовании syn).
Вывести флаги tcp из последних ответов tcp при достижении узла−получателя. Позволяет определить, слушает ли приложение порт и другие полезные вещи.
Опции по−умолчанию − syn,sysctl.
tcpconn
Первоначальная реализация метода tcp, использующая простой вызов connect(2), который выполняет полное открытие сеанса tcp. Не рекомендуется для обычного использования, потому что затрагивает приложение−получатель, которое может прийти в замешательство.
udp −U
Использует датаграмму udp с постоянным портом назначения (по умолчанию − 53, dns).
Предназначается для обхода пакетного фильтра.
Отметим, что в отличие от метода tcp, соответствующее приложение на узле−получателе всегда получает зондирующие пакеты (со случайными данными) и скорее всего придёт в замешательство. Но в большинстве случаев оно не будет отвечать на наши пакеты, следовательно мы никогда не увидим окончательное звено в трассировке. (К счастью, похоже что по−крайней мере dns серверы, как бы сердясь, отвечают на такие запросы).
Этот метод доступен для непривилегированных пользователей.
udplite −UL
Использовать udplite датаграммы для зондирования (с постоянным портом назначения, по умолчанию − 53).
Этот метод доступен для непривилегированных пользователей.
Опции:
coverage=количество
Задаёт покрываемое контрольной суммой количество байт полезной нагрузки udplite.
dccp −D
Использовать для зондирования пакеты DCCP Request (rfc4340).
Этот метод использует ту же «полуоткрытую технику», которая используется для TCP. По умолчанию используется порт получателя 33434.
Задать сервисный код DCCP равным указанному числу (по умолчанию − 1885957735).
raw −P протокол
Посылает raw пакет протокола proto.
Специфичные для протокола заголовки не используются, только заголовок IP.
Подразумевает −N 1.
Опции:
protocol=протокол
Использовать IP протокол протокол (по умолчанию − 253).
ПРИМЕЧАНИЯ
Для ускорения работы обычно выполняется несколько зондирований одновременно. Другими словами, создаётся «шторм пакетов», особенно в ответном направлении. Маршрутизаторы могут подавлять скорость ответов icmp и некоторые из ответов могут быть утеряны. Для избежания этого нужно уменьшить количество одновременных зондирований или даже задать его равным 1 (как в первоначальной реализации программы traceroute), т.е. указать −N 1.
Оконечный (целевой) узел может отбрасывать некоторые из одновременных зондирований и отвечать только на самые последние. Это может привести к сообщениям «looks like expired» − «возможно просрочен» ближе к оконечному звену. Для автоопределения таких ситуаций используется специальный алгоритм, но если он не справился, просто воспользуйтесь −N 1.
Для повышения стабильности можно замедлить работу программы, воспользовавшись опцией −z, например, указав −z 0.5 для полсекундной паузы между зондированиями.
Если некоторые звенья ничего не сообщают при любом используемом методе, то последний шанс получить хоть что−то − использовать команду ping −R (IPv4, и только для ближайших 8 звеньев).
СМОТРИ ТАКЖЕ
АВТОР ПЕРЕВОДА
Перевод на русский язык выполнил Вячеслав Чертов . Коррекция и обновление — Владимир Ступин .
Источник