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

Показать маршруты по умолчанию
Ловите 2 команды, которые помогут отобразить текущую таблицу маршрутизации в Linux:
Вывод такой команды будет примерно следующим:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 ra0
default dsl-router 0.0.0.0 UG 0 0 0 ra0
Или можно использовать второй вариант:
”Выхлоп” такой команды в той же самой таблице маршрутизации:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
191.255.255.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 191.255.255.1 0.0.0.0 UG 0 0 0 eth0
Настройка дефолтного маршрута
Синтаксис настройки категорически прост. Смотрите:
Например, если IP – адрес вашего роутера 192.168.1.254 и он сидит на интерфейсом eth0, то из под root выполните команду:
# route add default gw 192.168.1.254 eth0
Или можно использовать хостнейм (только проверьте, чтобы он резолвился на уровне DNS):
# route add default gw dsl-router eth0
Или можно использовать команду ip, чтобы маршрутизировать весь трафик через шлюз 192.168.1.254, который подключен к интерфейсу eth0:
# ip route add 192.168.1.0/24 dev eth0
Либо вместо eth0 интерфейса можно прописать в явном виде адрес шлюза. Тут ап ту ю, как говорится 🙂
# ip route add 192.168.1.0/24 via 192.168.1.254
Рекомендуем
Все маршрутизаторы добавляют подключенные маршруты. Затем в большинстве сетей используются протоколы динамической маршрутизации, чтобы каждый маршрутизатор изучал остальные маршруты в объединенной сети. Сети используют статические маршруты – маршруты, добавленные в таблицу маршрутизации посредством прямой настройки – гораздо реже, чем динамическая маршрутизация. Однако статические маршруты иногда могут быть полезны, и они также могут быть полезными инструментами обучения.
Статические сетевые маршруты

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

При настройке сети маршрутизатор R1 имеет соединение с двумя маршрутизаторами R2 и R3 справа. Интерфейс G0/0 .1 маршрутизатора R1 подключен к заглушке слева и, в свою очередь, подключен к хосту A, имеющему подсеть 172.16.1.9 с маской подсети 172.16.1.0 /24. Справа-интерфейс S0/0/1.1 из R1 с маской подсети 172.16.4.0 / 24 подключается к интерфейсу S0/0/1.2 из R2 с маской подсети 172.16.2.0 / 24 через последовательную линию. Кроме того, интерфейс G0/1/ 0.1 из R1 с маской подсети 172.16.5.0 / 24 подключается к интерфейсу G0/0/0 .3 из R3 с маской подсети 172.16.3.0 / 24 через глобальную сеть. Заглушка подключается к интерфейсу G0/0 .2 из R2, где маска подсети равна 172.16.2.0 / 24 и, в свою очередь, подключена к хосту B, имеющему подсеть 172.16.2.9. Заглушка подключается к интерфейсу G0/0 .3 из R3, где маска подсети равна 172.16.3.0 / 24 и, в свою очередь, подключена к хосту C, имеющему подсеть 172.16.3.9.
ip route 172.16.2.0 255.255.255.0 S0/0/0
ip route 172.16.3.0 255.255.255.0 172.16.5.3
Пример 1 Добавление статических маршрутов в R1
В двух примерах команд ip route показаны два разных стиля инструкций пересылки. Первая команда показывает подсеть 172.16.2.0, маска 255.255.255.0, которая находится в локальной сети рядом с маршрутизатором R2. Эта же первая команда перечисляет интерфейс S0 / 0/0 маршрутизатора R1 как исходящий интерфейс. Этот маршрут в основном гласит: Чтобы отправить пакеты в подсеть с маршрутизатора R2, отправьте их через мой собственный локальный интерфейс S0/0/0 (который подключается к R2).
Маршруты, созданные этими двумя командами ip route, на самом деле выглядят немного иначе в таблице IP-маршрутизации по сравнению друг с другом. Оба являются статическими маршрутами. Однако маршрут, который использовал конфигурацию исходящего интерфейса, также отмечается как подключенный маршрут; это всего лишь причуда вывода команды show ip route.
В примере 2 эти два маршрута перечислены с помощью статической команды show ip route. Эта команда выводит подробную информацию не только о статических маршрутах, но также приводит некоторые статистические данные обо всех маршрутах IPv4. Например, в этом примере показаны две строки для двух статических маршрутов, настроенных в примере 2, но статистика утверждает, что этот маршрутизатор имеет маршруты для восьми подсетей.

