Route как добавить маршрут

Про правила добавления маршрутов в Windows я уже написал. Пришла пора написать про правила добавления маршрутов в любимой мною Ubuntu. Так же есть немного общей информации по данной теме, относящейся к Ubuntu и маршрутизации. И сразу поясню, что все действия требуется делать от имени суперпользователя (root).

Правила маршрутизации определяют, куда отправлять IP-пакеты. Данные маршрутизации хранятся в одной из таблиц ядра. Вести таблицы маршрутизации можно статически или динамически. Статический маршрут – это маршрут, который задается явно с помощью команды route. Динамическая маршрутизация выполняется процессом-демоном (routed или gated), который ведет и модифицирует таблицу маршрутизации на основе сообщений от других компьютеров сети. Для выполнения динамической маршрутизации разработаны специальные протоколы: RIP, OSPF, IGRP, EGP, BGP и т. д.

Динамическая маршрутизация необходима в том случае, если у вас сложная, постоянно меняющаяся структура сети и одна и та же машина может быть доступна по различным интерфейсам (например, через разные Ethernet или SLIP интерфейсы). Маршруты, заданные статически, обычно не меняются, даже если используется динамическая маршрутизация. Для персонального компьютера, подключаемого к локальной сети, в большинстве ситуаций бывает достаточно статической маршрутизации командой route. Прежде чем пытаться настраивать маршруты, просмотрите таблицу маршрутизации ядра с помощью команды netstat -n -r. Вы должны увидеть что-то вроде следующего

Destination          Gateway              Genmask             Flags     MSS     Window       irtt       Iface
192.168.254.0     0.0.0.0                 255.255.255.0     U           0          0                  0          eth1
192.168.254.0     0.0.0.0                 255.255.255.0     U                    0                  0          eth0
169.254.0.0         0.0.0.0                 255.255.0.0         U           0          0                  0          eth1
0.0.0.0                 192.168.254.1     0.0.0.0                 UG         0          0                  0          eth0
0.0.0.0                 192.168.254.1     0.0.0.0                 UG         0          0                  0          eth1

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

route операция -тип адресат шлюз интерфейс

Здесь аргумент “операция” может принимать одно из двух значений: add (маршрут добавляется) или delete (маршрут удаляется).

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

Локальный интерфейс поддерживает сеть с IP-номером 127.0.0.1. Поэтому для маршрутизации пакетов с адресом 127.0. X. X используется команда:

route add -net 127.0.0.1 lo

Если у вас для связи с локальной сетью используется одна плата Ethernet, и все машины находятся в этой сети (сетевая маска 255.255.255.0), то для настройки маршрутизации достаточно вызвать:

route add -net 192.168.36.0 netmask 255.255.255.0 eth0

Если же вы имеете насколько интерфейсов, то вам надо определиться с сетевой маской и вызвать команду route для каждого интерфейса. Поскольку очень часто IP-пакеты с вашего компьютера могут отправляться не в одну единственную сеть, а в разные сети (например, при просмотре разных сайтов в Интернете), то в принципе надо было бы задать очень много маршрутов. Очевидно, что сделать это было бы очень сложно, точнее просто невозможно. Поэтому решение проблемы маршрутизации пакетов перекладывают на плечи специальных компьютеров-маршрутизаторов, а на обычных компьютерах задают маршрут по умолчанию, который используется для отправки всех пакетов, не указанных явно в таблице маршрутизации. С помощью маршрута по умолчанию вы говорите ядру “а все остальное отправляй туда”. Маршрут по умолчанию настраивается следующей командой:

route add default gw 192.168.1.1 eth0

Описание команды ROUTE.

1.1. Формат командной строки:

Подсказку по параметрам командной строки можно получить используя встроенную справку ( route /?).

Поиск всех символических имен узлов проводится в файле сетевой базы данных NETWORKS. Поиск символических имен шлюзов проводится в файле базы данных имен узлов HOSTS.

Для команд PRINT и DELETE можно указать узел и шлюз с помощью подстановочных знаков или опустить параметр «шлюз».

Если адресуемый узел содержит подстановочные знаки * или ?, он используется в качестве шаблона, и печатаются только соответствующие ему маршруты. Знак ‘*’ соответствует любой строке, а ‘?’ — одному знаку.

