Диагностика сетевых проблем в Linux с помощью traceroute

Traceroute – это простая сетевая утилита, которая может проследить маршрут, по которому интернет-пакет проходит от источника до узла назначения. В этой статье мы расскажем вам, как использовать Traceroute для проверки работоспособности сети Linux и диагностики возникающих проблем.

  • Примечание:* Хотя в этой статье рассматривается Traceroute в Linux, вы также можете использовать эту утилиту в macOS и Windows

Как работает Traceroute?

Traceroute работает путем отправки UDP-пакетов с коротким TTL на каждый интернет-шлюз на пути к удаленному хосту. Эти короткие TTL заставляют шлюзы сообщать ICMP-ответ «TIME_EXCEEDED» вместе с IP-адресом своего интерфейса.

Эти два фактора в совокупности позволяют traceroute создавать подробный список машин, через которые пройдет ваш пакет при подключении к внешнему серверу. Например, при запуске traceroute по адресу «google.com» в моей сети будет указано от 9 до 10 шлюзов, прежде чем пакет достигнет серверов Google

Какие проблемы сети может исправить Traceroute?

Traceroute – это всего лишь инструмент для зондирования сети, он не оптимизирует и не устраняет какие-либо проблемы в вашей сети. Traceroute может только описать, как ведут себя сети и пакеты, которые по ним перемещаются.

Несмотря на это, он все равно является важным инструментом для диагностики потенциальных сетевых проблем. Одним из хороших примеров является ситуация, когда локальный шлюз не может переслать пакет в следующий хоп. Traceroute может решить эту проблему, выделив любой маршрутизатор в основной сети, который не отправляет ответ «TIME_EXCEEDED».

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

Использование Traceroute в Linux

Откройте новый терминал и введите traceroute, а затем адрес машины, к которой вы хотите подключиться. Это может быть либо доменное имя, либо IP-адрес. Например:

traceroute ubuntu.myvpsserver.top

Нажмите Enter, чтобы начать прокладывать путь к удаленному хосту.

Отправка пакетов с пользовательским TTL в Traceroute

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

Одна из самых распространенных настроек traceroute – изменение количества пакетов, которые он отправляет на шлюз. Для этого используйте флаг -q, а затем количество пакетов, которое вы хотите отправить за один запрос:

traceroute -q 1 ubuntu.myvpsserver.top

Вы также можете использовать флаг -N, а затем «1», чтобы явно отключить одновременные запросы пакетов. Это полезно, если у вас есть шлюзы, ограничивающие скорость передачи UDP-пакетов с коротким TTL.

Вы также можете изменить значение TTL по умолчанию для traceroute. Для этого добавьте флаг -f, а затем TTL, который вы хотите использовать для первого пакета.

Изменение протокола Traceroute в Linux

По умолчанию traceroute в Linux использует UDP для отправки пробных пакетов на сетевые шлюзы. Это может быть проблемой, если вы проверяете шлюз, который активно блокирует пакеты traceroute.

Чтобы исправить это, вы можете использовать флаг -T для запуска traceroute с помощью простых пакетов TCP SYN.

С другой стороны, вы также можете заставить traceroute использовать пакет ICMP ECHO, если конечный шлюз ограничивает только UDP:

sudo traceroute -I myvpsserver.top

Изменение интерфейса и порта в Traceroute

Traceroute также поддерживает пользовательские сетевые интерфейсы. В этом случае traceroute будет использовать другую сетевую карту на вашей машине для исследования пути пакета.

Для этого запустите программу с флагом -i, за которым следует имя устройства вашего интерфейса.

traceroute -i enp1s0 myvpsserver.top

Примечание: Вы можете найти доступные сетевые интерфейсы для вашей машины, выполнив ifconfig -s | awk '{print $1}'.

Помимо этого, вы можете использовать флаг -p, чтобы указать начальный номер порта, который traceroute будет использовать для UDP-зондирования:

traceroute -p 34543 myvpsserver.top

И наконец, флаг -p также меняет свое поведение в зависимости от используемого протокола. Если использовать его в паре с -I, то значение -p будет использоваться в качестве начального номера последовательности ICMP, а не порта назначения.

Узнать, как использовать traceroute, – это только первый шаг в понимании того, как компьютеры общаются друг с другом по сети. Узнайте больше о компьютерных сетях, проанализировав содержимое TCP-пакета с помощью tcpdump.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.maketecheasier.com

Похожие статьи

Комментарии (0)