Маршрутизация в Windows
Маршрутизация – это процесс передачи IP-трафика адресатам в сети, то есть процесс передачи пакетов от хоста-источника к хосту-адресату через промежуточные маршрутизаторы. Изучая эту статью предполагается что вы изучили материал основы компьютерных сетей.
Изучим как работает маршрутизация в Windows, что бы понять как она работает, а не просто прочитать и забыть, вам необходимо несколько виртуальных машин, а именно:
- ВМ с Windows XP.
- 2 ВМ с Windows Server 2003.
Учтите, что при настройке виртуальных машин, в настройках сети нужно указать «Внутренняя сеть» и задать одинаковое имя сети для всех машин.
Если вы не поленитесь и установите три виртуальные машины, а так же изучите этот материал до конца, то у вас будет практическое понимание работы сети в операционных системах семейства Windows.
Содержание:
- Таблица маршрутизации
- Статическая маршрутизация
- Маршрутизация по умолчанию
- Динамическая маршрутизация, протокол RIP
Для простоты передачи данных хост-источник и маршрутизатор принимают решения о передаче пакетов на основе своих таблиц IP-маршрутизации. Записи таблицы создаются при помощи:
- Программного обеспечения стека TCP/IP.
- Администратора, путем конфигурирования статических маршрутов.
- Протоколов маршрутизации, одним из которых является протокол передачи маршрутной информации – RIP.
По сути, таблица маршрутизации – это база данных, которая хранится в памяти всех IP-узлов. Цель таблицы IP-маршрутизации это предоставление IP-адреса назначения для каждого передаваемого пакета для следующего перехода в сети.
Пример маршрутизации в Windows
Допустим, у нас есть три узла:
- Windows XP.
- Windows Server 2003 – 1.
- Windows Server 2003 – 2.
Хост 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 автоматически создало таблицу маршрутизации по умолчанию.
Что бы просмотреть таблицы маршрутизации на узле XP выполним команду route print
в командной строке (Пуск -> Выполнить -> cmd
).
Таблица маршрутизации содержит для каждой записи следующие поля: Сетевой адрес (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 интерфейс]
Параметры команды имеют следующие значения:
- адресат — адрес сети или хоста, для которого добавляется маршрут;
- mask — если вводится это ключевое слово, то следующий параметр интерпретируется как маска подсети, соответственно маска — значение маски;
- шлюз — адрес шлюза;
- metric — после этого ключевого слова указывается метрика маршрута до адресата (метрика);
- if — после этого ключевого слова указывается индекс интерфейса, через который будут направляться пакеты заданному адресату.
Индекс интерфейса можно определить из секции Список интерфейсов (Interface List) выходных данных команды route print.
Выполним команду route print
.
Теперь мы видим , что хост XP имеет два интерфейса: логический интерфейс замыкания на себя (Loopback) и физический интерфейс с сетевым адаптером Intel(R) PRO/1000. Индекс физического интерфейса – 0x2.
Теперь, зная индекс физического интерфейса, на хосте добавьте нужный маршрут, выполнив следующую команду:
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
Эта команда сообщает хосту XP о том, что для того, чтобы достичь любой сети, маршрут к которой отсутствует в таблице маршрутизации, необходимо использовать шлюз 192.168.0.1 и интерфейс с индексом
0x10003
.Это так называемый маршрут по умолчанию.
Проверьте работоспособность с помощью команды ping.
Динамическая маршрутизация, протокол RIP
Протокол RIP (Routing Information Protocol или Протокол передачи маршрутной информации) является одним из самых распространенных протоколов динамической маршрутизации.
Его суть заключается в том, что маршрутизатор использующий RIP передает во все подключенные к нему сети содержимое своей таблицы маршрутизации и получает от соседних маршрутизаторов их таблицы.
Есть две версии протокола RIP. Версия 1 не поддерживает маски, поэтому между сетями распространяется только информация о сетях и расстояниях до них. При этом для корректной работы RIP на всех интерфейсах всех маршрутизаторов составной сети должна быть задана одна и та же маска.
Протокол RIP полностью поддерживается только серверной операционной системой, тогда как клиентская операционная система (например, Windows XP) поддерживает только прием маршрутной информации от других маршрутизаторов сети, а сама передавать маршрутную информацию не может.
Настраивать RIP можно двумя способами:
- В графическом режиме с помощью оснастки “Маршрутизация и удаленный доступ”.
- В режиме командной строки с помощью утилиты netsh.
Рассмотрим настройку в режиме командной строки с помощью утилиты netsh.
Netsh – это утилита командной строки и средство выполнения сценариев для сетевых компонентов операционных систем семейства Windows (начиная с Windows 2000).
Введите в командной строке команду netsh, после появления netsh> введите знак вопроса и нажмите Enter, появиться справка по команде.
Введите последовательно команды:
- routing
- Ip
- rip
- ?
Вы увидите, что среди доступных команд этого контекста есть команда add interface, позволяющая настроить RIP на заданном интерфейсе. Простейший вариант этой команды – add interface «Имя интерфейса».
Если ввести в Windows XP в контексте netsh routing ip rip
команду add interface "Net1"
, то получим сообщение «RIP должен быть установлен первым». Дело в том, что Установить RIP можно только в серверной операционной системе. В Windows Server 2003 в RIP включается в оснастке «Маршрутизация и удаленный доступ» (Пуск –> Программы –> Администрирование –> Маршрутизация и удаленный доступ). Таким образом, включить RIP в нашем случае можно только на маршрутизаторах Server1 и Server2.
Настроим RIP на Server1. Но сначала нужно выключит брандмауэр.
Теперь в оснастке «Маршрутизация и удаленный доступ» в контекстном меню пункта SERVER1 (локально) выберите пункт «Настроить и включить Маршрутизация ЛВС
маршрутизацию и удаленный доступ».
В появившемся окне мастера нажмите «Далее».
На следующем этапе выберите «Особая конфигурация» и нажмите «Далее».
После чего нужно выбрать «Маршрутизация ЛВС» и завершить работу мастера.
То же самое нужно выполнить на Server2.
Настройка через оснастку
В контекстном меню вкладки «Общие» (SERVER1 –> IP-маршрутизация –> Общие) нужно выбрать пункт «Новый протокол маршрутизации».
Затем выделяем строку «RIP версии 2 для IP».
В контекстном меню появившейся вкладки «RIP» выберите «Новый интерфейс». Выделите строку «Подключение по локальной сети» и нажмите ОК.
Перед вами появиться окно.
В появившемся окне необходимо задать следующие настройки:
- Режим работы –> Режим периодического обновления.
- Протокол для исходящих пакетов –> Для RIP версии 1.
- Протокол входящих пакетов –> Только для RIP версии 1.
Оставьте оставшиеся настройки по умолчанию и нажмите ОК.
Далее необходимо выполнить эти действия для второго сетевого интерфейса.
После выполните те же действия для Sever2.
Проверьте, с помощью команды ping, работу сети.
Поздравляю! Маршрутизация в Windows изучена.
Each IP packet contains information about its origin and destination.
A routing table contains the information necessary to forward an IP packet along the best path toward its destination.
In this note i will show how to display the routing table in Windows using the route print
command.
Cool Tip: Check if TCP port is opened in PowerShell! Read more →
To display the routing table in Windows, use the route
command with the print
option.
Display all routing tables:
C:\> route print
Print IPv4 routing table:
C:\> route print -4
Print IPv6 routing table:
C:\> route print -6
Show only the network destinations that match 192*
:
C:\> route print 198*
Example of the routing table in Windows:
IPv4 Route Table ================================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.31 50 127.0.0.0 255.0.0.0 On-link 127.0.0.1 331 127.0.0.1 255.255.255.255 On-link 127.0.0.1 331 192.168.1.0 255.255.255.0 On-link 192.168.1.31 306 192.168.1.31 255.255.255.255 On-link 192.168.1.31 306
Column | Description |
---|---|
Network Destination & Netmask | Specifies the pattern that a request must match with its destination address (IP address or CIDR range). |
Gateway | Specifies where to route a request i.e. the next hop to which the packet is to be sent on the way to its final destination. |
Interface | Indicates a local interface that is responsible for reaching the gateway. |
Metric | Indicates the associated cost of using the indicated route (“distance” to the target). In case of multiple feasible routes, the traffic will go through the gateway with the lowest metric. |
On-link
in the “Gateway” column means that the destination network is directly attached to the interface i.e. the NIC is in direct contact with the destination
network – on the same subnet.
The traffic that matches such route entry will trigger an ARP request on the interface to resolve the destination IP address directly i.e. find out a MAC-address of the target device (without contacting the gateway).
Cool Tip: How to show an ARP table and clear its cache in Windows! Read more →
Was it useful? Share this post with the world!
To display the routing table on Windows, we can use route print
or netstat -r
command. The output of both commands is identical. However, the route
command has command options to filter the output to show the routing table for IPv4
or IPv6
separately.
To show the routing table, open a CDM (or PowerShell window) and type the following command:
route print
You will see an output similar to the following.
The output of the route print
command includes the following sections: Interface List, IPv4 Route Table, and IPv6 Route Table. The persistent Routes section shows permanent static routes.
Route Print Command Options
To show IPv4 routing table, Type:
route print -4
To show IPv6 routing table, Type:
route print -6
Using the wildcard character (*), you can create search patterns. For example route print 192.*
only prints those routes that have a destination IP address start with 192
.
Таблица маршрутизации — таблица, состоящая из сетевых маршрутов и предназначенная для определения наилучшего пути передачи сетевого пакета. Каждая запись в таблице маршрутизации состоит, как правило, из таких полей:
- адрес сети или узла назначения, либо указание, что маршрут является маршрутом по умолчанию
- маску сети назначения (маска 255.255.255.255 позволяет указать единичный узел сети)
- шлюз, обозначающий адрес маршрутизатора в сети, на который необходимо отправить пакет, следующий до указанного адреса
- интерфейс, через который доступен шлюз (это может быть порядковый номер, GUID или символьное имя устройства)
- метрику — числовой показатель, задающий предпочтительность маршрута; чем меньше, тем предпочтительнее маршрут
Шлюз по умолчанию (default gateway) — адрес маршрутизатора, на который отправляется трафик, для которого невозможно определить маршрут, исходя из таблиц маршрутизации. Шлюз по умолчанию задаётся записью в таблице маршрутизации вида «сеть 0.0.0.0 с маской сети 0.0.0.0».
Просмотр маршрутов в Windows
Команда route
выводит на экран все содержимое таблицы IP-маршрутизации и позволяет изменять записи. Запущенная без параметров, команда route выводит справку:
> route Обработка таблиц сетевых маршрутов. ROUTE [-f] [-p] [-4|-6] <команда> [<назначение>] [MASK <маска_сети>] [<шлюз>] [METRIC <метрика>] [IF <интерфейс>] -f Очистка таблиц маршрутов от всех записей шлюзов. При указании одной из команд таблицы очищаются до выполнения команды. -p При использовании с командой ADD маршрут сохраняется после перезагрузок системы. По умолчанию маршруты не сохраняются при перезагрузке. Пропускается для остальных команд, всегда изменяющих соответствующие постоянные маршруты. -4 Принудительное использование протокола IPv4. -6 Принудительное использование протокола IPv6. <команда> Одна из следующих команд: PRINT Печать маршрута ADD Добавление маршрута DELETE Удаление маршрута CHANGE Изменение существующего маршрута <назначение> Задает узел. MASK Далее следует значение параметра "маска_сети". <маска_сети> Значение маски подсети для записи данного маршрута. Если этот параметр не задан, по умолчанию используется значение 255.255.255.255. <шлюз> Шлюз. <интерфейс> Номер интерфейса для указанного маршрута. METRIC Определение метрики, т. е. затрат для узла назначения. Проводится поиск всех символических имен узлов в файле сетевой базы данных NETWORKS. Проводится поиск символических имен шлюзов в файле базы данных имен узлов HOSTS. Для команд PRINT и DELETE можно указать узел или шлюз с помощью подстановочного знака либо опустить параметр "шлюз". Если узел содержит подстановочный знак "*" или "?", он используется в качестве шаблона и печатаются только соответствующие ему маршруты. Знак "*" соответствует любой строке, а "?" - любому знаку. Примеры: 157.*.1, 157.*, 127.*, *224*. Соответствие шаблону поддерживает только команда PRINT. Диагностические сообщения: Недопустимое значение MASK вызывает ошибку, если (УЗЕЛ МАСКА) != УЗЕЛ. Например> route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1 IF 1 Добавление маршрута завершится ошибкой, так как указан недопустимый параметр маски. (Узел & Маска) != Узел. Примеры: > route PRINT > route PRINT -4 > route PRINT -6 > route PRINT 157* .... Печать только узлов, начинающихся со 157 > route ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1 METRIC 3 IF 2 узел^ ^маска ^шлюз метрика^ ^ интерфейс^ Если IF не задан, то производится попытка найти лучший интерфейс для указанного шлюза. > route ADD 3ffe::/32 3ffe::1 > route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2 Параметр CHANGE используется только для изменения шлюза или метрики. > route DELETE 157.0.0.0 > route DELETE 3ffe::/32
Просмотр таблицы маршрутизации:
> route print =========================================================================== Список интерфейсов 21...0a 00 27 00 00 15 ......VirtualBox Host-Only Ethernet Adapter 5...0a 00 27 00 00 05 ......VirtualBox Host-Only Ethernet Adapter #2 20...1c 1b 0d e6 14 bd ......Realtek PCIe GbE Family Controller 1...........................Software Loopback Interface 1 =========================================================================== IPv4 таблица маршрута =========================================================================== Активные маршруты: Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика 0.0.0.0 0.0.0.0 192.168.110.1 192.168.110.2 35 127.0.0.0 255.0.0.0 On-link 127.0.0.1 331 127.0.0.1 255.255.255.255 On-link 127.0.0.1 331 127.255.255.255 255.255.255.255 On-link 127.0.0.1 331 172.28.128.0 255.255.255.0 On-link 172.28.128.1 281 172.28.128.1 255.255.255.255 On-link 172.28.128.1 281 172.28.128.255 255.255.255.255 On-link 172.28.128.1 281 192.168.53.0 255.255.255.0 On-link 192.168.53.1 281 192.168.53.1 255.255.255.255 On-link 192.168.53.1 281 192.168.53.255 255.255.255.255 On-link 192.168.53.1 281 192.168.110.0 255.255.255.0 On-link 192.168.110.2 291 192.168.110.2 255.255.255.255 On-link 192.168.110.2 291 192.168.110.255 255.255.255.255 On-link 192.168.110.2 291 224.0.0.0 240.0.0.0 On-link 127.0.0.1 331 224.0.0.0 240.0.0.0 On-link 172.28.128.1 281 224.0.0.0 240.0.0.0 On-link 192.168.53.1 281 224.0.0.0 240.0.0.0 On-link 192.168.110.2 291 255.255.255.255 255.255.255.255 On-link 127.0.0.1 331 255.255.255.255 255.255.255.255 On-link 172.28.128.1 281 255.255.255.255 255.255.255.255 On-link 192.168.53.1 281 255.255.255.255 255.255.255.255 On-link 192.168.110.2 291 =========================================================================== Постоянные маршруты: Отсутствует IPv6 таблица маршрута =========================================================================== Активные маршруты: Метрика Сетевой адрес Шлюз 1 331 ::1/128 On-link 20 291 fe80::/64 On-link 5 281 fe80::/64 On-link 21 281 fe80::/64 On-link 21 281 fe80::14e:9612:aea9:b378/128 On-link 5 281 fe80::61bb:3768:1294:4dc0/128 On-link 20 291 fe80::a872:bd46:b87d:7fac/128 On-link 1 331 ff00::/8 On-link 21 281 ff00::/8 On-link 5 281 ff00::/8 On-link 20 291 ff00::/8 On-link =========================================================================== Постоянные маршруты: Отсутствует
Команда tracert
предоставляет возможность определить маршрут, по которому проходит пакет до заданного узла:
> tracert ya.ru Трассировка маршрута к ya.ru [87.250.250.242] с максимальным числом прыжков 30: 1 <1 мс <1 мс <1 мс 192.168.110.1 2 1 ms <1 мс <1 мс 78.107.125.69 3 1 ms 1 ms 1 ms stpert-bng1-local.msk.corbina.net [85.21.0.172] 4 1 ms 1 ms 1 ms 10.2.254.10 5 3 ms 3 ms 3 ms korova-bb-be5.corbina.net [195.14.54.195] 6 2 ms 2 ms 2 ms 85.21.224.96 7 2 ms 2 ms 2 ms 85.21.224.54 8 3 ms 2 ms 3 ms m9-br-be1.corbina.net [195.14.54.79] 9 7 ms 7 ms 12 ms corbina-gw.dante.yandex.net [83.102.145.178] 10 5 ms 4 ms 4 ms ya.ru [87.250.250.242] Трассировка завершена.
Просмотр маршрутов в Linux
Команда route
выводит на экран все содержимое таблицы IP-маршрутизации и позволяет изменять записи.
$ $ route --help Использование: route [-nNvee] [-FC] [<AF>] Отобразить таблицу маршрутизации ядра route [-v] [-FC] {add|del|flush} ... Изменить таблицу маршрутизации для AF. route {-h|--help} [<AF>] Детальное описание использование указанной AF. route {-V|--version} Отобразить версию/автора и выйти. -v, --verbose более детальный вывод -n, --numeric не преобразовывать адреса в имена -e, --extend отображать другую/больше информации -F, -fib отобразить информацию форвардинга базы (по умолчанию) -C, --cache отобразить кэш маршрутизации вместо FIB <AF>=Use -4, -6, '-A <af>' or '--<af>'; default: inet Список возможный адресных семейств (которые поддерживают маршрутизацию): inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) x25 (CCITT X.25)
Просмотр таблицы маршрутизации:
$ route Таблица маршрутизации ядра протокола IP Destination Gateway Genmask Flags Metric Ref Use Iface default _gateway 0.0.0.0 UG 100 0 0 enp0s3 link-local 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s3 192.168.110.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
$ route -n Таблица маршрутизации ядра протокола IP Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.110.1 0.0.0.0 UG 100 0 0 enp0s3 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s3 192.168.110.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
Утилита traceroute
предоставляет возможность определить маршрут, по которому проходит пакет до заданного узла:
$ sudo apt install traceroute
$ traceroute ya.ru traceroute to ya.ru (87.250.250.242), 30 hops max, 60 byte packets 1 _gateway (192.168.110.1) 0.697 ms 0.607 ms 0.584 ms 2 78.107.125.69 (78.107.125.69) 2.050 ms 1.967 ms 1.777 ms 3 stpert-bng1-local.msk.corbina.net (85.21.0.172) 1.679 ms 1.605 ms 1.499 ms 4 10.2.254.10 (10.2.254.10) 2.215 ms 2.180 ms 2.167 ms 5 korova-bb-be5.corbina.net (195.14.54.195) 3.577 ms 3.544 ms 3.824 ms 6 85.21.224.96 (85.21.224.96) 2.645 ms 2.208 ms 2.149 ms 7 m9-crs-be13.corbina.net (85.21.224.54) 3.762 ms 3.207 ms 3.794 ms 8 m9-br-be3.corbina.net (195.14.62.85) 3.716 ms 3.639 ms m9-br-be1.corbina.net (195.14.54.79) 3.559 ms 9 corbina-gw.dante.yandex.net (83.102.145.178) 6.750 ms 11.716 ms 16.226 ms 10 ya.ru (87.250.250.242) 5.330 ms 8.678 ms 8.628 ms
Поиск:
Linux • Windows • Локальная сеть • route • Маска сети • Шлюз • Маршрут • Таблица • Адрес • Команда
Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Как сетевые инженеры, мы должны быть универсальными и обладать навыками оперативного устранения неполадок в рабочей среде. Помимо глубокого знания сетевых протоколов и команд для сетевого оборудования (маршрутизаторы, коммутаторы, межсетевые экраны и т.д.), нам также необходимо досконально разбираться в IP-адресации и других сетевых командах для конечных устройств — таких как компьютеры с Windows, серверы на Linux, рабочие станции и т.д.
В этой статье я перечислю и опишу самые полезные и важные IP-команды в операционной системе Windows. Большинство из них (за некоторыми исключениями и различиями) также доступны в Linux.
Мне не раз приходилось начинать диагностику сетевых проблем и неполадок подключения с проверки конечного устройства (компьютера, сервера и т.д.), прежде чем переходить к основному сетевому оборудованию для углубленного анализа. Это помогает лучше понять проблему с точки зрения пользователя, поэтому такой подход всегда полезен.
Знание следующих IP-команд значительно расширит ваш арсенал инструментов для диагностики и устранения сетевых проблем.
Теперь давайте рассмотрим самые популярные команды из командной строки, связанные с сетями и другими аспектами:
ipconfig
Это одна из самых полезных IP-команд в Windows. Она выводит множество полезной информации о текущих сетевых настройках устройства: IPv4- и IPv6-адреса всех сетевых интерфейсов (Ethernet-адаптеры, Wi-Fi, виртуальные интерфейсы и т.д.), MAC-адрес, шлюз по умолчанию, маску подсети, DNS-сервер, данные DHCP и многое другое.
Если вам нужно узнать локальный IP-адрес вашего компьютера или MAC-адрес Ethernet-адаптера (который в выводе команды отображается как «Физический адрес» — см. пример на изображении ниже), это самый быстрый способ получить эту информацию.
Пример скриншота с выводом команды ipconfig:
Как видно из примера выше, здесь отображаются данные IPv4, MAC-адрес, шлюз по умолчанию, DNS-серверы и т.д.
Вот несколько вариантов этой команды:
ipconfig /? - Отображает все доступные параметры.
ipconfig /all - Данные будут отображаться так, как показано на скриншоте выше, но для ВСЕХ сетевых адаптеров компьютера (Ethernet, Wi-Fi, адаптеры Vmware и т.д.).
ipconfig /release - Освободит текущие IPv4-адреса, динамически назначенные DHCP-сервером. Если указать имя подключения, будет освобожден только IP-адрес этого сетевого адаптера.
ipconfig /release6 - То же, что и выше, но для IPv6-адреса.
ipconfig /renew - Используется для запроса нового IP-адреса от DHCP-сервера.
ipconfig /renew6 - То же, что и выше, но для IPv6-адреса.
ipconfig /flushdns - Удаляется локальный кэш записей DNS.
ipconfig /displaydns - Показывает локальный кэш записей DNS.
ipconfig /registerdns - Обновляет все адреса DHCP, а также снова связывается с внешним DNS-сервером, чтобы убедиться в его доступности и т.д.
Если после выполнения команды «ipconfig» вы видите IP-адрес в формате 169.254.x.x, это означает, что системе назначен автоматический частный IP-адрес (APIPA). Он присваивается операционной системой автоматически, если устройство не смогло получить IP-адрес от DHCP-сервера.
nslookup
Команда «nslookup» позволяет получать информацию, связанную с DNS. Например, вы можете узнать данные о домене или выполнить обратный DNS-запрос для определения домена по IP-адресу.
nslookup networkadmin.ru - Определит IP-адрес конкретного домена (A-запись).
Server: domain_name
Address: 10.120.101.2
Non-authoritative answer:
Name: networkadmin.ru
Addresses: 2a03:6f00:6:1::b972:f56c
185.114.245.108
Команда «nslookup», за которой указано доменное имя, отобразит IPv4- и IPv6-адреса (A-записи и AAAA-записи), связанные с этим доменом.
nslookup 185.114.245.108 - Выполнит обратный DNS-запрос и определит доменное имя, соответствующее указанному IP-адресу.
Server: domain_name
Address: 10.120.101.2
Non-authoritative answer:
Name: vh308.timeweb.ru
Addresses: 185.114.245.108
Команда «nslookup» обладает и другими полезными функциями. Например, с её помощью можно найти авторитетные DNS-серверы домена, TXT- и MX-записи, а также многое другое (для этого используется опция type=):
Синтаксис: nslookup -type=[MX , TXT , A , AAAA , NS , PTR , SOA] [domain]
nslookup -type=MX networkadmin.ru
Server: domain_name
Address: 10.120.101.2
Non-authoritative answer:
networkadmin.ru MX preference = 10, mail exchanger = mx1.timeweb.ru
networkadmin.ru MX preference = 10, mail exchanger = mx2.timeweb.ru
mx1.timeweb.ru internet address = 92.53.116.47
mx1.timeweb.ru AAAA IPv6 address = 2a03:6f00:3::5c35:742f
mx2.timeweb.ru internet address = 92.53.116.51
mx2.timeweb.ru AAAA IPv6 address = 2a03:6f00:3::5c35:7433
ping
Давайте рассмотрим одну из самых популярных утилит для проверки сетевого соединения.
Пожалуй, первая команда, которую запускают пользователи при проблемах с подключением – это ping. Эта команда быстро покажет, может ли ваш компьютер отправлять и получать пакеты (конкретно – ICMP-пакеты), что позволяет определить наличие сетевого соединения.
Обратите внимание, что «ping» полезен для проверки подключения как локального компьютера (с которого выполняется команда), так и удалённых компьютеров или серверов. Например, если вы пропингуете IP-адрес вашего шлюза по умолчанию и получите ответы (ICMP Echo Reply), это означает, что ваш компьютер правильно подключён к сети.
А если вы пропингуете удалённый сервер в интернете и получите ответы, значит, этот сервер также имеет нормальное сетевое подключение.
ping /? - Отображает все доступные параметры.
ping 185.114.245.108 - По умолчанию отправит 4 ICMP-пакета на указанный IP-адрес.
ping networkadmin.ru - Cистема сначала преобразует имя в IP-адрес, а затем отправит ICMP-пакеты по этому адресу.
ping 185.114.245.108 -t - Позволит непрерывно отправлять пакеты ping (icmp-эхо-запросы) на целевой IP-адрес.
ping -n 10 185.114.245.108 - Отправит 10 пакетов ping (icmp-эхо-запросы) на целевой IP-адрес.
ping -l 1500 185.114.245.108 - Отправит пакеты ping (icmp-эхо-запросы) размером 1500 байт на целевой IP-адрес.
ping -a 185.114.245.108 - Определит имя хоста, соответствующее указанному IP-адресу, а затем выполнить ping этого адреса.
ping -6 [domain или IP] - Отправит IPv6-пакеты на указанный целевой адрес.
Большинство фаерволов блокируют ICMP-протокол (на котором основан ping), поэтому если вы пингуете удалённый хост и не получаете ответов, это не обязательно означает наличие сетевых проблем. Скорее всего, где-то на пути сетевой фаервол заблокировал ICMP-пакеты.
tracert
В Windows команда «tracert» означает “трассировка маршрута”. В Linux аналогичная команда называется «traceroute». Эта команда отслеживает путь, который TCP/IP-пакет проходит до целевого узла, и отображает информацию (если она доступна) о промежуточных маршрутизаторах на этом пути.
Как и команда ping, tracert отправляет ICMP Echo-пакеты к целевому узлу, но с постепенно увеличивающимся значением TTL.
tracert networkadmin.ru - Трассирует TCP/IP-маршрут до указанного целевого IP-адреса или домена.
Трассировка маршрута к networkadmin.ru [185.114.245.108]
с максимальным числом прыжков 30:
1 1 ms <1 мс <1 мс 10.120.173.254
2 1 ms 1 ms <1 мс 10.120.250.6
3 * ms * ms * ms Превышен интервал ожидания для запроса.
4 7 ms 2 ms 3 ms 194.154.73.45
5 11 ms 3 ms 2 ms pe20.moscow.gldn.net [79.104.225.221]
6 4 ms 3 ms 3 ms 62.105.155.241
7 16 ms 17 ms 16 ms 94.228.119.214
8 11 ms 10 ms 11 ms vh308.timeweb.ru [185.114.245.108]
Трассировка завершена.
При трассировке маршрута к домену networkadmin.ru отображаются все промежуточные узлы (с их именами хостов и IP-адресами) вплоть до конечного пункта назначения.
При диагностике проблем подключения в крупной сети вы можете использовать «tracert», чтобы определить, на каком узле прекращается передача пакетов до достижения цели, и сосредоточить усилия по поиску проблемы именно на этом узле, который не маршрутизирует пакеты.
Поскольку tracert, как и команда ping, использует протокол ICMP, при выполнении команды вы часто будете видеть результаты со звёздочками (
* * *
). Это означает, что:
- Фаервол на одном из участков пути блокирует ICMP-пакеты
- Некоторые маршрутизаторы в цепочке не отправляют сообщения о превышении TTL
netstat
Ещё одной важной командой является утилита Network Statistics (netstat), которая доступна как в Windows, так и в Linux.
Она отображает установленные сетевые TCP/IP соединения локального компьютера с удалёнными хостами, открытые порты на машине, идентификатор процесса (PID) для каждого соединения и другую информацию.
Лично я использую эту команду в основном в целях проверки безопасности — чтобы определить, не запущены ли на компьютере бэкдоры, нет ли подозрительных подключений к внешним серверам Command-and-Control и т. д.
Вот несколько популярных примеров использования этой команды:
netstat -ano - Отображает все соединения и прослушивающие порты (-a), адреса и порты в числовом виде (-n), а также идентификатор процесса (PID) для каждого соединения (-o).
netstat -vb - Очень полезно также для того, чтобы определить, какой исполняемый файл и какая последовательность действий создали каждое соединение и каждый порт.
netstat -p tcp -f - Ключ -p tcp отобразит только TCP-соединения, а ключ -f покажет полное доменное имя (FQDN) для каждого соединения вместо просто IP-адреса.
route
Команда «route» используется для управления локальной таблицей маршрутизации компьютера. Вы можете вывести текущую таблицу маршрутизации, добавить новые статические маршруты, удалить записи и т. д.
Лично я использую команду «route» для добавления постоянной записи статического маршрута в компьютер.
Например, может быть подсеть, которая недоступна через шлюз по умолчанию компьютера. Вместо этого эта удаленная подсеть может быть доступна через другой IP-адрес шлюза. Добавив статический маршрут в таблицу маршрутизации компьютера, вы сможете получить доступ к этой удаленной подсети с другого шлюза.
route PRINT - Отображает текущую таблицу маршрутизации компьютера
===========================================================================
Список интерфейсов
8...b0 22 7a 24 01 75 ......Intel(R) Ethernet Connection (11) I219-LM
1...........................Software Loopback Interface 1
===========================================================================
IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 10.120.173.254 10.120.173.21 35
10.120.173.0 255.255.255.0 On-link 10.120.173.21 291
10.120.173.21 255.255.255.255 On-link 10.120.173.21 291
10.120.173.255 255.255.255.255 On-link 10.120.173.21 291
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 10.120.173.21 291
255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
255.255.255.255 255.255.255.255 On-link 10.120.173.21 291
===========================================================================
Постоянные маршруты:
Отсутствует
IPv6 таблица маршрута
===========================================================================
Активные маршруты:
Метрика Сетевой адрес Шлюз
1 331 ::1/128 On-link
1 331 ff00::/8 On-link
===========================================================================
Постоянные маршруты:
Отсутствует
route ADD [Destination network] MASK [mask] [gatewayIP] - Добавит статический маршрут в таблицу.
arp
ARP является одним из основных сетевых протоколов, работающих на 2-м уровне и облегчающих связь в локальной сети.
Задача ARP — найти MAC-адрес хоста и сопоставить его с соответствующим IP-адресом. Таблица ARP хранит сопоставления IP-адресов с соответствующими им MAC-адресами.
arp -a - Отображает все сопоставления IP-адресов с MAC-адресами.
Интерфейс: 10.120.173.21 --- 0x8
адрес в Интернете Физический адрес Тип
10.120.173.1 e0-d5-5e-ce-b8-5b динамический
10.120.173.2 1c-1b-0d-0d-fa-7e динамический
10.120.173.4 7c-57-58-62-7d-bc динамический
10.120.173.6 2c-58-b9-dc-90-6b динамический
10.120.173.7 18-c0-4d-0e-c0-57 динамический
10.120.173.8 c0-18-03-2e-1b-8b динамический
10.120.173.10 d0-ad-08-cf-d3-8f динамический
224.0.0.22 01-00-5e-00-00-16 статический
224.0.0.251 01-00-5e-00-00-fb статический
224.0.0.252 01-00-5e-00-00-fc статический
232.44.44.233 01-00-5e-2c-2c-e9 статический
239.193.0.10 01-00-5e-41-00-0a статический
239.255.255.250 01-00-5e-7f-ff-fa статический
255.255.255.255 ff-ff-ff-ff-ff-ff статический
Как вы можете видеть выше, локальный компьютер динамически (тип=динамический) изучил с помощью протокола ARP несколько других локальных устройства и сохранил их MAC-адреса в таблице ARP.
arp -d 10.120.173.10 - Приведет к удалению записи ARP для указанного IP-адреса.
pathping
Эта команда объединяет функции «ping» и «tracert», но предоставляет более подробную статистику о задержке и потере пакетов на каждом хопе за период. Она отлично подходит для диагностики непостоянных сетевых проблем, которые «tracert» может пропустить.
pathping 8.8.8.8
Трассировка маршрута к dns.google [8.8.8.8]
с максимальным числом переходов 30:
0 pc1864.ppl.loc [10.120.173.21]
1 10.120.173.254
2 10.120.250.6
3 *.*.*.*
4 194.154.73.45
5 pe06.kk12.moscow.gldn.net [79.104.225.45]
6 81.211.29.103
7 * * *
Подсчет статистики за: 150 сек. ...
Исходный узел Маршрутный узел
Прыжок RTT Утер./Отпр. % Утер./Отпр. % Адрес
0 pc1864.ppl.loc [10.120.173.21]
0/ 100 = 0% |
1 0мс 0/ 100 = 0% 0/ 100 = 0% 10.120.173.254
0/ 100 = 0% |
2 1мс 0/ 100 = 0% 0/ 100 = 0% 10.120.250.6
0/ 100 = 0% |
3 2мс 0/ 100 = 0% 0/ 100 = 0% *.*.*.*
0/ 100 = 0% |
4 12мс 0/ 100 = 0% 0/ 100 = 0% 194.154.73.45
1/ 100 = 1% |
5 12мс 1/ 100 = 1% 0/ 100 = 0% pe06.kk12.moscow.gldn.net [79.104.225.45]
0/ 100 = 0% |
6 9мс 1/ 100 = 1% 0/ 100 = 0% 81.211.29.103
Трассировка завершена.
Как объясняется на веб-сайте Microsoft, Pathping выполняет эквивалент команды tracert, определяя, какие маршрутизаторы находятся на пути. Затем он периодически отправляет запросы на все маршрутизаторы в течение определенного периода времени и вычисляет статистику на основе числа, возвращаемого от каждого.
getmac
Простая команда, специально предназначенная для отображения MAC-адресов сетевых адаптеров.
getmac /V /FO list
Подключение: Ethernet
Сетевой адаптер: Intel(R) Ethernet Connection (11) I219-LM
Физический адрес: B0-22-7A-24-01-75
Имя транспорта: \Device\Tcpip_{805A5037-67E1-4B22-98FA-CB16B6075FA3}