Как прописать статический маршрут? И зачем он нужен?
В данной статье мы рассмотрим, что такое статический маршрут и зачем его вообще прописывать. Мы будем использовать так называемые «руты» или другими словами будем прописывать маршруты с помощью команды route add в командной строке Windows.
Прежде чем приступать к практике хотелось бы поговорить немного о теории, что бы Вы понимали, что Вы делаете, и в каких случаях это Вам может пригодиться.
Для начала пару определений:
Статическая маршрутизация — вид маршрутизации, при котором маршруты указываются в явном виде при конфигурации маршрутизатора. Вся маршрутизация при этом происходит без участия каких-либо протоколов маршрутизации.
Статический маршрут — представляет собой заданный администратором маршрут, который заставляет пакеты, перемещающиеся между источником и адресатом, отправляться по указанному пути. Другими словами — это явно указанный путь, по которому должен пройти пакет из пункта А в пункт Б.
В этой статье мы с Вами говорим, о статическом маршруте на обыкновенном компьютере с операционной системой Windows. Для чего же нам нужно уметь прописывать статические маршруты? спросите Вы, сейчас попробую объяснить, где это знание Вам может пригодиться.
Сейчас очень распространено для безопасности использовать «Виртуальные частные сети» (VPN). VPN используют как в организациях, для организации своей защищенной сети, так и провайдеры, для предоставления доступа, к глобальной сети Интернет, простым пользователям. Но, так или иначе, это иногда вызывает небольшие неудобства, как в организациях, так и у обычных пользователей.
Например, у Вас дома два компьютера, один из которых имеет доступ в Интернет по средствам VPN, также он соединен со вторым компьютером локальной сетью, и каждый раз, когда он подключается к Интернету, то связь между двумя компьютерами теряется, так как первый компьютер (который подключился к VPN) уже находится в другой сети, и поэтому недоступен со второго компа.
Это можно исправить как раз с помощью статического маршрута. Или другой случай, пригодится сисадминам, (пример из жизни) есть организация, у которой имеются небольшие удаленные офисы, связь с которыми идет по средствам OpenVPN. Был случай, когда мне пришлось узнать внешние ip адреса у этих удаленных офисов, я подключался к компьютеру по VPN сети и соответственно не мог узнать внешний ip, так как он мне бы показал внешний ip нашего VPN соединения. В итоге я просто на всего прописал один статический маршрут на удаленном компьютере, с помощью которого и попал на нужный мне сайт (который показывал внешний ip) и все. Есть, конечно, и другой вариант, съездить туда и узнать ip без подключения к VPN сети, но Вы сами понимаете, что на это нет времени и попросту неохота. Теперь Вы немного представляете, где и для чего Вам может пригодиться знание того, как прописываются статические маршруты.
Примеры использования утилиты route
Хватит теории, переходим к практике. Сейчас мы с Вами пропишем маршрут, который разрешит нам получить доступ к локальной сети при включенном VPN соединении, пригодится обычным пользователям, у которых дома более одного компьютера, а в Интернет выходят по средствам VPN.
Имеем локальную сеть: 192.168.1.0/24
Локальный IP первого компьютера (пусть он будет компьютер — A) – 192.168.1.2 (на котором присутствует VPN соединение)
Локальный IP второго компьютера (а этот компьютер — B) – 192.168.1.3
IP адрес шлюза т.е. модема – 192.168.1.1
Нам нужно прописать маршрут на компьютере A, чтобы он смог видеть компьютер B при включенном VPN соединении. Делается это следующем образом: запускаем командную строку Пуск->Выполнить->cmd и набираем следующую команду:
route –p add 192.168.1.0 mask 255.255.255.0 192.168.1.1
- route – сама программа, которая работает с таблицей маршрутизации;
- -p – ключ, который говорит, что маршрут будет постоянный, так как (Важное замечание!) без этого ключа все маршруты, которые Вы добавите удалятся после перезагрузке, поэтому если Вы хотите использовать маршрут всегда, то пропишите этот ключ, если только один раз, то его можно не писать;
- add – команда, добавляющая запись в таблицу маршрутизации;
- 192.168.1.0 – сеть, с которой Вы хотите иметь связь;
- mask 255.255.255.0 – маска подсети;
- 192.168.1.1 – адрес шлюза, обычно это адрес модема.
Добавив всего один маршрут, Вы получаете доступ к своей сети при подключенном Интернете, т.е. VPN соединении.
Вот еще один небольшой пример, у Вас дома подключение к Интернету через модем ADSL и Вам иногда (ну или постоянно) требуется подключение к VPN сети, и соответственно выхода в Интернет через свой канал у Вас уже не будет. Но с помощью статического маршрута Вы можете получить доступ к определенным сайтам (узнав предварительно их ip адреса, с помощью команды ping в командной строке, например ping yandex.ru), к которым Вам бы хотелось иметь постоянный доступ (и при подключенном VPN соединении и неподключенном). Например, сайт имеет ip адрес 172.18.24.13, а шлюз (маршрутизатор, модем) имеет IP адрес 192.168.0.1, Вам необходимо прописать следующее:
route –p add 172.18.24.13 mask 255.255.255.255 192.168.0.1
Синтаксис и основные ключи утилиты route
Теперь поговорим поподробней о команде route.
route [-f] [-p] [destination] [mask ] [gateway] [metric ] [if ]
- -f — удаляет из таблицы маршрутизации все маршруты;
- -p – сохраняет маршрут на постоянную основу;
- add – добавляет новый маршрут;
- change — меняет текущий маршрут в таблице маршрутизации;
- delete — удаляет маршрут из таблицы маршрутизации;
- print — отображает содержимое таблицы маршрутизации;
- destination — при добавлении или изменении маршрута этот параметр используется для указания идентификатора сети назначения;
- mask — при добавлении или изменении маршрута этот параметр используется для указания маски подсети для сети назначения;
- gateway — при добавлении или изменении нового маршрута этот параметр используется для указания шлюза (маршрутизатора или модема);
- metric — используется для указания целого числа в диапазоне от 1 до 9999, являющегося метрикой стоимости для маршрута. Если для определенной сети назначения существует несколько возможных маршрутов, будет использован маршрут с наименьшим значением метрики;
- if — используется для указания номера индекса интерфейса, который подключен к сети назначения.
Для того чтобы просто посмотреть таблицу маршрутизации у себя на компьютере введите в командную строку следующие:
route print
Вот в принципе и все что я хотел Вам рассказать, но следует помнить что, проводя все выше указанные манипуляции нужно быть внимательным, так как ошибка всего в одной цифре приведет к нежелательным результатам, не критичным, но нежелательным. В особенности это относится к корпоративным сетям, где маршрутизация уже настроена, и Вы можете легко изменить, удалить нужные маршруты.
Настройка маршрутизатора на базе Windows Server 2012 R2
В этой статье посмотрим, как с помощью встроенных средств на базе сервера с Windows Server 2012 R2 организовать простой межсетевой маршрутизатор. И хотя на практике маршрутизаторы на базе компьютеров используются довольно редко (аппаратные маршрутизаторы, как правило, имеют более высокую производительность, надежность и несколько дешевле выделенного компьютера), в тестовых или виртуальных средах, когда нужно срочно настроить маршрутизацию между несколькими подсетями, маршрутизатор на базе Windows Server вполне себе приемлемое решение.
Итак, в роли маршрутизатора будет выступать сервер с ОС Windows Server 2012 R2. Сервер имеет 2 сетевых интерфейса: физических или виртуальных, если сервер запущен на гипервизоре. Каждому интерфейсу сервера назначен выделенный IP адрес из различных подсетей. Для удобства, мы переименовали названия сетевых интерфейсов в Панели управления сетями и общим доступом:
Сетевая карта 1 (сетевая карта подключена во внутреннюю LAN сеть):
Имя: LAN
IP: 10.0.1.1
Сетевая карта 2 (сетевая карта во внешней сети ):
Имя: Internet
IP: 192.168.1.20
Наша задача – организовать маршрутизацию пакетов из локальной подсети 10.0.1.0 во внешнюю подсеть 192.168.1.0 (как правило, такая сеть имеет выход в интернет) через NAT. Такую схему можно реализовать в случае необходимости организации доступа клиентов из внутренней сети в интернет.
Маршрутизация в Windows Server 2012 R2 реализуется на базе роли Remote Access (RRAS). Данная служба появилась еще в Windows Server 2003 и до текущей в версии Windows Server ее интерфейс и процесс настройки практически не изменился.
В первую очередь нужно установить роль Remote Access. Для этого откроем консоль Server Manager, выбираем Manage -> Add Roles and Features, находим и отмечаем роль Remote Access, в ее составе выбираем службу Routing, и, соглашаясь со всеми предложенными по умолчанию компонентами, запускаем ее установку (Install).
После окончания установки открываем консоль Routing and Remote Access (rrasmgmt.msc), щелкаем по имени сервера (с красной стрелкой) и выбираем Configure and Enable Routing and Remote Access.
В открывшемся окне выбираем пункт Network Address Translation (NAT).
На следующей шаге (NAT Internet Connection) нужно выбрать сетевой интерфейс, подключённый ко внешней сети / Интернету (в нашем примере это интерфейс Internet с ip 192.168.1.20). Этот интерфейс будет «публичным интерфейсом» нашего NAT роутера.
Далее будет предложено указать должен ли NAT роутер обеспечить клиентов внутренней сети сервисами DHCP и DNS. Как правило, этот функционал во внутренней сети уже имеется, поэтому в нем мы не нуждаемся.
На этом базовая настройка маршрутизации на Windows Server 2012 R2 завершена. Сервер уже должен выполнять маршрутизацию пакетов между двумя подключенными сетями и выполнять трансляцию сетевых адресов (NAT).
Чтобы в этом убедиться, в консоли RRAS откройте свойства сервера. На вкладке General показано, что IPv4 маршрутизация включена (т.е. пакеты IPv4 будут пересылаться с одной сетевой карты на другую).
Проверить работу маршрутизации можно, указав на клиентском компьютере во внутренней сети (к которой подключен интерфейс сервера LAN) в качестве шлюза IP-адрес сервера (10.0.1.1), и выполнить ping или трассировку маршрута к ресурсу, расположенному во внешней сети или интернете. Эти попытки должны быть успешными.
В нашем случае на сервере осуществялется статическая маршрутизация. Если нужно добавить новый маршрут, щелкните ПКМ по Static Routes, выберите пункт меню New static route и создайте новое статическое правило маршрутизации.
route route
Область применения: Windows Server (половина ежегодного канала), Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012 Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012
Отображает и изменяет записи в локальной таблице маршрутизации IP. Displays and modifies the entries in the local IP routing table. Если используется без параметров, команда Route выводит справку из командной строки. If used without parameters, route displays help at the command prompt.
Эта команда доступна, только если протокол Internet Protocol (TCP/IP) установлен в качестве компонента в свойствах сетевого адаптера в окне Сетевые подключения. This command is available only if the Internet Protocol (TCP/IP) protocol is installed as a component in the properties of a network adapter in Network Connections.
Синтаксис Syntax
Параметры Parameters
Параметр Parameter | Описание Description |
---|---|
/f /f | Очищает таблицу маршрутизации всех записей, не являющихся маршрутами узла (маршруты с сетевой маской 255.255.255.255), маршрутом сети замыкания на себя (маршруты с назначением 127.0.0.0 и сетевой маской 255.0.0.0) или маршрутом многоадресной рассылки (маршруты с назначением 224.0.0.0 и сетевой маской 240.0.0.0). Clears the routing table of all entries that are not host routes (routes with a netmask of 255.255.255.255), the loopback network route (routes with a destination of 127.0.0.0 and a netmask of 255.0.0.0), or a multicast route (routes with a destination of 224.0.0.0 and a netmask of 240.0.0.0). Если используется в сочетании с одной из команд (например, Add, Change или DELETE), таблица удаляется перед выполнением команды. If this is used in conjunction with one of the commands (such as add, change, or delete), the table is cleared prior to running the command. |
/p /p | При использовании с командой Add указанный маршрут добавляется в реестр и используется для инициализации таблицы IP-маршрутизации при каждом запуске протокола TCP/IP. When used with the add command, the specified route is added to the registry and is used to initialize the IP routing table whenever the TCP/IP protocol is started. По умолчанию при запуске протокола TCP/IP добавленные маршруты не сохраняются. By default, added routes are not preserved when the TCP/IP protocol is started. При использовании с командой print отображается список постоянных маршрутов. When used with the print command, the list of persistent routes is displayed. Этот параметр игнорируется для всех остальных команд. This parameter is ignored for all other commands. Постоянные маршруты хранятся в папке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes. Persistent routes are stored in the registry location HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes. |
Указывает команду, которую требуется выполнить. Specifies the command you want to run. К допустимым командам относятся: The valid commands include:
| |
Указывает сетевой адрес маршрута. Specifies the network destination of the route. Назначением может быть IP-адрес сети (где биты узла сетевого адреса имеют значение 0), IP-адрес для маршрута узла или 0.0.0.0 для маршрута по умолчанию. The destination can be an IP network address (where the host bits of the network address are set to 0), an IP address for a host route, or 0.0.0.0 for the default route. | |
виде mask | Указывает сетевой адрес маршрута. Specifies the network destination of the route. Назначением может быть IP-адрес сети (где биты узла сетевого адреса имеют значение 0), IP-адрес для маршрута узла или 0.0.0.0 для маршрута по умолчанию. The destination can be an IP network address (where the host bits of the network address are set to 0), an IP address for a host route, or 0.0.0.0 for the default route. |
Указывает IP-адрес перенаправления или следующего прыжка, по которому можно получить набор адресов, определяемых назначением сети и маской подсети. Specifies the forwarding or next hop IP address over which the set of addresses defined by the network destination and subnet mask are reachable. Для локально подключенных маршрутов подсети адрес шлюза — это IP-адрес, назначенный интерфейсу, подключенному к подсети. For locally attached subnet routes, the gateway address is the IP address assigned to the interface that is attached to the subnet. Для удаленных маршрутов, доступных на одном или нескольких маршрутизаторах, адрес шлюза представляет собой напрямую достижимый IP-адрес, назначенный соседнему маршрутизатору. For remote routes, available across one or more routers, the gateway address is a directly reachable IP address that is assigned to a neighboring router. | |
шкал metric | Указывает целочисленную метрику стоимости (от 1 до 9999) для маршрута, который используется при выборе нескольких маршрутов в таблице маршрутизации, наиболее точно соответствующих адресу назначения перенаправляемого пакета. Specifies an integer cost metric (ranging from 1 to 9999) for the route, which is used when choosing among multiple routes in the routing table that most closely match the destination address of a packet being forwarded. Выбирается маршрут с наименьшей метрикой. The route with the lowest metric is chosen. Метрика может отражать число прыжков, скорость пути, надежность пути, пропускную способность пути или административные свойства. The metric can reflect the number of hops, the speed of the path, path reliability, path throughput, or administrative properties. |
наличии if | Указывает индекс интерфейса для интерфейса, для которого целевой объект доступен. Specifies the interface index for the interface over which the destination is reachable. Чтобы получить список интерфейсов и их соответствующих индексов интерфейсов, используйте отображение команды route print. For a list of interfaces and their corresponding interface indexes, use the display of the route print command. Для индекса интерфейса можно использовать либо десятичное, либо шестнадцатеричное значение. You can use either decimal or hexadecimal values for the interface index. Для шестнадцатеричных значений перед шестнадцатеричным числом следует указать 0x. For hexadecimal values, precede the hexadecimal number with 0x. Если параметр if опущен, интерфейс определяется по адресу шлюза. When the if parameter is omitted, the interface is determined from the gateway address. |
/? /? | Отображение справки в командной строке. Displays help at the command prompt. |
Комментарии Remarks
Большие значения в столбце метрик таблицы маршрутизации являются результатом того, что TCP/IP автоматически определяет метрику маршрутов в таблице маршрутизации на основе конфигурации IP-адреса, маски подсети и шлюза по умолчанию для каждого интерфейса локальной сети. Large values in the metric column of the routing table are the result of allowing TCP/IP to automatically determine the metric for routes in the routing table based on the configuration of IP address, subnet mask, and default gateway for each LAN interface. Автоматическое определение метрики интерфейса, включенное по умолчанию, определяет скорость каждого интерфейса и корректирует метрики маршрутов для каждого интерфейса, чтобы самый быстрый интерфейс создавал маршруты с наименьшей метрикой. Automatic determination of the interface metric, enabled by default, determines the speed of each interface and adjusts the metrics of routes for each interface so that the fastest interface creates the routes with the lowest metric. Чтобы удалить большие метрики, отключите автоматическое определение метрики интерфейса из дополнительных свойств протокола TCP/IP для каждого подключения к локальной сети. To remove the large metrics, disable the automatic determination of the interface metric from the advanced properties of the TCP/IP protocol for each LAN connection.
Имена могут использоваться для назначения , если в файле локальных сетей , хранящемся в папке, есть соответствующая запись systemroot\System32\Drivers\\ . Names can be used for destination if an appropriate entry exists in the local Networks file stored in the systemroot\System32\Drivers\\ folder. Имена могут использоваться для шлюза при условии, что они могут быть разрешены по IP-адресу с помощью стандартных методов разрешения имен узлов, таких как запросы службы доменных имен (DNS), использование локального файла Hosts, хранящегося в systemroot\system32\drivers\\ папке, и разрешение имен NetBIOS. Names can be used for the gateway as long as they can be resolved to an IP address through standard host name resolution techniques such as Domain Name System (DNS) queries, use of the local Hosts file stored in the systemroot\system32\drivers\\ folder, and NetBIOS name resolution.
Если команда печатается или удаляется, параметр шлюза можно опустить, а для назначения и шлюза можно использовать подстановочные знаки. if the command is print or delete, the gateway parameter can be omitted and wildcards can be used for the destination and gateway. Конечным значением может быть подстановочное значение, заданное звездочкой (*) . The destination value can be a wildcard value specified by an asterisk (*) . Если указанное назначение содержит звездочку или вопросительный (*) знак (?), оно рассматривается как подстановочный знак и печатается или удаляется только в соответствующих маршрутах назначения. If the destination specified contains an asterisk (*) or a question mark (?), it’s treated as a wildcard and only matching destination routes are printed or deleted. Звездочка соответствует любой строке, а вопросительный знак соответствует любому отдельному символу. The asterisk matches any string, and the question mark matches any single character. Например,, 10.\*.1, 192.168.\* 127.\* и \*224\* являются допустимыми символами-шаблонами звездочки. For example, 10.\*.1, 192.168.\* , 127.\* , and \*224\* are all valid uses of the asterisk wildcard.
При использовании неподдерживаемого сочетания назначения и маски подсети (маска) отображается сообщение об ошибке «маршрут: неправильная Маска адреса шлюза». Using an unsupported combination of a destination and subnet mask (netmask) value displays a «Route: bad gateway address netmask» error message. Это сообщение об ошибке появляется, если назначение содержит одну или несколько битов, равных 1 в битах, где соответствующий бит маски подсети имеет значение 0. This error message appears when the destination contains one or more bits set to 1 in bit locations where the corresponding subnet mask bit is set to 0. Чтобы протестировать это условие, выразит назначение и маску подсети с помощью двоичной нотации. To test this condition, express the destination and subnet mask using binary notation. Маска подсети в двоичной нотации состоит из последовательности из 1 бит, представляющей часть сетевого адреса назначения, и серии из 0 бит, представляющих часть адреса узла назначения. The subnet mask in binary notation consists of a series of 1 bits, representing the network address portion of the destination, and a series of 0 bits, representing the host address portion of the destination. Установите флажок, чтобы определить наличие в назначении битов, для которых задано значение 1, для части назначения, которая является адресом узла (как определено маской подсети). Check to determine whether there are bits in the destination that are set to 1 for the portion of the destination that is the host address (as defined by the subnet mask).
Примеры Examples
Чтобы отобразить все содержимое таблицы IP-маршрутизации, введите: To display the entire contents of the IP routing table, type:
Чтобы отобразить маршруты в таблице IP-маршрутизации, начинающейся с 10, введите: To display the routes in the IP routing table that begin with 10, type:
Чтобы добавить маршрут по умолчанию с адресом шлюза по умолчанию 192.168.12.1, введите: To add a default route with the default gateway address of 192.168.12.1, type:
Чтобы добавить маршрут к целевому 10.41.0.0 с маской подсети 255.255.0.0 и адресом следующего прыжка 10.27.0.1, введите: To add a route to the destination 10.41.0.0 with the subnet mask of 255.255.0.0 and the next hop address of 10.27.0.1, type:
Чтобы добавить постоянный маршрут к целевому 10.41.0.0 с маской подсети 255.255.0.0 и адресом следующего прыжка 10.27.0.1, введите: To add a persistent route to the destination 10.41.0.0 with the subnet mask of 255.255.0.0 and the next hop address of 10.27.0.1, type:
Чтобы добавить маршрут к целевому 10.41.0.0 с маской подсети 255.255.0.0, адрес следующего прыжка 10.27.0.1 и метрику стоимости 7, введите: To add a route to the destination 10.41.0.0 with the subnet mask of 255.255.0.0, the next hop address of 10.27.0.1, and the cost metric of 7, type:
Чтобы добавить маршрут к целевому 10.41.0.0 с маской подсети 255.255.0.0, адрес следующего прыжка 10.27.0.1, а также используя интерфейс 0x3 индекса, введите: To add a route to the destination 10.41.0.0 with the subnet mask of 255.255.0.0, the next hop address of 10.27.0.1, and using the interface index 0x3, type:
Чтобы удалить маршрут к целевому 10.41.0.0 с маской подсети 255.255.0.0, введите: To delete the route to the destination 10.41.0.0 with the subnet mask of 255.255.0.0, type:
Чтобы удалить все маршруты в таблице IP-маршрутизации, начинающейся с 10, введите: To delete all routes in the IP routing table that begin with 10, type:
Чтобы изменить адрес следующего прыжка маршрута с назначением 10.41.0.0 и маской подсети 255.255.0.0 с 10.27.0.1 на 10.27.0.25, введите: To change the next hop address of the route with the destination of 10.41.0.0 and the subnet mask of 255.255.0.0 from 10.27.0.1 to 10.27.0.25, type: