как проверить маршруты сети в windows
Как проверить маршруты сети в windows
Маршрутизация в Windows
Маршрутизация – это процесс передачи IP-трафика адресатам в сети, то есть процесс передачи пакетов от хоста-источника к хосту-адресату через промежуточные маршрутизаторы. Изучая эту статью предполагается что вы изучили материал основы компьютерных сетей.
Изучим как работает маршрутизация в Windows, что бы понять как она работает, а не просто прочитать и забыть, вам необходимо несколько виртуальных машин, а именно:
Учтите, что при настройке виртуальных машин, в настройках сети нужно указать «Внутренняя сеть» и задать одинаковое имя сети для всех машин.
Если вы не поленитесь и установите три виртуальные машины, а так же изучите этот материал до конца, то у вас будет практическое понимание работы сети в операционных системах семейства Windows.
Для простоты передачи данных хост-источник и маршрутизатор принимают решения о передаче пакетов на основе своих таблиц IP-маршрутизации. Записи таблицы создаются при помощи:
По сути, таблица маршрутизации – это база данных, которая хранится в памяти всех IP-узлов. Цель таблицы IP-маршрутизации это предоставление IP-адреса назначения для каждого передаваемого пакета для следующего перехода в сети.
Пример маршрутизации в Windows
Допустим, у нас есть три узла:
Хост XP имеет один сетевой адаптер (интерфейс) с IP-адресом 192.168.0.2 и маской подсети 255.255.255.0. Маршрутизатор Server1 имеет два интерфейса с IP-адресами 192.168.0.1 и 192.168.1.1 и масками подсети 255.255.255.0. Маршрутизатор Server2 также имеет 2 сетевых адаптера с IPадресами 192.168.1.2 и 192.168.2.1 и масками подсети 255.255.255.0. Таким образом, мы имеем 3 сети: сеть с IP-адресом 192.168.0.0 (Net 1), сеть с IP-адресом 192.168.1.0 (Net 2), сеть с IP-адресом 192.168.2.0 (Net 3).
Таблица маршрутизации
Таблица маршрутизации по умолчанию создается на узле автоматически с помощью программного обеспечения стека TCP/IP.
При настройке сетевого подключения на хосте XP были статически заданы IP-адрес 192.168.0.2 и маска подсети 255.255.255.0, основной шлюз задан не был. Программное обеспечение стека TCP/IP автоматически создало таблицу маршрутизации по умолчанию.
Таблица маршрутизации содержит для каждой записи следующие поля: Сетевой адрес (Network Destination), Маска сети (Netmask), Адрес шлюза (Gateway), Интерфейс (Interface) и Метрика (Metric). Разберем каждое поле подробнее.
Сетевой адрес. Поле определяет диапазон IP-адресов достижимых с использованием данной таблицы.
Маска сети. Битовая маска, которая служит для определения значащих разрядов в поле Сетевой адрес. Маска состоит из непрерывных единиц и нулей, отображается в десятичном коде. Поля Сетевой адрес и Маска определяют один или несколько IP-адрес.
Адрес шлюза. В этом поле содержаться IP-адрес, по которому должен быть направлен пакет, если он соответствует данной записи таблицы маршрутизации.
Интерфейс. Данное поле содержит адрес логического или физического интерфейса, используемого для продвижения пакетов, соответствующих данной записи таблицы маршрутизации.
Метрика. Используется для выбора маршрута, в случае если имеется несколько записей, которые соответствуют одному адресу назначения с одной и той же маской, то есть в случае если одного адресата можно достичь разными путями, через разные маршруты. При этом, чем меньше значение метрики тем короче маршрут.
На начальном этапе работы (т.е. с таблицами маршрутизации по умолчанию) маршрутизатор (хост) знает только, как достичь сетей, с которыми он соединен непосредственно. Пути в другие сети могут быть «выяснены» следующими способами:
Рассмотрим каждый из способов по порядку.
Статическая маршрутизация
Статические маршруты задаются вручную. Плюс статических маршрутов в том, что они не требуют рассылки широковещательных пакетов с маршрутной информацией, которые занимают полосу пропускания сети.
Минус статических маршрутов состоит в том, что при изменении топологии сети администратор должен вручную изменить все статические маршруты, что довольно трудоемко, в случае если сеть имеет сложную структуру с большим количеством узлов.
Второй минус заключается в том, что при отказе какого-либо канала статический маршрут перестанет работать, даже если будут доступны другие каналы передачи данных, так как для них не задан статический маршрут.
Но вернемся к нашему примеру. Наша задача, имя исходные данные, установить соединения между хостом XP и Server2 который находится в сети Net3, то есть нужно что бы проходил пинг на 192.168.2.1.
Начнем выполнять на хосте XP команды ping постепенно удаляясь от самого хоста. Выполните в Командной строке команды ping для адресов 192.168.0.2, 192.168.0.1, 192.168.1.1.
Мы видим, что команды ping по адресу собственного интерфейса хоста XP и по адресу ближайшего интерфейса соседнего маршрутизатора Server1 выполняются успешно.
Однако при попытке получить ответ от второго интерфейса маршрутизатора Server1 выводится сообщение «Заданный узел недоступен» или «Превышен интервал ожидания для запроса».
Это связано с тем, что в таблице маршрутизации по умолчанию хоста XP имеются записи о маршруте к хосту 192.168.0.2 и о маршруте к сети 192.168.0.0, к которой относится интерфейс маршрутизатора Server1 с адресом 192.168.0.1. Но в ней нет записей ни о маршруте к узлу 192.168.1.1, ни о маршруте к сети 192.168.1.0.
Добавим в таблицу маршрутизации XP запись о маршруте к сети 192.168.1.0. Для этого введем команду route add с необходимыми параметрами:
route add [адресат] [mask маска] [шлюз] [metric метрика] [if интерфейс]
Параметры команды имеют следующие значения:
Индекс интерфейса можно определить из секции Список интерфейсов (Interface List) выходных данных команды route print.
Теперь, зная индекс физического интерфейса, на хосте добавьте нужный маршрут, выполнив следующую команду:
route add 192.168.1.0 mask 255.255.255.0 192.168.0.1 metric 2 if 0x2
Данная команда сообщает хосту XP о том, что для того, чтобы достичь сети 192.168.1.0 с маской 255.255.255.0, необходимо использовать шлюз 192.168.0.1 и интерфейс с индексом 0x2, причем сеть 192.168.1.0 находится на расстоянии двух транзитных участка от хоста XP.
Выполним пинг на 192.168.1.1 и убедимся, что связь есть.
Продолжим пинговать серверы, теперь проверьте отклик от второго маршрутизатора, присоединенного к сети Net2 (Server2). Он имеет IP-адрес 192.168.1.2.
Получаем сообщение «Превышен интервал ожидания запроса». В данном случае это означает что наш хост XP знает как отправлять данные адресату, но он не получает ответа.
Это происходит по тому, что хост Server2 не имеет информации о маршруте до хоста 192.168.0.1 и до сети 192.168.0.0 соответственно, поэтому он не может отправить ответ.
Для этого необходимо выполнить команду route add с соответствующими параметрами, однако сначала необходимо узнать индекс интерфейса с адресом 192.168.1.2.
На Server2 выполним команду route print и посмотрим индекс первого физического интерфейса. Далее, с помощью команды route add добавьте на Server2 маршрут до сети Net1, аналогично тому, как мы добавляли маршрут хосту XP.
В моем случае это команда:
route add 192.168.0.0 mask 255.255.255.0 192.168.1.1 metric 2 if 0x10003
0x10003 — это индекс физического интерфейса сервера 2.
Индекс физического интерфейса может быть разным, обязательно обращайте на него внимание.
После того, как удостоверитесь в наличии связи между узлами XP и Server2, выполните команду ping 192.168.2.1, т.е. проверьте наличие маршрута узла XP до сети Net3 (192.168.2.1 – IP-адрес маршрутизатора Server2 в сети Net3).
Вместо ответа вы получите сообщение «Заданный узел недоступен». С этой проблемой мы сталкивались еще в самом начале лабораторной работы, машина XP не знает путей до сети 192.168.2.0.
Добавьте в таблицу маршрутизации хоста XP запись о маршруте к сети 192.168.2.0. Это можно сделать путем ввода в командной строке хоста XP команды route add с соответствующими параметрами:
route add 192.168.2.0 mask 255.255.255.0 192.168.0.1 metric 3 if 0x2
Я не буду подробно описывать как полностью настроить статическую маршрутизацию между узлами, думаю что суть ясна. Если у вас появились вопросы — задавайте их в комментариях.
Маршрутизация по умолчанию
Второй способ настройки маршрутизации в Windows — то маршрутизация по умолчанию.
Для маршрутизации по умолчанию необходимо задать на всех узлах сети маршруты по умолчанию.
Для добавления такого маршрута на хосте XP выполните следующую команду:
route add 0.0.0.0 mask 0.0.0.0 192.168.0.1 metric 2 if 0x10003
Это так называемый маршрут по умолчанию.
Проверьте работоспособность с помощью команды ping.
Динамическая маршрутизация, протокол RIP
Протокол RIP (Routing Information Protocol или Протокол передачи маршрутной информации) является одним из самых распространенных протоколов динамической маршрутизации.
Его суть заключается в том, что маршрутизатор использующий RIP передает во все подключенные к нему сети содержимое своей таблицы маршрутизации и получает от соседних маршрутизаторов их таблицы.
Есть две версии протокола RIP. Версия 1 не поддерживает маски, поэтому между сетями распространяется только информация о сетях и расстояниях до них. При этом для корректной работы RIP на всех интерфейсах всех маршрутизаторов составной сети должна быть задана одна и та же маска.
Протокол RIP полностью поддерживается только серверной операционной системой, тогда как клиентская операционная система (например, Windows XP) поддерживает только прием маршрутной информации от других маршрутизаторов сети, а сама передавать маршрутную информацию не может.
Настраивать RIP можно двумя способами:
Рассмотрим настройку в режиме командной строки с помощью утилиты netsh.
Netsh – это утилита командной строки и средство выполнения сценариев для сетевых компонентов операционных систем семейства Windows (начиная с Windows 2000).
Введите в командной строке команду netsh, после появления netsh> введите знак вопроса и нажмите Enter, появиться справка по команде.
Введите последовательно команды:
Вы увидите, что среди доступных команд этого контекста есть команда add interface, позволяющая настроить RIP на заданном интерфейсе. Простейший вариант этой команды – add interface «Имя интерфейса».
Настроим RIP на Server1. Но сначала нужно выключит брандмауэр.
Теперь в оснастке «Маршрутизация и удаленный доступ» в контекстном меню пункта SERVER1 (локально) выберите пункт «Настроить и включить Маршрутизация ЛВСмаршрутизацию и удаленный доступ».
В появившемся окне мастера нажмите «Далее».
На следующем этапе выберите «Особая конфигурация» и нажмите «Далее».
После чего нужно выбрать «Маршрутизация ЛВС» и завершить работу мастера.
То же самое нужно выполнить на Server2.
Настройка через оснастку
В контекстном меню вкладки «Общие» (SERVER1 –> IP-маршрутизация –> Общие) нужно выбрать пункт «Новый протокол маршрутизации».
Затем выделяем строку «RIP версии 2 для IP».
В контекстном меню появившейся вкладки «RIP» выберите «Новый интерфейс». Выделите строку «Подключение по локальной сети» и нажмите ОК.
Перед вами появиться окно.
В появившемся окне необходимо задать следующие настройки:
Оставьте оставшиеся настройки по умолчанию и нажмите ОК.
Далее необходимо выполнить эти действия для второго сетевого интерфейса.
После выполните те же действия для Sever2.
Проверьте, с помощью команды ping, работу сети.
Поздравляю! Маршрутизация в Windows изучена.
Обучаю HTML, CSS, PHP. Создаю и продвигаю сайты, скрипты и программы. Занимаюсь информационной безопасностью. Рассмотрю различные виды сотрудничества.
Как проверить маршруты сети в windows
добавление маршрута windows
Всем привет сегодня расскажу как прописать статический маршрут в windows с помощью утилиты командной строки route и как посмотреть таблицу маршрутизации Windows. Утилита route выводит на экран и изменяет записи в локальной таблице IP-маршрутизации. Когда вам может потребоваться добавление маршрута windows, тут за примером далеко ходить не нужно, самое простое, что вам нужно направить трафик до определенной локальной сети, понятно что все маршруты должен знать шлюз по умолчанию, но не всегда это возможно выполнить по ряду причин и не правильном построении сети. Кстати если кому интересно, то я рассказывал, как делается настройка маршрутов в centos, советую посмотреть для расширения кругозора.
Добавление маршрута windows
Добавление маршрута Windows начинается с изучения синтаксиса команды отвечабщего за это, открываем командную строку от имени администратора и вводим вот такую команду:
Запущенная без параметров, команда route выводит справку.
Утилита командной строки Route
Конечная точка определяет конечную точку маршрута. Конечной точкой может быть сетевой IP-адрес (где разряды узла в сетевом адресе имеют значение 0), IP-адрес маршрута к узлу, или значение 0.0.0.0 для маршрута по умолчанию. mask маска_сети Указывает маску сети (также известной как маска подсети) в соответствии с точкой назначения. Маска сети может быть маской подсети соответствующей сетевому IP-адресу, например 255.255.255.255 для маршрута к узлу или 0.0.0.0. для маршрута по умолчанию. Если данный параметр пропущен, используется маска подсети 255.255.255.255. Конечная точка не может быть более точной, чем соответствующая маска подсети. Другими словами, значение разряда 1 в адресе конечной точки невозможно, если значение соответствующего разряда в маске подсети равно 0. шлюз Указывает IP-адрес пересылки или следующего перехода, по которому доступен набор адресов, определенный конечной точкой и маской подсети. Для локально подключенных маршрутов подсети, адрес шлюза — это IP-адрес, назначенный интерфейсу, который подключен к подсети. Для удаленных маршрутов, которые доступны через один или несколько маршрутизаторов, адрес шлюза — непосредственно доступный IP-адрес ближайшего маршрутизатора. metric метрика Задает целочисленную метрику стоимости маршрута (в пределах от 1 до 9999) для маршрута, которая используется при выборе в таблице маршрутизации одного из нескольких маршрутов, наиболее близко соответствующего адресу назначения пересылаемого пакета. Выбирается маршрут с наименьшей метрикой. Метрика отражает количество переходов, скорость прохождения пути, надежность пути, пропускную способность пути и средства администрирования. if интерфейс Указывает индекс интерфейса, через который доступна точка назначения. Для вывода списка интерфейсов и их соответствующих индексов используйте команду route print. Значения индексов интерфейсов могут быть как десятичные, так и шестнадцатеричные. Перед шестнадцатеричными номерами вводится 0х. В случае, когда параметр if пропущен, интерфейс определяется из адреса шлюза. /? Отображает справку в командной строке.
Большие значения в столбце metric таблицы маршрутизации — результат возможности протокола TCP/IP автоматически определять метрики маршрутов таблицы маршрутизации на основании конфигурации IP-адреса, маски подсети и стандартного шлюза для каждого интерфейса ЛВС. Автоматическое определение метрики интерфейса, включенное по умолчанию, устанавливает скорость каждого интерфейса и метрики маршрутов для каждого интерфейса так, что самый быстрый интерфейс создает маршруты с наименьшей метрикой. Чтобы удалить большие метрики, отключите автоматическое определение метрики интерфейса в дополнительных свойствах протокола TCP/IP для каждого подключения по локальной сети.
Имена могут использоваться для параметра конечная_точка, если существует соответствующая запись в файле базы данных Networks, находящемся в папке системный_корневой_каталог\System32\Drivers\Etc. В параметре шлюз можно указывать имена до тех пор, пока они разрешаются в IP-адреса с помощью стандартных способов разрешения узлов, таких как запрос службы DNS, использование локального файла Hosts, находящегося в папке системный_корневой_каталог\system32\drivers\etc, или разрешение имен NetBIOS.
Эта команда доступна, только если в свойствах сетевого адаптера в объекте Сетевые подключения в качестве компонента установлен протокол Интернета (TCP/IP).
Примеры
Настройка маршрутов в Windows
Обработка таблиц сетевых маршрутов.
-f Очистка таблиц маршрутов от всех записей шлюзов. При указании
одной из команд таблицы очищаются до выполнения команды.
-p При использовании с командой ADD маршрут
сохраняется после перезагрузок системы. По умолчанию маршруты
не сохраняются при перезагрузке. Пропускается для остальных
команд, всегда изменяющих соответствующие постоянные маршруты.
-4 Принудительное использование протокола IPv4.
-6 Принудительное использование протокола IPv6.
Одна из следующих команд:
PRINT Печать маршрута
ADD Добавление маршрута
DELETE Удаление маршрута
CHANGE Изменение существующего маршрута
Задает узел.
MASK Далее следует значение параметра «маска_сети».
Значение маски подсети для записи данного маршрута.
Если этот параметр не задан, по умолчанию используется
значение 255.255.255.255.
Шлюз.
Номер интерфейса для указанного маршрута.
METRIC Определение метрики, т. е. затрат для узла назначения.
Проводится поиск всех символических имен узлов в файле сетевой базы данных
NETWORKS. Проводится поиск символических имен шлюзов в файле базы данных имен
узлов HOSTS.
Для команд PRINT и DELETE можно указать узел или шлюз с помощью подстановочного
знака либо опустить параметр «шлюз».
Если IF не задан, то производится попытка найти лучший интерфейс для
указанного шлюза.
Параметр CHANGE используется только для изменения шлюза или метрики.
Ключиком -p мы сохраним данный маршрут в таблице и он останется в ней даже после перезагрузки компьютера. Дополнительной функцией metric мы укажем «стоимость» конкретного маршрута. Мы уже взрослые, нам не нужно объяснять, как она работает.
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Трассировка сетевого маршрута
Оглавление
Что такое трассировка. Для чего нужна трассировка узлов
Трассировка маршрута пакета до сетевого хоста показывает все промежуточные узлы, через которые проходит пакет, пока доберётся до указанной цели. То есть с помощью трассировки можно узнать, по каким узлам, с какими IP адресами, передаётся пакет прежде чем быть доставленным до точки назначения.
Трассировка может применяться для выявления связанных с работой компьютерной сети проблем, а также для исследования сети (определения структуры сети, поиска промежуточных сетевых узлов).
Принципы работы трассировки
Пересылаемые сетевые пакеты состоят из двух областей: заголовки и данные. В заголовках находится разная информация, например, IP адреса пункта отправки и пункта назначения, порты отправки и назначения, тип пакета, контрольная сумма пакета и прочее. Среди полей заголовка, у IP протокола есть такое поле как time to live (TTL) — время жизни пакета. Это счётчик с числом, которое уменьшается на единицу каждый раз, когда пакет проходит новый узел. Этот счётчик сделан для того, чтобы проблемный пакет (например, при ошибке, повлекшей закольцованный маршрут) не путешествовал по сети бесконечно. То есть любой пакет пройдя определённое количество узлов в конце-концов достигнет точки назначения или будет отброшен одним из узлов сети, когда закончится «время жизни».
Когда счётчик TTL становится равным нулю, очередной шлюз просто не пересылает этот пакет дальше. Но при этом шлюз на тот IP адрес, откуда пришёл пакет с истёкшим временем жизни, отправляет по протоколу ICMP ответ TIME_EXCEEDED (время жизни кончилось). И этот ответ содержит IP адрес шлюза, где пакет закончил своё существование.
Так вот, суть трассировки в том, что отправляется один пакет с временем жизни (TTL) установленным на единицу — первый шлюз уменьшает значение на единицу, смотрит, что счётчик стал равен нулю, никуда не отправляет этот пакет, зато нам отправляет ответ, что пакет «умер». Мы и так знаем, что пакет умер — из этого ответа нас интересует только IP адрес шлюза, где с пакетом случилось это несчастье. Затем отправляется пакет со счётчиком установленным на 2 — пакет проходит первый шлюз (его IP мы уже знаем), но несчастье (счётчик достигает нуля) с ним случается уже на втором шлюзе — мы получаем ICMP ответ с IP этого шлюза. Затем отправляется следующий пакет и т. д., пока не будут определены все узлы до нужного нам сетевого хоста.
Виды трассировки
Имеется несколько видов трассировки. В основном они различаются отправляемым пакетом — это может быть пакет транспортного протокола TCP или UDP, либо протокола межсетевых управляющих сообщений ICMP, либо сырой IP пакет.
Иногда из-за файерволов или настройки сетевых узлов не удаётся получить IP адрес узла. В этом случае можно попробовать использовать другой метод, который может дать результаты.
Это можно проиллюстрировать на следующих двух примерах трассировки до одного и того же хоста:
Звёздочки говорят о том, что мы не узнали часть узлов.
Благодаря изменению метода трассировки удалось узнать все промежуточные узлы. Другие методы могут дать отличные от показанных результаты.
Некоторые программы позволяют выбирать метод трассировки, менять номер порта, а также устанавливать значения некоторых полей в заголовке пакета.
Программы для трассировки
Имеется много разных утилит для трассировки, некоторые из них поддерживают различные методы трассировки. Примеры таких программ:
Ещё определять узлы маршрута пакета можно с помощью Nmap (несколькими способами) и даже с помощью ping!
В этой статье я рассмотрю все перечисленные выше программы. Начнём знакомство с traceroute, поскольку в ней реализовано больше всего методов сканирования.
traceroute
Как пользоваться traceroute
Для запуска трассировки достаточно указать IP или сайт, до которого вы хотите проследить маршрут:
Если вас интересуют ближайшие узлы (локальная сеть, например), то в качестве конечного пункта можно выбрать любой сайт.
Методы трассировки в traceroute
В современном сетевом окружении традиционные методы трассировки не всегда применимы из-за широкого распространения файерволов. Такие файерволы фильтруют «маловероятные» UDP порты или даже ICMP echo пакеты. Для решения этой проблемы реализованы некоторые дополнительные методы трассировки сети (включая tcp). Эти методы пытаются использовать другие протокол и порт источника/назначения, чтобы обойти файерволы (чтобы файерволы воспринимали их как просто начало сетевой сессии разрешённого типа).
У разных методов есть специфичные для них опции — они зависят от используемого протокола. Эти опции метода можно указать с помощью опции -O. Несколько опций разделяются запятой (или используйте в командной строке несколько -O). Каждый метод может иметь свои собственные особенные опции или может не иметь из вовсе.
default
Метод по умолчанию — используется если не указан другой, либо можно указать явно опцией -M default. Это традиционный, древний метод трассировки маршрута.
Пакетами зондирования являются udp датаграммы с так называемым «unlikely» (маловероятным) портом назначения. Первым «unlikely» портом зондирования является 33434 затем для каждого следующего зонда он увеличивается на единицу. Поскольку ожидается, что порт не используется, то хост назначения обычно возвращает конечный ответ «icmp unreach port». Номер порта можно поменять (об этом ниже).
Данный метод могут выполнять непривилегированные пользователи.
icmp
Сейчас это самый типичный метод, он использует в качестве зондов пакеты icmp echo. Если вы можете пинговать хост назначения, то icmp трассировка также применима. Для выбора этого метода используется опция -M icmp или её короткий вариант -I.
Этот метод разрешён для непривилегированных пользователей.
У этого метода имеется две специфичные опции
Использовать только сырые сокеты (традиционный способ).
По умолчанию этот методы пробуется первым (по причинам совместимости), затем новые сокеты dgram icmp в качестве резервного варианта.
dgram
Использовать только сокеты dgram icmp
tcp
Хорошо известный современный метод, предназначен для обхода файерволов. Для использования укажите опцию -M tcp либо короткий вариант -T. Использует постоянный порт назначения (по умолчанию это 80, http).
Этот метод использует хорошо известную «технику полуоткрытых соединений», благодаря которой приложения на компьютере назначения вовсе не видят наши пакеты для исследования (зонды). Обычно отправляется tcp syn. Для портов, которые не прослушиваются, мы получаем ответ tcp reset — и всё готово. Для активно прослушиваемых портов мы получаем tcp syn+ack, но отвечаем на это tcp reset (вместо ожидаемого tcp ack), таким образом удалённая tcp сессия сбрасывается, а прослушивающее порт приложение даже не получает уведомление.
Для метода tcp имеется несколько опций:
syn,ack,fin,rst,psh,urg,ece,cwr
Устанавливает определённые tcp флаги для пакета зондирования, можно использовать любую их комбинацию.
flags=ЧИСЛО
Устанавливает поле флагов в tcp заголовке на точное ЧИСЛО.
Отправляет пакет syn с флагами tcp ECE и CWR (для Explicit Congestion Notification, rfc3168).
sack,timestamps,window_scaling
Использует соответствующую опцию tcp заголовка в исходящем пакете зондирвоания.
sysctl
Использует настройки текущей sysctl (/proc/sys/net/*) для опций tcp заголовка для вышеприведённых опций и ecn. Всегда установлено на значение по умолчанию, если ничего не указано.
mss=ЧИСЛО
Использовать значение ЧИСЛО для опции tcp заголовка maxseg (когда syn).
info
Печатать tcp флаги финальных tcp ответов когда достигнут целевой хост. Помогает определить, прослушивает ли приложение порт и другие полезные вещи.
Опциями по умолчанию являются syn,sysctl.
tcpconn
Начальная реализация tcp метода просто использующего вызов connect(2), который открывает полную tcp сессию. Не рекомендуется для нормального использование, поскольку всегда влияет на приложение прослушивающее порт на хосте назначения.
Для задействования этого метода используйте опцию -M tcpconn.
udp
Использует udp датаграммы с постоянным портом назначения (по умолчанию 53, dns). Также предназначена для обхода файерволов. Для использования этого метода трассировки укажите опцию -M udp или сокращённый вариант -U.
Обратите внимание, что в отличие от tcp метода, соответствующее приложение на хосте назначения всегда получает наши зонды (со случайными данными) что может смутить его. В большинстве случаев оно не ответит на наши пакеты, поэтому мы никогда не увидим последний хоп (узел) в пути трассировки. (К счастью, кажется что по крайней мере DNS серверы присылают какой-то ответ).
Этот метод не требует повышенных прав.
udplite
Использует для зондов датаграммы udplite (с постоянным портом назначения, по умолчанию 53). Для активации этого метода укажите опцию -M udplite или -UL.
Этот метод не требует повышенных прав.
coverage=ЧИСЛО
Устанавливает покрытие отправки udplite на ЧИСЛО.
dccp
Использует для зондов пакеты DCCP Request (rfc4340). Этот метод можно задействовать опциями -M dccp или -D.
Этот метод использует такую же «технику полуоткрытых соединений», которая используется для TCP. Портом назначения по умолчанию является 33434.
service=ЧИСЛО
Устанавливает сервисный код DCCP на ЧИСЛО (по умолчанию это 1885957735).
raw
Этим методом отправляются сырые пакеты указанного протокола. Для вызова этого метода используйте опцию -M raw или -P ПРОТОКОЛ.
Не используется специфичные для транспортных протоколов заголовки, только заголовки IP протокола.
protocol=ПРОТОКОЛ
Использовать IP ПРОТОКОЛ (по умолчанию 253).
Список протоколов, инкапсулируемых в IP на Википедии, в первоисточнике.
Как ускорить трассировку. Как отключить обратное преобразование IP в имена хостов при трассировке
Чуть выше описаны принципы работы трассировки — отправка пакетов с постоянно увеличивающимся сроком жизни. На самом деле — все пакеты (с TTL 1, с TTL 2, с TTL 3 и т. д.) можно отправить одновременно. И именно так это и происходит — по умолчанию отправляются 16 пакетов за раз (количество можно изменить опцией -N). Это делается для ускорения трассировки.
Поэтому в действительности трассировка выполняется очень быстро. Те 1-2 секунды, которые как нам кажется определяются узлы сети, на самом деле тратятся на получение имён хостов для IP. С помощью опции -n это можно отключить.
Используя программу time можно замерить время выполнения программы с опцией -n и без неё:
Время выполнения самой трассировки 0,206s, а время трассировка+определение имени хостов получилось 2,360s, то есть в 10 раз дольше.
Трассировка IPv6
По умолчанию программа получает IP для указанного для трассировки хоста и на основе полученного IP адреса автоматически определяет, какой протокол используется: IPv4 или IPv6. Если получены IP для обоих протоколов, то по умолчанию используется IPv4.
С помощью опций -4 и -6 можно явно указать желаемый протокол.
Сеть, из которой делается трассировка с опцией -6, должна поддерживать IPv6, иначе ничего не получится.
Изменение порта
Поменять порт назначения можно с помощью опции:
Для UDP трассировки указанный порт будет использовать в качестве базового (номер порта назначения будет увеличиваться для каждого зонда).
Для ICMP трассировки указанное число будет использоваться в качестве начальное значение ICMP последовательности (также увеличенное для каждого зонда).
Для TCP и других указанный порт будет использоваться в качестве постоянного порта назначения к которому нужно подключиться.
Обычно это не требуется, но также можно указать и порт источника, это делается опцией:
Как начать трассировку с определённого узла. Как уменьшить или увеличить число узлов для трассировки
С помощью опции -f можно указать номер узла, с которого следует начать трассировку. По умолчание значение равно 1.
С помощью опции -m можно указать максимальное число хопов для трассировки, по умолчанию установлено на 30.
Выбор интерфейса для трассировки
По умолчанию пакеты отправляются с того интерфейса, для которого настроен маршрут по умолчанию. Но следующей опцией можно сделать так, что traceroute будет отправлять пакеты с указанного в строке команды интерфейса:
Как показать к какой автономной системе принадлежит узел при трассировке
Каждый IP адрес привязан к Автономной системе (AS). С помощью опции -A вы можете включить запрос номера AS для каждого узла по пути трассировки, например:
Как можно увидеть из вывода предыдущей команды, первые четыре узла имеют локальный IP адреса. Узлы с 5 по 9 принадлежат одной автономной системе AS38082/AS7470. Предпоследние два узла принадлежат одной автономной системе AS12389 и последние два узла также принадлежат одной автономной системе AS48666 — интернет-провайдеру, на котором размещён сайт suip.biz.
Опции traceroute
У команды traceroute имеются и другие опции которые могут вам пригодиться. Вы можете ознакомиться с ними в справочной странице данной программы:
tracepath
Программа tracepath схожа с traceroute, но использует только одну технику трассировки: UDP, для которой можно указать свой порт. Из-за выбранной техники, программа не требует повышенных привилегий.
В первой колонке рядом с номера узла может стоять знак вопроса — он означает, что в присланном ответе отсутствует номер TTL и программа пытается его предположить.
Вместо звёздочек, если IP не узнан, пишется no reply.
В последнем столбце может быть цифра и слово asymm. Слово asymm означает, что маршрут является ассиметричным — то есть от нас до этого узла пакет идёт по одному пути, а от этого узла к нам пакет проходит по другому пути. Цифра означает возможное количество хопов от этого узла до нас — но информация не является надёжной.
У tracepath не очень много опций:
Использовать только IPv4
Использовать только IPv6
Не печатать имя хоста, а печатать цифровое значение IP.
Печатать и имя хоста и IP адрес в цифровом виде.
Установить начальную длину пакета вместо 65535 для tracepath или 128000 для tracepath6.
Установить максимальное число хопов (или максимум TTL) — то есть количество максимально «простукиваемых» узлов. По умолчанию 30.
Установить начальный порт назначения.
mtr и mtr-gtk (консольная и графическая версия)
Программа mtr совмещает в себе функциональность программа traceroute и ping в едином инструменте диагностики сети. То есть эта программа показывает маршрут до указанного узла и непрерывно пингует каждые хоп и при этом собирает общую статистику потерь — на основе этих данных можно определить проблемный узел, на котором теряются пакеты.
Данная программа поддерживает несколько методов трассировки.
Также она поддерживает разные форматы вывода для сохранения результатов, например, опция -C, —csv для сохранения результатов в формате CSV (обратите внимание, что на самом в качестве разделителя используется не запятая, а точка с запятой), а также опция -j, —json для сохранения в формате вывода JSON.
С помощью опции -n, —no-dns можно отключить преобразование IP в имена хостов.
Опцией -y n, —ipinfo n можно настроить вывод дополнительной информации о каждом IP хопа. В качестве n нужно указать цифру, которая означает:
У меня при любых значениях -y всегда показывается только номер автономной системы. К счастью, между различными видами можно переключаться по кругу используя кнопку y:
Опция -z, —aslookup отображает номер Автономной Системы (AS) для каждого хопа.
Опция -f NUM используется для установки номера первого TTL. По умолчанию равно 1.
Опция -m указывать максимальное число хопов (максимальное значение time-to-live) которое будет обрабатываться при трассировке. По умолчанию равно 30.
Опция -U ЧИСЛО устанавливает максимум незнакомых хостов. По умолчанию равно 5. Видимо, после достижения этого значения дальнейшая трассировка будет остановлена.
С помощью опции -u, —udp программа будет использовать датаграммы UDP вместо ICMP ECHO.
А опцией -T, —tcp можно установить использование TCP SYN пакетов вместо ICMP ECHO. PACKETSIZE игнорируется, поскольку SYN пакеты не могут содержать данные.
В mtr можно использовать даже SCTP протокол для трассировки, для этого укажите опцию -S, —sctp и будет задействованы пакеты Stream Control Transmission Protocol вместо ICMP ECHO.
Во время работы программы доступны интерактивные команды. Если нажать на d, то можно переключаться между различными отображениями:
Кнопкой r можно сбросить статистику.
Кнопкой o можно поменять порядок полей. Кстати, опцией -o можно установить, какие поля вы хотите отображать и их последовательность. Подробности смотрите по:
Программа lft имеет много опций трассировки и из описание следует, что программа пробует несколько комбинаций и автоматически выбирает лучшее решение. Честно говоря, я этого не заметил: результаты с ручным перебором разных методов трассировки позволяют подобрать наилучший вариант.
Программа хорошо документирована и при желании может использоваться в качестве альтернативы traceroute.
tcptraceroute
В программе tcptraceroute используются пакеты только одного протокола TCP. В заголовках этих пакетов опциями можно установить разные флаги. В программе traceroute также можно устанавливать флаги протокола TCP, причём возможностей для настройки больше.
Трассировка сети в Nmap
В Nmap для трассировки есть опция —traceroute, пример трассировки до сайта suip.biz:
Если вы не хотите сканировать порты, а хотите просто выполнить трассировку, то добавьте опцию -sn:
Кстати, это значительно сократить время до вывода результатов.
Бывает, что выводимые при трассировке программой nmap данные не являются полными. В этом случае попробуйте дополнительно добавить опцию -PE:
В Nmap можно установить опции в заголовке пакета IP протокола. Среди этих опций имеется такая, которая сохраняет в заголовке пакета пройденный маршрут. Но у этого варианта есть ряд ограничений:
Тем не менее иногда это работает, пример команды:
Обратите внимание на строку:
В ней перечислены первые 9 узлов через которые прошёл пакет.
Трассировка программой ping
Программа ping также умеет записывать маршрут — для этого программу нужно запустить с опцией -R. Она в пакет ECHO_REQUEST добавляет опцию RECORD_ROUTE и отображает буфер маршрута возвращаемых пакетов. Эта та же опция, которую использует Nmap. Ограничения такие же: максимум 9 слотов, многие хосты игнорирует или отбрасывают эту опцию.
IP маршрута выводятся при каждом пинге. Если маршрут не меняется, то выводится надпись, что маршрут не изменился.
Несмотря на все ограничения опции RECORD_ROUTE, иногда она бывает единственным вариантом получить хоть какую-то информацию о маршруте, поскольку команда ping практически всегда присутствует и не требует повышенных привилегий для запуска.
Трассировка в Windows
В Windows для трассировки сети имеется встроенная команда tracert. У неё практически отсутствуют опции. Для запуска команды достаточно указать имя удалённого хоста:
Если вам недостаточно такой функциональности, то вы можете установить Nmap в Windows.
Заключение
Трассировка может быть полезной для изучения структуры сети (например, сети вашего Интернет-провайдера), а также для исправления проблем с передачей данных (например, для определения узла, дальше которого пакеты не проходят).
Самой богатой по функционалу для трассировки сети является программа traceroute. Другие программы также или содержат интересные опции или могут использоваться в качестве альтернатив, если ничего другое не доступно или если запуск traceroute прав суперпользователя.