Примеры: 157.*.1, 157.*, 127.*, *224*.

Соответствие шаблону поддерживает только команда PRINT.

:/>  Boot option priorities как расставить

Недопустимое значение MASK вызывает ошибку, если (УЗЕЛ & МАСКА) != УЗЕЛ.

Например добавление маршрута завершится ошибкой, поскольку указан недопустимый параметр маски. ( Узел & Маска) != Узел.

C: route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1 IF 1 –

Примеры параметров

2.1. отобразить таблицу маршрутов:

C: route PRINT

2.2. Отобразить таблицу маршрутов только для IPv4:

C: route PRINT -4

2.3. Отобразить таблицу маршрутов только для IPv6:

C: route PRINT -6

2.4. Отобразить таблицу маршрутов только для узлов, начинающихся со 157:

C: route PRINT 157*

Если сетевой интерфейс (IF) не задан, то производится попытка найти лучший интерфейс для указанного шлюза.

2.5. Добавить новый маршрут для узла с IPv6:

C: route ADD 3ffe::/32 3ffe::1

2.6. Изменить существующий маршрут для узла IPv4:

C: route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2

Параметр CHANGE используется только для изменения шлюза или метрики.

2.7. Удалить маршрут для IPv4:

C: route DELETE 157.0.0.0

2.8. Удалить маршрут для IPV6:

C: route DELETE 3ffe::/32

Примеры использования команды ROUTE.

3.1. Отобразить текущую таблицу маршрутов:

Отобразиться следующая информация:

3.2. Отобразить таблицу маршрутов только для адресов, начинающихся с 192:

C: route print 192.*

3.3. Установить в качестве шлюза по умолчанию (основного шлюза) адрес 192.168.1.1:

C: route add 0.0.0.0 mask 0.0.0.0 192.168.1.1

3.4. Добавить маршрут для подсети 10.0.0.0/255.0.0.0 и запомнить его в реестре:

C: route -p add 10.0.0.0 mask 255.0.0.0 10.0.0.1

Это постоянный статический маршрут. Если маршрут добавлен без использования параметра -p то он сохраняется только до перезагрузки системы (до перезапуска сетевого системного программного обеспечения). Если же, при добавлении маршрута искользовался данный параметр, то информация о маршруте записывается в реестр Windows (раздел HKLMSYSTEMCurrentControlSetServicesTcpipParametersPersistentRoutes ) и будет использоваться постоянно при активации сетевых интерфейсов.

3.5 Удалить маршрут для подсети 10.0.0.0/255.0.0.0:

C: route delete 10.0.0.0 mask 255.0.0.0

C: route add 10.10.10.10 192.168.1.158

3.7. Удалить маршрут созданный предыдущей командой:

C: route delete 10.10.10.10

3.8. Изменить адрес шлюза для существующего маршрута к сети 10.0.0.0/255.0.0.0 на значение 10.10.10.1:

C: route change 10.0.0.0 mask 255.0.0.0 10.10.10.1

Допускается использование данной команды только для изменения адреса шлюза и метрики.

3.9. Очистить таблицу маршрутов:

C: route -f

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

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

Особенности применения команды route CHANGE в Windows

Необходимо отметить пару моментов в поведении команды route, которые является контринтуитивными (мы ждём одного результата, а получаем другой, неожиданный результат).

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

Хотя об этом уже было сказано выше, значение метрики является ОТНОСИТЕЛЬНЫМ! То значение, которое вы устанавливаете для метрики, добавляется к рассчитываемому системой значению. При этом оно постоянно плавает: то есть система регулярно пересчитывает значения метрики, но к каждому полученному числу добавляет то, которое вы указали с командой route ADD.

А теперь пример

Имеются следующие интерфейсы /etc/network/interfaces:

iface lo inet loopback

iface eth0 inet static
hwaddress ether 00:E0:4C:A2:C4:48

iface eth1 inet static

Интерфейс eth0 это связь с локальной сетью состоящей из 20 подсетей 192.168.1.х-192.168.20.х

Интерфейс eth1 это связь с ADSL модемом с выходом в интернет. Так большинство запросов идут в Инет на этом интерфейсе прописываем шлюз (gateway 192.168.254.1) данный параметр указывает в системе шлюз по-умолчанию, обращаю внимание, что шлюз надо прописывать только на одном интерфейсе, иначе в системе появятся 2 маршрута по умолчанию и естественно будет затупление в работе. С интернетом разобрались.

Но требуется еще просматривать ресурсы локальной сети для этого надо выполнить вот эти команды:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0

:/>  Ключи и лицензии Windows: чем они отличаются? |

На этом примере маршрутизируются 3 подсети Все эти команды и многие другие можно прописать в файлк /etc/network/interfaces в итоге получится следующее:

iface lo inet loopback

iface eth0 inet static
hwaddress ether 00:E0:4C:A2:C4:48
up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0

iface eth1 inet static

По аналогии настраиваются любое кол-во маршрутов и сетевых интерфейсов. Обратите внимание:

так легко можно изменить MAC, не забываем после редактирования файла делать рестарт

sudo /etc/init.d/networking restart

Так же отмечу, что:

route add -net 192.168.36.0/24 eth0

Настройки сети размещаются в файле /etc/network/interfaces:

При подключение к Inet через VPN (ppp0), необходимо заменять маршрут по умолчанию на ppp0. А проще указать в файле /etc/ppp/options следующее:

тогда маршрут заменяется сам и при отключении восстанавливается.

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

Создание постоянных маршрутов, сохраняющихся после перезагрузки

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

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

Пример команды добавления постоянного маршрута:

Номера интерфейсов можно посмотреть командой route print (в самом верху вывода):


Route как добавить маршрут

Номера интерфейсов идут в первом столбике – перед MAC-адресами.

Кроме опции -p, команда route имеет ещё несколько опций, рассмотрим их.

Синтаксис

Вернёмся к ранее полученным данным о маршруте по умолчанию:

Из него следует, что у одного из моих интерфейсов IP адрес 192.168.0.49 и у него метрика равна 55, у другого сетевого интерфейса IP 192.168.1.43 и метрика равна 70. Выигрывает тот маршрут, у которого значение метрики меньше (чем меньше метрика, тем лучше подключение).

Таким образом, если я будут выходить в Интернет, то будет использоваться сетевой интерфейс 192.168.0.49.

Убедимся в этом сразу несколькими способами. Запомним наши IP адреса, как их видят внешний сервисы. Для этого перехожу на https://suip.biz/ru/?act=myip:


Route как добавить маршрут

Я получил, что мой IP 109.126.249.183, а мой локальный IP 192.168.0.49. В командной строке Windows делаю трассировку:

Как можно увидеть по первой строке, я действительно выхожу в интернет через шлюз 192.168.0.1.

Итак, способов изменить маршрут по умолчанию сразу несколько. Например, можно изменить значение метрики так, чтобы приоритетным стал другой маршрут. Второй вариант – удалить другие маршруты, оставив только один.

Оглавление

1. Выбор подключения к Интернету

2. Изменение маршрута по умолчанию в Windows

3. Как установить метрику для сетевых подключений в Windows

4. Особенности применения команды route CHANGE в Windows

5. Создание постоянных маршрутов, сохраняющихся после перезагрузки

6. Справка по команде ROUTE

Если у вас Linux, то смотрите статью «Практика настройки сетевых маршрутов: выбор подключения, используемое для Интернета; одновременное использование нескольких подключений для разных целей». В ней же вы найдёте дополнительные трюки для манипуляции сетевыми маршрутами, которые будут работать, в том числе, и на Windows.

Параметры

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

Как установить метрику для сетевых подключений в Windows

Чтобы было понятно, покажу на конкретном примере. У меня два сетевых интерфейса с IP адресами:

Для этого удаляю все маршруты по умолчанию:

route DELETE 0.0.0.0

Теперь добавляю тот, который я хочу сделать маршрутом по умолчанию, командой вида:

route ADD 0.0.0.0 MASK 0.0.0.0 ШЛЮЗ

В ней ШЛЮЗ нужно заменить на IP адрес шлюза (роутера) того интерфейса, через который вы хотите выходить в Интернет. Для меня это:

На данном этапе уже вернулось Интернет-подключение и если вам достаточного одного подключения, то можно не продолжать.

