Андрей Смирнов
Время чтения: ~14 мин.
Просмотров: 61

Настройка сетевой маршрутизации Linux – команда route

[Routing] Шпаргалка про роутинг в Windows

Привет, %username%! Поскольку часто приходится настраивать ВПНы на чужих машинах и предоставлять доступ к каки-либо ресурсам нашей сети, а чаще всего это просто конкретные машины, то надо записать себе шпаргалку по добавлению статических маршрутов в ОСях семейства Windows (XP/7/8/8.1). Все элементарно и просто.

Синтаксис

route [-f] [-p] [*команда* [*конечная_точка*] [mask <маска_сети>] [<шлюз>] [metric <метрика>]] [if <интерфейс>]] 

Параметры

  • -f — Очищает таблицу маршрутизации от всех записей, которые не являются узловыми маршрутами (маршруты с маской подсети 255.255.255.255), сетевым маршрутом замыкания на себя (маршруты с конечной точкой 127.0.0.0 и маской подсети 255.0.0.0) или маршрутом многоадресной рассылки (маршруты с конечной точкой 224.0.0.0 и маской подсети 240.0.0.0). При использовании данного параметра совместно с одной из команд (таких, как add, change или delete) таблица очищается перед выполнением команды.

  • -p — При использовании данного параметра с командой add указанный маршрут добавляется в реестр и используется для инициализации таблицы IP-маршрутизации каждый раз при запуске протокола TCP/IP. По умолчанию добавленные маршруты не сохраняются при запуске протокола TCP/IP. При использовании параметра с командой print выводит на экран список постоянных маршрутов. Все другие команды игнорируют этот параметр. Постоянные маршруты хранятся в реестре по адресу HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersPersistentRoutes

  • команда — Указывает команду, которая будет запущена на удаленной системе.

Список допустимых параметров:

Команда  Назначение
add  Добавление маршрута
change  Изменение существующего маршрута
delete  Удаление маршрута или маршрутов
print Печать маршрута или маршрутов
  • конечная_точка — Определяет конечную точку маршрута. Конечной точкой может быть сетевой 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. Значения индексов интерфейсов могут быть как десятичные, так и шестнадцатеричные. Перед шестнадцатеричными номерами вводится . В случае, когда параметр if пропущен, интерфейс определяется из адреса шлюза.

  • /? — Отображает справку в командной строке.

Примечания

  • Большие значения в столбце metric таблицы маршрутизации — результат возможности протокола TCP/IP автоматически определять метрики маршрутов таблицы маршрутизации на основании конфигурации IP-адреса, маски подсети и стандартного шлюза для каждого интерфейса ЛВС. Автоматическое определение метрики интерфейса, включенное по умолчанию, устанавливает скорость каждого интерфейса и метрики маршрутов для каждого интерфейса так, что самый быстрый интерфейс создает маршруты с наименьшей метрикой. Чтобы удалить большие метрики, отключите автоматическое определение метрики интерфейса в дополнительных свойствах протокола TCP/IP для каждого подключения по локальной сети.
  • Имена могут использоваться для параметра <конечная_точка>, если существует соответствующая запись в файле базы данных Networks, находящемся в папке *системный_корневой_каталог*System32DriversEtc. В параметре <шлюз> можно указывать имена до тех пор, пока они разрешаются в IP-адреса с помощью стандартных способов разрешения узлов, таких как запрос службы DNS, использование локального файла Hosts, находящегося в папке *системный_корневой_каталог*system32driversetc, или разрешение имен NetBIOS.
  • Если команда — print или delete, параметр <шлюз> опускается и используются подстановочные знаки для указания точки назначения и шлюза. Значение <конечной_точки> может быть подстановочным значением, которое указывается звездочкой (*). При наличии звездочки (*) или вопросительного знака (?) в описании конечной точки, они рассматриваются как подстановки, тогда печатаются или удаляются только маршруты, соответствующие точке назначения. Звездочка соответствует любой последовательности символов, а вопросительный знак — любому одному символу. 10.*.1, 192.168.*, 127.* и *224* являются допустимыми примерами использования звездочки в качестве подстановочного символа.
  • При использовании недопустимой комбинации значений конечной точки и маски подсети (маски сети) выводится следующее сообщение об ошибке: Маршрут: неверная маска подсети адреса шлюза. Ошибка появляется, когда одно или несколько значений разрядов в адресе конечной точки равно 1, а значения соответствующих разрядов маски подсети — 1. Для проверки этого состояния выразите конечную точку и маску подсети в двоичном формате. Маска подсети в двоичном формате состоит из последовательности единичных битов, представляющей часть сетевого адреса конечной точки, и последовательности нулевых битов, обозначающей часть адреса узла конечной точки. Проверьте наличие единичных битов в части адреса точки назначения, которая является адресом узла (как определено маской подсети).
  • Параметр -p поддерживается в команде route только в операционных системах Windows NT 4.0, Windows 2000, Windows Millennium Edition и Windows XP. Этот параметр не поддерживается командой route в системах Windows 95 и Windows 98.
  • Эта команда доступна, только если в свойствах сетевого адаптера в объекте Сетевые подключения в качестве компонента установлен протокол Интернета (TCP/IP).

