Командная строка: traceroute
трассируем сеть с помощью traceroute
Когда нужно достучаться до определенного ресурса в Интернете, пакет данных двигается через домашний роутер в сеть провайдера, проходит через входящий роутер поставщика услуг связи, и идет дальше от узла к узлу, пока не достигнет установленной цели.
Итак, как узнать через какое количество сетевых узлов проходят наши данные?
Этот вопрос имеет большое практическое значение: например, происходит сбой при передаче данных. Команда ping
позволит только установить факт недоступнсти конечного ресурса. Узнать на каком этапе происходит сбой при передаче данных можно с помощью трассировки сети. Именно для этого предназначена команда traceroute
.
Общий синтаксис команды имеет вид:
traceroute
Например, посмотрим, какой результат даст попытка достучаться до сервера, на котором размещен хост i-shar.ru
traceroute i-shar.ru
Пример фрагмента результата выполнения команды выглядит так:
23 74.125.253.115 (74.125.253.115) 194.986 ms
172.253.66.177 (172.253.66.177) 199.870 ms
142.250.57.49 (142.250.57.49) 335.145 ms
24 * * *
25 * * *
26 232.44.185.35.bc.googleusercontent.com (35.185.44.232) 203.374 ms 201.985 ms 191.035 ms
Для достижения целевого хоста пакет прошел через 26 сетевых узлов. Можно заметить, что в ответ на команду traceroute
не каждый сервер возвращает значимую информацию (название хоста, IP-адрес и время обработки запроса), иногда в ответе можно увидеть:
* * *
Далеко не всегда такая картина говорит о недоступности очередного сетевого устройства, возможно узел скрыт и не желает отвечать.
Выполнение команды traceroute
занимает достаточно много времени, так как на каждый шаг приходится отправка трех пакетов данных - это необходимо для получения более-менее достоверных сведений о времени выполнения команды.
Однако, количеством пакетов можно управлять с помощью опции -q
:
traceroute -q 1 i-shar.ru
По умолчанию команда traceroute
отправляет UDP-пакеты на любой порт, который с наибольшей вероятностью может быть свободным. В случае, когда приходит ответ о недоступности порта, команда считается завершенной. Однако, неудачная трассировка может быть связана и с тем, что firewall блокирует UDP-пакеты. В таком случае с помощью опции -l
можно перейти на ICMP:
traceroute -l i-shar.ru
Спасибо за внимание.