Тем не менее, я хочу чтобы в качестве резервного у меня было активно и второе подключение, но чтобы оно по умолчанию не использовалось.

Для его добавления используется команда следующего вида:

route ADD 0.0.0.0 MASK 0.0.0.0 ШЛЮЗ METRIC 100

Обратите внимание, что вместо ШЛЮЗ нужно вписать IP адрес шлюза «резервного» интерфейса. Также значение является не абсолютным, а относительным!!! Помните об этом, что указанная величина ДОБАВЛЯЕТСЯ к тому значению метрики, которое рассчитывает операционная система. Значение 100 можно поменять на другое (например, 50). Но выбирайте его так, чтобы значение в сумме с рассчитанной метрикой было больше, чем метрика подключения, которое мы хотим использовать по умолчанию.

route ADD 0.0.0.0 MASK 0.0.0.0 192.168.0.1 METRIC 100


Route как добавить маршрут

Как видим, в маршрутах по умолчанию по-прежнему доступно два сетевых интерфейса. Но теперь интерфейс 192.168.0.49 имеет очень большое значение метрики, поэтому по умолчанию будет применяться сетевой интерфейс 192.168.1.43.

:/>  Активные пользователи информационной базы 1С

Проверим IP в браузере https://suip.biz/ru/?act=myip:


Route как добавить маршрут

Как видим, поменялся и внешний IP (был 109.126.249.183, а стал 213.167.219.207) и локальный (был 192.168.0.49, а стал 192.168.1.43).

Как можно увидеть по первой строке, я действительно выхожу в интернет через шлюз 192.168.1.1.

Справка по команде ROUTE

Чтобы вывести на экран все содержимое таблицы 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

Чтобы добавить маршрут к конечной точке 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 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

Выбор подключения к Интернету

Компьютер может быть подключён сразу к нескольким сетям: например, к проводной сети и к беспроводной; или к двум Wi-Fi сетям; или использовать телефон в качестве модема через Bluetooth и при этом быть подключённым к проводной и Wi-Fi сети; или быть подключённым к четырём Wi-Fi сетям – да что угодно!

Если вы выходите в Интернет, как операционная система выбирает, какое именно из нескольких подключений использовать? Система действует очень мудро – она не пренебрегает ни одним из подключений. И в случае потери связи с одним из них – использует другое.

Но ведь ей в любом случае нужно выбрать, какое подключение использовать в данный момент! И система опять поступает мудро – она использует лучшее подключение. Чтобы узнать, какое подключение является лучшим, для каждого из них вычисляется так называемая Метрика – условное значение, которое учитывает сразу несколько параметров – скорость сети, потери пакетов и другое.

Рассмотрим реальный пример. Мой компьютер подключён к двум Wi-Fi сетям. Чтобы узнать характеристики маршрутов, откроем командную строку Windows, для этого нажмите Win+x, и выберите Windows PowerShell (Администратор). В открывшемся окне командной строки наберите команду


Route как добавить маршрут

Особое внимание обратите на строки:

Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.49 55
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.43 70

Сетевой адрес 0.0.0.0 и маска сети 0.0.0.0 это обозначение маршрута по умолчанию (default route). Это тот маршрут, куда отправляется трафик, для которого явно не прописан другой маршрут.

Например, там же мы можем увидеть строку

192.168.56.0 255.255.255.0 On-link 192.168.56.1 281

В ней есть сетевой адрес 192.168.56.0 с маской подсети 255.255.255.0 – то есть это любые IP адреса в диапазоне 192.168.56.0-192.168.56.255. Так вот, для этих адресов явно прописан маршрут – они будут отправлены в 192.168.56.1.

Но если будет запрошен любой другой IP, который отсутствует в таблице (т.е. для которого не указан конкретный маршрут), то он будет отправлен по маршруту по умолчанию – это то, что указано для сети 0.0.0.0 с маской 0.0.0.0. Самым типичным трафиком, отправляемым по default route является Интернет-трафик (а также трафик в другие локальные сети, к которым ваш компьютер непосредственно не подключён – но для домашних сетей это редкая ситуация).

Для выбора Интернет-подключения по умолчанию нужно изменить маршрут по умолчанию.