IOS динамически добавляет и удаляет эти статические маршруты с течением времени в зависимости от того, работает исходящий интерфейс или нет. Например, в этом случае, если интерфейс R1 S0/0/0 выходит из строя, R1 удаляет статический маршрут к 172.16.2.0/24 из таблицы маршрутизации IPv4. Позже, когда интерфейс снова открывается, IOS добавляет маршрут обратно в таблицу маршрутизации.
Обратите внимание, что большинство сайтов используют протокол динамической маршрутизации для изучения всех маршрутов к удаленным подсетям, а не статические маршруты. Однако если протокол динамической маршрутизации не используется, сетевому администратору необходимо настроить статические маршруты для каждой подсети на каждом маршрутизаторе. Например, если бы маршрутизаторы имели только конфигурацию, показанную в примерах до сих пор, ПК А (из рис. 2) не смог бы получать пакеты обратно от ПК В, потому что маршрутизатор R2 не имеет маршрута для подсети ПК А. R2 понадобятся статические маршруты для других подсетей, как и R3.
Статические маршруты хоста
Сетевой администратор может использовать маршруты хоста для направления пакетов, отправленных одному хосту по одному пути, а весь остальной трафик – в подсеть этого хоста по другому пути. Например, вы можете определить эти два статических маршрута для подсети 10.1.1.0 / 24 и Хоста 10.1.1.9 с двумя различными адресами следующего перехода следующим образом:
ip route 10.1.1.0 255.255.255.0 10.2.2.2
ip route 10.1.1.9 255.255.255.255 10.9.9.9
Обратите внимание, что эти два маршрута перекрываются: пакет, отправленный в 10.1.1.9, который поступает на маршрутизатор, будет соответствовать обоим маршрутам. Когда это происходит, маршрутизаторы используют наиболее конкретный маршрут (то есть маршрут с наибольшей длиной префикса). Таким образом, пакет, отправленный на 10.1.1.9, будет перенаправлен на маршрутизатор следующего прыжка 10.9.9.9, а пакеты, отправленные в другие пункты назначения в подсети 10.1.1.0/24, будут отправлены на маршрутизатор следующего прыжка 10.2.2.2.
Плавающие статические маршруты
Затем рассмотрим случай, когда статический маршрут конкурирует с другими статическими маршрутами или маршрутами, изученными протоколом маршрутизации. То есть команда ip route определяет маршрут к подсети, но маршрутизатор также знает другие статические или динамически изученные маршруты для достижения этой же подсети. В этих случаях маршрутизатор должен сначала решить, какой источник маршрутизации имеет лучшее административное расстояние, а чем меньше, тем лучше, а затем использовать маршрут, полученный от лучшего источника.
Чтобы увидеть, как это работает, рассмотрим пример, проиллюстрированный на рисунке 3, который показывает другую конструкцию, чем в предыдущих примерах, на этот раз с филиалом с двумя каналами WAN: одним очень быстрым каналом Gigabit Ethernet и одним довольно медленным (но дешево) Т1. В этом проекте сеть Open Shortest Path First Version 2 (OSPFv2) по первичному каналу, изучая маршрут для подсети 172.16.2.0/24. R1 также определяет статический маршрут по резервному каналу к той же самой подсети, поэтому R1 должен выбрать, использовать ли статический маршрут или маршрут, полученный с помощью OSPF.