Примеры

Чтобы вывести на экран все содержимое таблицы IP-маршрутизации, введите команду:

route print 

Чтобы вывести на экран маршруты из таблицы IP-маршрутизации, которые начинаются с *10.*, введите команду:

route print 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.*, введите команду:

route delete 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 

На этом все! Profit!

Обсудить статью в чате TG или в Slack

Маршрутизация между нашими подсетями в Windows

С чем обязательно придётся столкнуться при сопряжении разных подсетей – это маршрутизация. Ох, сколько раз я задумчиво чесал затылок не понимая, почему узел назначения оставался недоступным. Ну чтож, попробуем это чётко спланировать, чтобы не ошибиться.

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

0a8a9b518809b2910ca17bf8dd92697e.jpg

Подпишу сетевые интерфейсы:

  1. 192.168.10.2/24
  2. 192.168.10.1/24
  3. 10.0.0.10/24
  4. 10.0.0.20/24
  5. 192.168.20.1/24
  6. 192.168.20.2/24

Всё просто. Шлюзы внутри с адресом .1, снаружи – по номеру подсети .10 – 10-ая подсеть, .20 – 20-ая подсеть. А хосты с адресом .2. Думаю, с этим вопросов не возникло. Чтож, проверим маршрутизацию сейчас. Для этого с каждого узла пропингуем все остальные хосты.

aecb43137a3f8c88bfa5b37e5a982c3e.jpg

Доступность узлов в сети

68e1c11bf541084e6eb272c46462a289.jpg

Как мы видим, доступность есть только у узлов, непосредственно связанных виртуальным сетевым кабелем. Будем это исправлять!

Маршруты будем добавлять с помощью команды ROUTE командной строки. Что нам нужно добавить? Смотрим в табличку и добавляем те назначения, которые мы НЕ видим. И прописываем тот узел, который является следующим шагом для пакета на этом пути. Вот подробности:

  • Для HOST:
    1. назначение – 10.0.0.0/24 направляем на 192.168.10.1
    2. назначение – 192.168.20.0/24 направляем на 192.168.10.1
  • Для SERV:
    1. назначение – 192.168.20.0/24 направляем на 10.0.0.20
  • Для MAIN:
    1. назначение – 192.168.10.0/24 направляем на 10.0.0.10
  • Для ADMIN:
    1. назначение – 192.168.10.0/24 направляем на 192.168.20.1
    2. назначение – 10.0.0.0/24 направляем на 192.168.20.1

Прописываем маршруты Route

Как добавляются маршруты для рабочих станций? Утилита route

Синтаксис примерно такой:

route add MASK <mask><ga></mask>

Покажем на примере. Узел host. Передавать пакеты на узел serv.main.com. Пробуем послать ping, пакеты не доходят. (см. скриншот выше). Почему? Да потому что наш компьютер не знает, куда передавать пакеты в неизвестную подсеть (узел 10.0.0.10). Это не наша подсеть, поэтому теряемся в догадках.

Задача маршрутизации – обеспечить передачу пакетов в другие сети. Если бы у нас был установлен основной шлюз (default gateway), то все пакеты с неизвестным адресом сети назначения передавались бы именно на него “Пусть сами разбираются”, но такой параметр у нас не указан.

Итак, настраиваем узел host.

route add 10.0.0.0 mask 255.0.0.0 192.168.10.1

Все пакеты, адрес назначения которых стоит “подсеть 10.0.0.0/8” будут отправляться на 192.168.10.1. Что происходит при этом на 192.168.10.1? 192.168.10.1 – это узел serv.main.com, который имеет второй сетевой интерфейс 10.0.0.10. Пакеты на этот интерфейс, посланные с host – дойдут без проблем, так как маршрут до узла мы прописали.

Вот такая занимательная маршрутизация. Итак, маршрут до 10.0.0.10 у нас есть. Сделаем аналогичным образом маршруты до подсети 192.168.20.0/24. Всё-всё-всё посылаем на 192.168.10.1 (так как – это наш единственный “выход” с узла host).

