К основному контенту

Как заблокировать домен с помощью RPZ на сервере Bind DNS на CentOS

Команда traceroute Linux

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

Утилита ping позволяет только определить наличие проблемы, что узел не отвечает, но как узнать где обрывается соединение? Для этого применяется утилита traceroure. В этой небольшой инструкции мы рассмотрим как пользоваться traceroute linux, как понимать ее вывод и определить где же все-таки проблема. Но сначала рассмотрим, как работает traceroute.

Содержание статьи: Как работает traceroute? Утилита Traceroute Примеры трассировки сети в Linux Выводы Как работает traceroute?

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

Каждый пакет проходит на своем пути определенное количество узлов, пока достигнет своей цели. Причем, каждый пакет имеет свое время жизни. Это количество узлов, которые может пройти пакет перед тем, как он будет уничтожен. Этот параметр записывается в заголовке TTL, каждый маршрутизатор, через который будет проходить пакет уменьшает его на единицу. При TTL=0 пакет уничтожается, а отправителю отсылается сообщение Time Exceeded.

Команда traceroute linux использует UDP пакеты. Она отправляет пакет с TTL=1 и смотрит адрес ответившего узла, дальше TTL=2, TTL=3 и так пока не достигнет цели. Каждый раз отправляется по три пакета и для каждого из них измеряется время прохождения. Пакет отправляется на случайный порт, который, скорее всего, не занят. Когда утилита traceroute получает сообщение от целевого узла о том, что порт недоступен трассировка считается завершенной. Утилита Traceroute

Перед тем как перейти к примерам работы с утилитой давайте рассмотрим ее синтаксис и основные опции. Синтаксис вызова очень прост:

$ traceroute опции адрес_узла

В качестве адреса может использоваться ip адрес или доменное имя. Рассмотрим основные опции: -4 или -6 - использовать ipv4 или ipv6 протокол; -I - использовать ICMP пакеты вместо UDP; -T - использовать TCP пакеты вместо UDP; -F - не фрагментировать пакеты; -f - указать TTL с которого нужно начать; -g - передавать пакет через указанный шлюз; -i - передавать пакет через указанный интерфейс; -m - максимальное количество узлов, через которые пройдет пакет; -q - количество пакетов, отправляемых за раз, по умолчанию три; -n - не узнавать доменные имена; -p - указать порт вместо порта по умолчанию; -w - установить время ожидания ответа от узла, по умолчанию полсекунды; -r - использовать другой роутер вместо того, что указанный в таблице маршрутизации; -z - минимальный интервал между пакетами; -U - использовать UDP с увеличением номера порта; -UL - использовать протокол UDPLITE; -D - использовать протокол DCCP; --mtu - указать размер пакета; -P - протокол, доступны такие значения: raw, dccp, udplite, udp, tcpconn, tcp, icmp.

Это не все опции утилиты, но все основные, которыми вы будете пользоваться. Дальше перейдем практике того, как выполняется трассировка сети Linux. Примеры трассировки сети в Linux

Например, выполним трассировку до сервера fuck-cs.pp.ua:

sudo traceroute fuck-cs.pp.ua