Сетевая диаграмма показывает интерфейс G0 / 0 маршрутизатора R1, который подключен к маршрутизатору R2 через ethernet через облако MPLS. Интерфейс S0 / 0 / 1 R1 соединен с маршрутизатором R3 по последовательной линии. R2 и R3 соединены в ядре облака корпоративной сети, имеющего подсеть 172.16.2.0/24. Маршрутизатор R1 достигает подсети либо по OSPF v1 по основному каналу, либо по статическому маршруту по резервному каналу.
По умолчанию IOS отдает предпочтение статическим маршрутам, чем маршрутам, изученным OSPF. По умолчанию IOS предоставляет статическим маршрутам административное расстояние 1, а маршрутам OSPF-административное расстояние 110. Используя эти значения по умолчанию на рисунке 3, R1 будет использовать T1 для достижения подсети 172.16.2.0 / 24 в этом случае, что не является удачным решением. Вместо этого сетевой администратор предпочитает использовать маршруты, изученные OSPF, по гораздо более быстрому основному каналу и использовать статический маршрут по резервному каналу только по мере необходимости, когда основной канал выходит из строя.
Чтобы отдавать предпочтение маршрутам OSPF, в конфигурации необходимо изменить настройки административного расстояния и использовать то, что многие сетевики называют плавающим статическим маршрутом. Плавающий статический маршрут перемещается в таблицу IP-маршрутизации или перемещается из нее в зависимости от того, существует ли в настоящее время лучший (меньший) маршрут административного расстояния, полученный протоколом маршрутизации. По сути, маршрутизатор игнорирует статический маршрут в то время, когда известен лучший маршрут протокола маршрутизации.
Чтобы реализовать плавающий статический маршрут, вам необходимо использовать параметр в команде ip route, который устанавливает административное расстояние только для этого маршрута, делая значение больше, чем административное расстояние по умолчанию для протокола маршрутизации. Например, команда ip route 172.16.2.0 255.255.255.0 172.16.5.3 130 на маршрутизаторе R1 будет делать именно это – установив административное расстояние статического маршрута равным 130. Пока основной канал остается активным, а OSPF на маршрутизаторе R1 изучает маршрут для 172.16.2.0/24, с административным расстоянием по умолчанию 110, R1 игнорирует статический маршрут.
Наконец, обратите внимание, что хотя команда show ip route перечисляет административное расстояние большинства маршрутов в виде первого из двух чисел в двух скобках, команда show ip route subnet явно указывает административное расстояние. В примере 3 показан образец, соответствующий этому последнему примеру.

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

Соединение состоит из трех маршрутизаторов: Core, B1 и B1000. Последовательные соединения показаны между маршрутизаторами Core – B1 и Core – B1000. Все эти маршрутизаторы подключены к подсети индивидуально. Маршрутизатор B1 отправляет все нелокальные пакеты в Core через интерфейс S0/0/1. Существует также связь между B1 и B1000.
IOS позволяет настроить статический маршрут по умолчанию, используя специальные значения для полей подсети и маски в команде ip route: 0.0.0.0 и 0.0.0.0. Например, команда ip route 0.0.0.0 0.0.0.0 S0/0/1 создает статический маршрут по умолчанию на маршрутизаторе B1-маршрут, который соответствует всем IP-пакетам-и отправляет эти пакеты через интерфейс S0/0/1.
В примере 4 показан пример статического маршрута по умолчанию с использованием маршрутизатора R2 с рисунка 1. Ранее на этом рисунке вместе с примером 3 был показан маршрутизатор R1 со статическими маршрутами к двум подсетям в правой части рисунка. Пример 4 завершает настройку статических IP-маршрутов путем настройки R2 в правой части рисунка 1 со статическим маршрутом по умолчанию для маршрутизации пакетов обратно к маршрутизаторам в левой части рисунка.