Пришла пора настраивать узел serv.main.com, который стал полновесным маршрутизатором.

Идём в управление сервером и смотрим, чтобы была установлена роль “Маршрутизация и удалённый доступ” (Routing and remote access). Если всё ОК, входим в “Администрирование” в эту оснастку.

Маршрутизация и удалённый доступ в Windows Server 2003

Или устанавливаем её. Для этого отключаем службу Windows Firewall

9cb5c4af60c69a68557355b4301d1738.jpg

После добавления роли “Маршрутизация и удалённый доступ” мы видим следующую оснастку. Открываем конфигурирование.

32347d3ed2a63cf3bbfb036e479a4b6b.jpg

Начинаем конфигурирование. Настраивать будем всё вручную, чтобы лучше разобраться в маршрутизации.

697a816b81e38c803883c8450fcb4441.jpg

А в этом окне мастера настройки маршрутизации и удалённого доступа выбираем “маршрутизацию между сетями”. Как раз то, что нужно.

4b6941aeb61115abeb32f9eb39ecf5bd.jpg

И у нас появилось вот такое дерево в консоли MMC. Интересует нас “статические маршруты”.

d83a1b0546204eac20eaaf7bd3935bb2.jpg

И добавим вот такой маршрут. В общем-то это похоже на графическую оболочку утилиты route, поэтому объясню лишь то, что мы сделали. Для сети 192.168.10.0/24 мы указали адрес следующего прыжка 192.168.10.1 для пакетов, пришедших с интерфейса 10.0.0.10 (т.е. те пакеты, которые идут извне к нам, например от узла MAIN.COM или ADMIN.MAIN.COM

a6d16f03dea313b9dc16db3f39b676b1.jpg

Подобную ситуцию сделаем и на MAIN.COM

59dac1d3efb05bbd7f702b8cba22b1eb.jpg

В общем виде – то же самое. Указываем “ОТКУДА”, “КУДА” и “КУДА ПОСЫЛАТЬ”. На метрику внимания не обращаем, это для приоретизации одних маршрутов перед другими, когда из одной точки можно добраться в другую разными путями.

Маршруты настроили. Простая проверка PING доказывает. Все узлы доступны друг для друга!

LOGO.jpgДрузья! Вступайте в нашу группу Вконтакте, чтобы не пропустить новые статьи! Хотите сказать спасибо? Ставьте Like, делайте репост! Это лучшая награда для меня от вас! Так я узнаю о том, что статьи подобного рода вам интересны и пишу чаще и с большим энтузиазмом!

Также, подписывайтесь на наш канал в YouTube! Видео выкладываются весьма регулярно и будет здорово увидеть что-то одним из первых!

Статья про таблицу маршрутизации — тема, обещанная около четырех лет тому назад. На самом деле, давно нужно было про нее написать, но никак не мог решиться и только сейчас делаю попытку.

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

Просмотр таблицы маршрутизации

Приведу вывод команды route print на моем стаионарном компьютере:

Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.100 20
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
192.168.1.0 255.255.255.0 On-link 192.168.1.100 276
192.168.1.100 255.255.255.255 On-link 192.168.1.100 276
192.168.1.255 255.255.255.255 On-link 192.168.1.100 276
244.0.0.0 240.0.0.0 On-link 127.0.0.1 306
244.0.0.0 240.0.0.0 On-link 192.168.1.100 276
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 192.168.1.100 276

Вот так мы можем просмотреть таблицы маршрутизации. Попробуем описать, что все это означает. Каждая строчка опреедляет, куда отправлять какие пакеты. То есть для диапазона, задаваемого значениями в колонках «сетевой адрес» и «маска сети» создается сетевой маршрут. Например, адрес 192.168.0.1 и маска 255.255.255.0 означают, что имеется в виду диапазон 192.168.0.*. Маска всегда имеет вид, когда вначале стоят 255, в конце — нули, а последним ненулевым числом может быть степень двойки минус один. Например, для маски 255.255.127.0 и того же адреса 192.168.0.1 диапазон будет чуть шире, в него войдут и адреса вида 192.168.1.*. Чтобы описать это точнее, надо представить все числа в двоичном виде, но это не является целью статьи.

Итак, если мы определились с диапазоном, мы должны понять, куда же компьютер будет направлять пакеты, если они предназначены адресам из этого диапазона. Начнем с четвертой колонки. Она определяет тот адаптор, на который нужно отправлять пакеты. Например, в данном случае, в ней встречаются 192.168.1.100 — это адрес моей сетевой карты и 127.0.0.1 — так называемая обратная петля. Пакеты «на этот адаптор» компьютер даже не будет пытаться отправлять куда-либо. Если бы у меня была активна другая карта, например, WiFi, то в четвертой колонке встречался бы и е адрес.

Третья колонка определяет «шлюз» — тот маршрутизатор, которому нужно послать эти пакеты. В случае, когда там написано «On-link», имеется в виду, что никаких маршрутизаторов не нужно — адрес и так находится в прямой досягаемости. Последняя колонка — метрика. Она определяет предпочтение для маршрута, когда есть варианты. Строчки с наименьшей метрикой предпочтительны при совпадении диапазонов.

routing_table.jpg

Итак, давайте разберем описанные маршруты. На самом деле, самой важной является в данном случае первая строчка. Она говорит, что для любого адреса (адрес 0.0.0.0 с маской 0.0.0.0 задает полный диапазон) есть маршрут с использованием моей сетевой карты, и направить можно эти пакеты по адресу 192.168.1.1. Последний адрес является моим роутером, что все и объясняет. Любой адрес, который компьютер не сможет найти где-то рядом, он направит на роутер и предоставит тому с ним разбираться.

Поговорим про остальное. Три строчки про 127 — системные, связаны с тем, что эти адреса всегда должны возвращаться на сам компьютер. Адреса диапазона 192.168.1.* являются локальной сетью, 192.168.1.100 — вообще наш адрес, 192.168.1.255 — специальный адрес для широковещательных пакетов в локальной сети. Адреса 244.0.0.0 — тоже специальные зафиксированные адреса для широкого вещания, а две последние строчки определяют сами адаптеры.

Но этот случай достаточно неинтересный. Посмотрим на таблица на моем роутере. Внешний вид будет немного другой, поскольку на нем Линукс, и я вывожу соответствующие таблицы командой route -n.

Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.20.43 0.0.0.0 255.255.255.255 UH ppp0
192.168.1.0 0.0.0.0 255.255.255.0 U br0
10.22.220.0 0.0.0.0 255.255.255.0 U vlan1
10.0.0.0 10.22.220.1 255.224.0.0 UG vlan1
127.0.0.0 0.0.0.0 255.0.0.0 U lo
0.0.0.0 10.0.20.43 0.0.0.0 UG ppp0

Заметим сразу, что колонки немного изменились. На всех мы останавливаться не будем, существенной измененной колонкой является последняя — вместо IP-адреса адаптора мы указываем его имя. Здесь lo — это «петля» (никуда не отправлять), br0 — внутренняя сеть, ppp0 — внешняя, vlan0 — установленное vpn-содениение. Итак, разберем строчки. Также в колонке с флагами буква G означает Gateway — шлюз, а H — Host, наш компьютер.

Последняя строчка — шлюз по умолчанию. Любой пакет мы может отправить на адрес 10.0.20.43. Что интересно, это — наш собственный адрес, полученный при установке VPN — соединения! Так всегда получается, когда установлено VPN-соединения, пакет, в первую очередь отправляем своему виртуальному интерфейсу, где он инкапсулируется в другой пакет, который пойдет до реального шлюза. Естественно, в таблицах маршрутизации этого не видно. Также к описанию этого соединения относится и первая строчка.

Настоящий шлюз мы видим в третей строчке — адресы диапазона 10.22.220.* отправляются на vlan1, шлюз, предоставленный провайдером, коммуникатор, с которым мы соединены сетевым кабелем напрямую. Вторая строчка говорит о том, что адреса диапазона 192.168.1.* — это локальная сеть, и пакеты к ним нужно отправлять внутрь, а не вовне. Пятая — обычная информация про «локальные адреса».

Команды таблицы маршрутизации

Я ничего не сказал про предпоследнюю строчку. А она самая интересная, ведь я ее добавил руками. В чем ее смысл? Адреса диапазона 10.1-32.*.* я отправляю на шлюз 10.22.220.1. Пакеты на эти адреса не пойдут в интернет, а останутся в локалке провайдера. Да, пакеты на диапазон 10.22.220. и так идут туда, но этого мало. Так я не получаю полноценного доступа к локальным ресурсам.

В случае Windows такой маршрут в таблицы маршрутизации был бы добавлен командой route -p add 10.0.0.0 mask 255.224.0.0 10.22.220.1. -p означает, что маршрут постоянный, он не должен удаляться после перезагрузки компьютера.

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

← Что такое компакт-диски? Как разбить жесткий диск? →

comments powered by DisqusИспользуемые источники:

  • https://jtprog.ru/windows-route-add/
  • https://litl-admin.ru/windows-2/nastrojka-marshrutizacii-mezhdu-podsetyami.html
  • https://it.sander.su/routing_table.php

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации