Каковы существенные различия между tracepath и traceroute?

58

Недавно я прочитал небольшую статью о HowToGeek, в которой я немного почесал голову. У меня довольно мало опыта работы с Linux, так что извините, если это начальный уровень:

«Команда tracepath похожа на traceroute, но она не требует привилегий root».

http://www.howtogeek.com/108511/how-to-work-with-the-network-from-the-linux-terminal-11-commands-you-need-to-know/

Как traceroute и tracepath выполняют сходную функцию по-разному?

Что делает traceroute, для чего требуются права суперпользователя, а чего нет?

Существуют ли сценарии, в которых лучше использовать tracepath, а не traceroute, или наоборот?

Iszi
источник

Ответы:

57

Как traceroute и tracepath выполняют сходную функцию по-разному?

Обе программы по существу делают одно: отправляют и получают определенные IP-пакеты.

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

Tracepath использует API сокетов для всей своей функциональности. Traceroute манипулирует необработанными пакетами для некоторых своих функций.

Что делает traceroute, для чего требуются права суперпользователя, а чего нет?

Он манипулирует необработанными пакетами.

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

Существуют ли сценарии, в которых лучше использовать tracepath, а не traceroute, или наоборот?

Одна из расширенных команд, доступных в Traceroute, - это возможность запуска сетевой трассировки с использованием протокола IPv4 или IPv6. Для зонда также можно выбирать между форматами данных ICMP, TCP или UDP. Traceroute может выбрать конкретные исходные маршруты для зонда и выбрать порт для отправки. Он может устанавливать пределы минимального и максимального TTL для приема от исходящего зонда. Кроме того, Traceroute может показывать время ожидания для ответных эхо-запросов, а также устанавливать, сколько пакетов отправляется в каждом тесте и сколько тестов для отправки. Некоторые из этих команд могут не поддерживаться сетевым оборудованием вдоль пути, которое может завершить зонд до того, как он достигнет своего конечного пункта назначения.

источники: 1 2 3

Galgalesh
источник
1
Наконец, ответ с законной проблемой безопасности, которая затрагивает локальную систему. Спасибо!
Изи
10

Вы можете использовать tracerouteдля расширенного сетевого отслеживания, вы можете выбрать между протоколами IPv4 и Ipv6, вы также можете выбрать между форматами данных ICMP, TCP или UDP для зонда.

Так что tracerouteимеет более продвинутые опции, чем те, tracepathкоторые используют UDP-пакеты для трассировки.

Теперь о привилегиях суперпользователя :

Вы можете использовать tracerouteкак с обычным пользователем, так и с суперпользователем, который зависит от опции, которую вы хотите использовать, вот пример:

введите описание изображения здесь

Здесь мы используем UDP- пакеты, которым не нужны привилегии суперпользователя

введите описание изображения здесь

Здесь мы используем эхо-пакеты ICMP , которым нужны привилегии.

С помощью ICMP- пакетов вы можете совершить DDOS-атаку.

Чтобы узнать о возможностях ICMP Traceroute Man Page

Для просмотра tracerouteпараметров введите в терминалеman traceroute

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

То, что вы можете видеть это, когда вы пытаетесь пинговать так, как веб-сайты www.microsoft.com, ваш пинг не будет работать даже онлайн, и это потому, что маршрутизаторы Microsoft блокируют ICMP_requests.

Поэтому linux защищает систему от непривилегированного пользователя, поэтому они не могут использовать эти команды для атаки.

Nux
источник
3
Как правило, ограничения против непривилегированных пользователей используются для защиты системы от атак, а не от использования в качестве вектора для атаки на другие системы. Это не имеет смысла для меня - знаете ли вы какие-либо документы, подтверждающие это?
Изи
3

я думаю, что вы должны прочитать это http://www.ehow.com/list_7526520_differences-between-traceroute-tracepath.html

Из приведенной выше ссылки:

TracePath

Tracepath отслеживает путь к назначенному сетевому адресу, сообщая о «времени жизни» или задержке TTL и максимальных единицах передачи (MTU) по пути. Эта команда может быть запущена любым пользователем, имеющим доступ к командной строке.


Основы Traceroute

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

rɑːdʒɑ
источник
Спасибо за ссылку, но не могли бы вы добавить в ответ какой-то фактический контент?
Iszi
Привет бодхи.зазен, спасибо за улучшение моего поста. :)
rɑːdʒɑ
5
Спасибо за разъяснения. Однако, ответ здесь (не получили пересмотреть ссылку пока) еще не хватает двух частей вопрос: Почему же tracerouteтребуется доступ суперпользователя (тем более , что он на самом деле кажется , что это делает меньше , чем tracepathпо умолчанию)? И, кроме сценариев, когда вы не являетесь суперпользователем, почему вы должны выбирать один из других?
Изи
1

pingи tracerouteиспользовать протокол ICMP. Как и UDP и TCP, это доступно через обычный API сокетов. Только номера портов UDP и TCP менее 1024 защищены от использования, кроме как root. ICMP свободно доступен для всех пользователей.

Если вы действительно хотите увидеть, как работают ping и traceroute, вы можете загрузить пример реализации кода C для них из CodeProject .

Короче говоря, они просто открывают сокет ICMP, и traceroute изменяет приращения TTL, используя setsockopt, пока цель не будет достигнута.

Источник: Ссылка

Ahmadgeo
источник
Также; tracepath использует UDP, который, в дополнение к параметрам UDP в самой трассировке, не требует повышенных привилегий.
Ахмаджо