Вывод команды show ip route содержит несколько новых и интересных фактов. Во-первых, он перечисляет маршрут с кодом S, что означает статический, но также со знаком *, что означает, что это кандидат в маршрут по умолчанию. Маршрутизатор может узнать о нескольких маршрутах по умолчанию, и затем маршрутизатор должен выбрать, какой из них использовать; * означает, что это, по крайней мере, кандидат на то, чтобы стать маршрутом по умолчанию. Чуть выше “шлюз последней надежды” относится к выбранному маршруту по умолчанию, который в данном случае является только что настроенным статическим маршрутом с исходящим интерфейсом S0/0/1.
In this article, we will look at what a ‘static route’ is and why it should be added at all. We will use the so-called ‘Root’ — meaning we will prescribe routes using the ‘route add’ command in the Windows command line. Let’s recap the theory and in what cases using the ‘route add’ in this way may be useful for you.
‘Static routing’ is a type of routing in which routes are explicitly specified when configuring a router. All routing occurs without the participation of any routing protocols.
For example, if you have two computers at home, the first of which has access to the Internet via VPN, it is also connected to the second computer’s local network. Every time it connects to the Internet, the connection between the two computers is lost because the first computer (the one connected to the VPN) is already on another network and therefore unavailable to the second computer. This can be corrected just by configuring a static route.
Add Static Route in Command Line Shell
route -p add 0.0.0.0 mask 0.0.0.0 192.168.95.1
- route the program itself that works with the routing table;
- -p is a key that says that the route will be permanent, because (Important note!) without this key, all routes that you add will be deleted after rebooting, so if you want to use the route always, write this key if only once, then you can not write;
- add the command itself that adds an entry to the routing table;
- 0.0.0.0 the network with which you want to have a connection;
- mask 0.0.0.0 subnet mask;
- 192.168.95.1 the gateway address, usually the modem address.
How to Remove Specific Static Route
To remove static route open command line and type this command:
route delete 0.0.0.0 mask 0.0.0.0 192.168.95.1
How to Manage Static Route with Action1
The first thing you need to do is login to the Action1 dashboard.
Then click on the More Actions button and select the Run Command option.
In the window that opens, enter the command route -p add 0.0.0.0 mask 0.0.0.0 192.168.95.1 to add a static route you need.
In case you need to delete a route use this command route delete 0.0.0.0 mask 0.0.0.0 192.168.95.1
After clicking the Next Step button, you need to select the endpoints for which you are going to add or remove static route. To do this, click Add Endpoints and select the desired endpoint.
Click Next Step and in the next step you can schedule the execution time of your command. Then click Finish.
Consider Using Action1 Cloud RMM Solution
Эта статья одна из статей про работу сетей в Linux. Вы уже знаете, что все данные в сети передаются в виде пакетов, а чтобы компьютер знал куда нужно отправить тот или иной пакет используются IP адреса. Но пакету, перед тем, как он достигнет точки назначения нужно пройти множество компьютеров и маршрутизаторов.
Каждому из маршрутизаторов нужно знать на какой компьютер передавать пакет дальше. Именно это мы и обсудим в этой статье. Сегодня нас будет интересовать маршрутизация в Linux, как это работает, как настроить правила и заставить все работать как нужно.
Как я уже сказал, сетевые маршруты необходимы чтобы компьютеры могли определить по какой цепочке должен пойти пакет, чтобы достигнуть цели. Маршруты можно настроить на уровне интерфейса или маршрутизатора.
Когда компьютеру нужно отправить пакет в сеть он смотрит таблицу маршрутизации, в ней указанны ip адреса пунктов назначения и адреса интерфейсов и роутеров в домашней сети, которые могут отправить пакет по нужному адресу. Если для цели маршрут не указан то используется так называемый шлюз по умолчанию или маршрут по умолчанию. Точно такая же картина наблюдается на роутере. Устройство смотрит на IP адрес назначения и сверяет его со своей таблицей маршрутизации, а потом отправляет дальше.
Ниже мы рассмотрим как проверить текущие маршруты в системе, а также как настроить новые.
Как посмотреть таблицу маршрутизации
Перед тем как что-либо менять, нужно понять какие правила уже используются. В Linux для этого существует несколько команд. Чтобы посмотреть таблицу маршрутизации можно использовать команду route:

Вот так выглядит таблица маршрутизации linux. Тут выводится достаточно простая информация, которой не всегда достаточно чтобы понять суть дела. Более подробно можно посмотреть с помощью команды routel:

Тут вы уже можете видеть IP адрес цели (target), IP адрес шлюза (gateway), IP отправителя (source), протокол, и даже сетевой интерфейс. Но самый удобный способ посмотреть таблицу маршрутизации linux – это команда ip:

Вывод похож на результат предыдущей команды, но выглядит не совсем привычно, это потому, что вывод команды можно использовать в качестве аргумента для ip route add или ip route del. Это очень удобно. Как вы видите, в качестве шлюза по умолчанию везде используется 192.168.1.1. Рассмотрим подробнее что означает вывод этой команды:
- default – в данной строке означает вариант по умолчанию. Здесь должен быть ip адрес цели или маска подсети;
- via 192.168.1.1 – указывает через какой шлюз мы можем добраться до этой цели, у нас это 192.168.1.1;
- dev enp2s0 – сетевой интерфейс, с помощью которого будет доступен этот шлюз;
- proto static – означает, что маршрут был установлен администратором, значение kernel значит что он был установлен ядром;
- metric – это приоритет маршрута, чем меньше значение – тем выше приоритет.
А теперь рассмотрим выполняется настройка маршрутов Linux.
Настройка маршрутов в Linux
Вы можете настраивать таблицу маршрутизации с помощью команды ip. Например, чтобы изменить маршрут по умолчанию достаточно выполнить:
ip route add default via 192.168.1.1
Так вы можете добавить маршрут для любого IP адреса, например, для 243.143.5.25:
sudo ip route add 243.143.5.25 via 192.168.1.1
Все очень просто, сначала указывается IP адрес цели, а затем шлюз в локальной сети, через который можно достичь этого адреса. Но такие маршруты будут активны только до перезагрузки, после перезагрузки компьютера они будут автоматически удалены. Чтобы маршруты сохранились их нужно добавить в файл конфигурации.
В операционных системах семейства Red Hat используются конфигурационные файлы /etc/sysconfig/network-scripts/route-ethX. Каждый файл может описывать несколько маршрутов, например:
Здесь gateway – шлюз по умолчанию для этого интерфейса, netmask – маска сети, а ipaddr – ip адрес интерфейса. В Debian и основанных на нем дистрибутивах можно настроить маршруты в файле /etc/network/interfaces. Здесь команда route добавляется в секцию iface. Например:
up route add -net 10.10.0.0 netmask 255.0.0.0 gw 10.10.0.1

С помощью опции -net мы указываем целевую сеть, netmask – это маска сети, а gw – шлюз. Все очень просто. Теперь добавленные маршруты останутся даже после перезагрузки.
Выводы
В этой небольшой статье мы кратко рассмотрели как работает маршрутизация в Linux, как выполняется настройка маршрутизации в linux, а также зачем это нужно. Надеюсь, эта информация была полезной для вас.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
В этой статье мы рассмотрим особенности настройки маршрутизации и управления маршрутами в Linux (просмотр таблицы маршрутизации, добавление/удаление статических маршрутов и т.д.) на примере CentOS с помощью утилиты ip. Статья применима и для любого другого дистрибутива Linux с утилитой ip (Red Hat, Fedora и т.д.).
Для управления маршрутизацией в Linux предпочтительно исопльзовать утилиту
ip
, а не
route
. Команда route не позволяет настраивать расширенные возможности маршрутизации (например, политики маршрутизации), и не покажет специальные настройки маршрутизации, если они уже сделаны через ip.
Просмотр таблицы маршрутизации в Linux
Чтобы вывести текущую таблицу маршрутизации в Linux выполните команду:

- default via 192.168.1.1 dev enp0s3
– шлюз по умолчанию, в данном примере работающий через интерфейс enp0s3. Если для target адреса в таблице маршрутизации отсутствует маршрут, то такой пакет отправляется через данный шлюз (маршрут по умолчанию) - 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201
— статический маршрут для сети 192.168.1.0/24 через адрес 192.168.1.201, который прописан на интерфейсе - proto kernel
– маршрут создан ядром (
proto static
– маршрут добавлен администратором) - metric
– приоритет маршрута (чем меньше значение metric, тем выше приоритет). При наличии двух маршрутов с одинаковой метрикой (не стоит так делать!), ядро начинает выбирать маршруты случайным образом.
Чтобы узнать через какой интерфейс (шлюз) должен маршрутизироваться трафик к определенному IP адресу используется команда:
# ip route get 192.168.2.45
192.168.2.45 via 192.168.1.1 dev enp0s3 src 192.168.1.201
Вы можете использовать ваш Linux сервер с двумя и более интерфейсами как маршрутизатор или интернет-шлюз. Чтобы разрешить маршрутизацию пакетов между несколькими интерфейсами, нужно включить параметр ядра net.ipv4.ip_forward = 1.
Как добавить или удалить статический маршрут?
Чтобы добавить новый маршрут к определенной IP подсети в таблицу маршрутизации Linux, нужно выполнить следующую команду:
# ip route add 192.168.0.0/24 via 192.168.1.1
Таким образом, мы добавим маршрут для IP сети 192.168.0.0/24 через шлюз 192.168.1.1.
Формат команды ip route очень похоже на синтаксис в Cisco IOS. Здесь также можно исопльзовать сокращений, например вместо
ip route add
можно написать
ip pro ad
.

Также можно добавить отдельный маршрут для одного IP адреса (хоста):
# ip route add 192.168.1.0 via 192.168.1.1
Можно сделать аналог null route маршрута в Cisco (ip route null0), пакеты в такую сеть удаляются по причине No route to host:
# ip route add blackhole 10.1.20.0/24
Маршруты, добавленные таким образом являются временным и будут работать до перезагрузки сетевой службы или сервера.
Чтобы удалить созданный вручную маршрут, выполните:
# ip route del 192.168.0.0/24

Как видите, маршрут удален из таблицы маршрутизации.
Чтобы добавить постоянный маршрут, нужно создать файл для этого маршрута, либо добавить правило в файл rc.local (выполняется при загрузке сервера).
Чтобы добавить постоянный (статический) маршрут, нужно знать имя сетевого интерфейса, который будет использоваться для маршрутизации. Узнать имя сетевого интерфейса можно командой:
# ip a
В моем случае, интерфейс enp0s3.

Далее открываем следующий файл:
# nano /etc/sysconfig/network-scripts/route-enp0s3
И добавляем туда строку с маршрутом:
После добавления маршрута в файл нужно перезапустить сервис network:
# service network restart

После перещаауска сетевого сервиса, в таблице маршрутизации появился статический маршрут.
Также можно добавить команду добавления нового маршрута в файл rc.local, чтобы он автоматически добавлялся при загрузке сервера. Откройте файл:
# nano /etc/rc.local
И укажите команду добавления маршрута:

Теперь, если ваш сервер будет перезагружен, маршрут пропишется автоматически при загрузке системы.
Изменить маршрут в Linux
Чтобы изменить уже существующий маршрут, можно использовать команду ip route replace:
# ip route replace 192.168.0.0/24 via 192.168.1.1

Чтобы сбросить все временные маршруты в таблице маршрутизации, просто перезапустите сетевой сервис:
default via 192.168.1.1 dev enp0s3 proto static metric 100
192.168.0.0/24 via 192.168.1.1 dev enp0s3 proto static metric 100
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 metric 100
Изменить маршрут по умолчанию
Вы можете удалить маршрут по-умолчаню с помощью команды ip route del:
# ip route del default via 192.168.1.1 dev enp0s3
Чтобы указать новый маршрут по-умолчанию в CentOS используется команда:
# ip route add default via 192.168.1.2
(маршрут через IP адрес шлюза)
# ip route add default via enp0s3
(маршрут через имя устройства)
Чтобы изменить параметры маршрута по умолчанию, используется команда:
# ip route replace default via 192.168.1.2
Маршрутизация в Windows

Маршрутизация – это процесс передачи IP-трафика адресатам в сети, то есть процесс передачи пакетов от хоста-источника к хосту-адресату через промежуточные маршрутизаторы. Изучая эту статью предполагается что вы изучили материал основы компьютерных сетей.
Изучим как работает маршрутизация в Windows, что бы понять как она работает, а не просто прочитать и забыть, вам необходимо несколько виртуальных машин, а именно:
- ВМ с Windows XP.
- 2 ВМ с Windows Server 2003.
Учтите, что при настройке виртуальных машин, в настройках сети нужно указать «Внутренняя сеть» и задать одинаковое имя сети для всех машин.
Если вы не поленитесь и установите три виртуальные машины, а так же изучите этот материал до конца, то у вас будет практическое понимание работы сети в операционных системах семейства Windows.
Для простоты передачи данных хост-источник и маршрутизатор принимают решения о передаче пакетов на основе своих таблиц IP-маршрутизации. Записи таблицы создаются при помощи:
- Программного обеспечения стека TCP/IP.
- Администратора, путем конфигурирования статических маршрутов.
- Протоколов маршрутизации, одним из которых является протокол передачи маршрутной информации – RIP.
Пример маршрутизации в Windows
Допустим, у нас есть три узла:
- Windows XP.
- Windows Server 2003 – 1.
- Windows Server 2003 – 2.

Таблица маршрутизации
Таблица маршрутизации по умолчанию создается на узле автоматически с помощью программного обеспечения стека TCP/IP.

Таблица маршрутизации содержит для каждой записи следующие поля: Сетевой адрес (Network Destination), Маска сети (Netmask), Адрес шлюза (Gateway), Интерфейс (Interface) и Метрика (Metric). Разберем каждое поле подробнее.
Интерфейс. Данное поле содержит адрес логического или физического интерфейса, используемого для продвижения пакетов, соответствующих данной записи таблицы маршрутизации.
Метрика. Используется для выбора маршрута, в случае если имеется несколько записей, которые соответствуют одному адресу назначения с одной и той же маской, то есть в случае если одного адресата можно достичь разными путями, через разные маршруты. При этом, чем меньше значение метрики тем короче маршрут.
На начальном этапе работы (т.е. с таблицами маршрутизации по умолчанию) маршрутизатор (хост) знает только, как достичь сетей, с которыми он соединен непосредственно. Пути в другие сети могут быть «выяснены» следующими способами:
- с помощью статических маршрутов;
- с помощью маршрутов по умолчанию;
- с помощью маршрутов, определенных протоколами динамической маршрутизации.
Рассмотрим каждый из способов по порядку.
Статическая маршрутизация
Статические маршруты задаются вручную. Плюс статических маршрутов в том, что они не требуют рассылки широковещательных пакетов с маршрутной информацией, которые занимают полосу пропускания сети.
Минус статических маршрутов состоит в том, что при изменении топологии сети администратор должен вручную изменить все статические маршруты, что довольно трудоемко, в случае если сеть имеет сложную структуру с большим количеством узлов.
Второй минус заключается в том, что при отказе какого-либо канала статический маршрут перестанет работать, даже если будут доступны другие каналы передачи данных, так как для них не задан статический маршрут.
Но вернемся к нашему примеру. Наша задача, имя исходные данные, установить соединения между хостом 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 с необходимыми параметрами:
Параметры команды имеют следующие значения:
- адресат — адрес сети или хоста, для которого добавляется маршрут;
- 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 и убедимся, что связь есть.
Получаем сообщение «Превышен интервал ожидания запроса». В данном случае это означает что наш хост 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 не знает путей до сети 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).
Введите последовательно команды:
- routing
- rip
Вы увидите, что среди доступных команд этого контекста есть команда add interface, позволяющая настроить RIP на заданном интерфейсе. Простейший вариант этой команды – add interface «Имя интерфейса».
Настроим RIP на Server1. Но сначала нужно выключит брандмауэр.
Теперь в оснастке «Маршрутизация и удаленный доступ» в контекстном меню пункта SERVER1 (локально) выберите пункт «Настроить и включить Маршрутизация ЛВС

В появившемся окне мастера нажмите «Далее».

На следующем этапе выберите «Особая конфигурация» и нажмите «Далее».

После чего нужно выбрать «Маршрутизация ЛВС» и завершить работу мастера.

То же самое нужно выполнить на Server2.
Настройка через оснастку

Затем выделяем строку «RIP версии 2 для IP».

В контекстном меню появившейся вкладки «RIP» выберите «Новый интерфейс». Выделите строку «Подключение по локальной сети» и нажмите ОК.

Перед вами появиться окно.

В появившемся окне необходимо задать следующие настройки:
Оставьте оставшиеся настройки по умолчанию и нажмите ОК.
Далее необходимо выполнить эти действия для второго сетевого интерфейса.
После выполните те же действия для Sever2.
Проверьте, с помощью команды ping, работу сети.

Поздравляю! Маршрутизация в Windows изучена.
Маршруты — это сетевые установки, которые используются операционной системой для организации трифака и доступа к локальной сети и в Интернет. С помощью этой странички вы научитесь просматривать, удалять и добавлять маршруты на компьютере с ОС Windows от XP до 10. Все эти действия выполняются в командной строке или ее улучшенном и расширенном аналоге PowerShell.
Хочется также сказать о том, что если вы не уверены в своих знаниях, лучше не изменять данные настройки. Т.к. при неправильном использовании маршрутизации вы можете оставить ваш компьюетр без доступа к сети Интернет.
Просмотр маршрутов

Удаление всех статических маршрутов

Добавление статического маршрута

Удаляем все маршруты: route -f

После того, как все маршруты стёрты, естественно пропадёт Интернет. Для того, чтобы он появился вновь, необходимо задать маршрут по умолчанию. Добавляем постоянный маршрут к шлюзу:
route -p add 0.0.0.0 0.0.0.0 192.168.10.254 OK
В Windows XP/2003 Server после этого появится Интернет. Но если у вас Windows 7/8.1/или 2008/2012 Server, необходимо также выполнить команды:
Как удалённо очистить таблицу маршрутов
Если вы хотите проделать все эти операции удалённо, вам понадобится программа NetAdapter Repair (подробнее). Дело в том, что после применения команды route -f соединение с сервером будет утрачено. А утилита NetAdapter Repair автоматически перезагрузит компьютер после очистки таблицы маршрутов. Для удалённой очистки необходимо проделать следующие действия:
1 Запустить утилиту NetAdapter Repair от имени Администратора.
2 Установить флажок возле пункта Clear ARP/Route Table.
3 Нажать кнопку Run All Selected:

После выполнения операции пойдёт обратный отсчёт времени и компьютер (сервер) перезагрузится автоматически:

Если что-то непонятно, спрашивайте в комментариях.
- 28.08.2020
- 27 563
- 30.01.2021

Описание
ROUTE – Выводит на экран и изменяет записи в локальной таблице IP-маршрутизации. Запущенная без параметров, команда route выводит справку.
Синтаксис
- Если команда – print или delete, параметр шлюз опускается и используются подстановочные знаки для указания точки назначения и шлюза. Значение конечной_точки может быть подстановочным значением, которое указывается звездочкой (*). При наличии звездочки (*) или вопросительного знака (?) в описании конечной точки, они рассматриваются как подстановки, тогда печатаются или удаляются только маршруты, соответствующие точке назначения. Звездочка соответствует любой последовательности символов, а вопросительный знак — любому одному символу. 10.*.1, 192.168.*, 127.* и *224* являются допустимыми примерами использования звездочки в качестве подстановочного символа.
- При использовании недопустимой комбинации значений конечной точки и маски подсети (маски сети) выводится следующее сообщение об ошибке : «Маршрут: неверная маска подсети адреса шлюза». Ошибка появляется, когда одно или несколько значений разрядов в адресе конечной точки равно 1, а значения соответствующих разрядов маски подсети – 1. Для проверки этого состояния выразите конечную точку и маску подсети в двоичном формате. Маска подсети в двоичном формате состоит из последовательности единичных битов, представляющей часть сетевого адреса конечной точки, и последовательности нулевых битов, обозначающей часть адреса узла конечной точки. Проверьте наличие единичных битов в части адреса точки назначения, которая является адресом узла (как определено маской подсети).
- Эта команда доступна, только если в свойствах сетевого адаптера в объекте Сетевые подключения в качестве компонента установлен протокол Интернета (TCP/IP).
Примеры
Чтобы вывести на экран все содержимое таблицы IP-маршрутизации, введите команду:
Чтобы вывести на экран маршруты из таблицы IP-маршрутизации, которые начинаются с 10., введите команду:
Чтобы добавить маршрут по умолчанию с адресом стандартного шлюза 192.168.12.1, введите команду:
route add 0.0.0.0 mask 0.0.0.0 192.168.12.1
Чтобы добавить маршрут к конечной точке 10.41.0.0 с маской подсети 255.255.0.0 и следующим адресом перехода 10.27.0.1, введите команду:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1
Чтобы добавить постоянный маршрут к конечной точке 10.41.0.0 с маской подсети 255.255.0.0 и следующим адресом перехода 10.27.0.1, введите команду:
route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1
Чтобы добавить маршрут к конечной точке 10.41.0.0 с маской подсети 255.255.0.0 и следующим адресом перехода 10.27.0.1 и метрикой стоимости 7, введите команду:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7
Чтобы добавить маршрут к конечной точке 10.41.0.0 с маской подсети 255.255.0.0 и следующим адресом перехода 10.27.0.1 и использованием индекса интерфейса 0х3, введите команду:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3
Чтобы удалить маршрут к конечной точке 10.41.0.0 с маской подсети 255.255.0.0, введите команду:
route delete 10.41.0.0 mask 255.255.0.0
Чтобы удалить все маршруты из таблицы IP-маршрутизации, которые начинаются с 10., введите команду:
Чтобы изменить следующий адрес перехода для маршрута с конечной точкой 10.41.0.0 и маской подсети 255.255.0.0 с 10.27.0.1 на 10.27.0.25, введите команду:
route change 10.41.0.0 mask 255.255.0.0 10.27.0.25
Справочная информация





