Как прописать маршрут из одной сети в другую windows 10

Как прописать маршрут из одной сети в другую windows 10 Маршрут
Содержание
  1. Что делать, если локальные сети у провайдеров одинаковые
  2. Настройка через оснастку
  3. [править] Пересылка пакетов между интерфейсами
  4. Маршрутизация в Linux
  5. Создание двух маршрутов по умолчанию
  6. Схема сети (точка – точка)
  7. Изменяем Interface Templates
  8. Просмотр соседей OSPF
  9. Посмотрим таблицу маршрутизации
  10. Настройка маршрутизации в Linux
  11. Дополнение 2.
  12. Роутинг и policy-routing в Linux при помощи iproute2
  13. Ip rule
  14. Простой пример
  15. Доступность сервера через несколько аплинков
  16. Балансировка трафика между аплинками
  17. Использование маркировки пакетов при помощи iptables
  18. [править] Команды
  19. Действия с маршрутами
  20. Equal Cost Multi Path
  21. Просмотр маршрутов до определенной сети
  22. Как добавить или удалить статический маршрут?
  23. Маршрутизация по умолчанию
  24. Настройка маршрутов в Linux
  25. Настройка сетевых маршрутов в Linux (CentOS)
  26. [править] Конфигурационные файлы
  27. Примеры использования
  28. Нужно настроить статическую маршрутизацию MikroTik?
  29. Таблица маршрутизации
  30. Выбор таблицы маршрутизации (ip / firewall / mangle)
  31. Дополнение 1.
  32. Выбор таблицы маршрутизации (routes / rule)
  33. Как работает маршрутизация?
  34. [править] Команды
  35. Как посмотреть таблицу маршрутизации
  36. Просмотр таблицы маршрутизации в Linux
  37. Помещаем принятый трафик в нужную таблицу маршрутизации
  38. [править] Конфигурационные файлы
  39. Дополнение 3.
  40. Настройка сетевой маршрутизации Linux – команда route
  41. Когда нужно применять статическую маршрутизацию в MikroTik
  42. Как настроить “static routing” в MikroTik
  43. [править] Policy routing
  44. Сетевые маршруты в Linux
  45. Статическая маршрутизация
  46. Примеры статических маршрутов в MikroTik
  47. Ручное добавление статического маршрута для PPPOE подключения
  48. Настройка резервного интернет канала
  49. Балансировка нагрузки для двух интернет каналов
  50. Добавление статического маршрута для VPN соединения
  51. Динамическая маршрутизация, протокол RIP
  52. [править] Дополнительная информация

Что делать, если локальные сети у провайдеров одинаковые

В предыдущем примере у нас локальные сети провайдеров разные:

В этом случае применяем VRF:

Как прописать маршрут из одной сети в другую windows 10

В консоли это будет выглядеть так:

/ip route vrf
add interfaces=ether4 routing-mark=2

После проделанного, у вас должно получиться примерно следующее:

Как прописать маршрут из одной сети в другую windows 10

В настройках nat, я изменил адрес (to addresses) для выхода через ether4 – 10.10.10.5.

Ну и после добавления в VRF ether4 во вторую таблицу маршрутизации, у наc connected маршрут от ether4 ушел в свою таблицу маршрутизации.

Получилась следующая схема сети:

Как прописать маршрут из одной сети в другую windows 10

Настройка через оснастку

Как прописать маршрут из одной сети в другую windows 10

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

Как прописать маршрут из одной сети в другую windows 10

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

Как прописать маршрут из одной сети в другую windows 10

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

Как прописать маршрут из одной сети в другую windows 10

В появившемся окне необходимо задать следующие настройки:

Оставьте оставшиеся настройки по умолчанию и нажмите ОК.

Далее необходимо выполнить эти действия для второго сетевого интерфейса.

После выполните те же действия для Sever2.

Проверьте, с помощью команды ping, работу сети.

Как прописать маршрут из одной сети в другую windows 10

Поздравляю! Маршрутизация в Windows изучена.

[править] Пересылка пакетов между интерфейсами

Linux позволяет разрешить или запретить пересылку пакетов между интерфейсами (forwarding). На рабочих станциях и серверах приложений ее можно запретить, на маршрутизаторах или межсетевых экранах она, очевидно, должна быть разрешена.

За этот параметр для IPv4 отвечает переменная net.ipv4.ip_forward (1 = «разрешить», 0 = «запретить»).

Для IPv6 используйте net.ipv6.conf.all.forwarding

Чтобы настройки сохранились после перезагрузки, пропишите значения net.ipv4.ip_forward и net.ipv6.conf.all.forwarding в /etc/sysctl.conf.

Маршрутизация в Linux

Linux предоставляет большой набор функций для маршрутизации и инструменты для ее настройки. Ядро 2.6.x поддерживает:

Создание двух маршрутов по умолчанию

И так, на роутере Mikrotik, уже настроена адресация:

/ip address
add address=192.168.0.1/24 comment=lan interface=ether2 network=192.168.0.0
add address=10.10.10.5/24 comment=wan1 interface=ether3 network=10.10.10.0
add address=10.10.11.5/24 comment=wan2 interface=ether4 network=10.10.11.0

Как прописать маршрут из одной сети в другую windows 10

Теперь нам нужно прописать маршрут по умолчанию (dst. address = 0.0.0.0/0) на шлюз нашего провайдера. Но что делать, если у нас 2 провайдера. Если мы просто создадим два маршрута по умолчанию, то один из них станет не активным:

Как прописать маршрут из одной сети в другую windows 10

И действительно, в одной таблице маршрутизации не может быть двух маршрутов с одинаковыми направлениями (dts. address). Кстати, в 7 версии RouterOS, в этом случае второй маршрут окажется активным, так как автоматически включается ECMP, но этот протокол в этой статье я не рассматриваю. И все проделываю на 6 версии (6.48.6).

А чтобы создать два маршрута с одинаковым dst. address нужно на втором маршруте указать Routing Mark. Вот так создаются два маршрута по умолчанию, при этом второй будет в своей таблице маршрутизации:

/ip route
add comment=isp2 distance=1 gateway=10.10.11.1 routing-mark=2
add comment=isp1 distance=1 gateway=10.10.10.1

А вот так это выглядит в окне WinBox:

Как прописать маршрут из одной сети в другую windows 10

Два маршрута по умолчанию в разных таблицах маршрутизации

И чтобы клиенты выходили через роутер в интернет необходимо настроить nat:

/ip firewall nat
add action=src-nat chain=srcnat comment=wan1 out-interface=ether3 to-addresses=10.10.10.5
add action=src-nat chain=srcnat comment=wan2 out-interface=ether4 to-addresses=10.10.11.5

Получилась вот такая схема сети:

Как прописать маршрут из одной сети в другую windows 10

Схема сети с двумя 0.0.0.0/0 маршрутами

Схема сети (точка – точка)

Теперь немного изменим условия. Допустим эти 4 роутера не в одном широковещательном домене а соединены по типу точка-точка (ptp). Например патч-кордами, или L3_VPN. При этом, у меня, каждый роутер соединён с каждым другим роутером:

Как прописать маршрут из одной сети в другую windows 10

Изменяем Interface Templates

Заходим на каждый роутер, и отключаем шаблон, который был для broadcast (в моём случае это ether2). И затем создаём новые шаблоны для соединений по типу peer-to-peer (в моём случае это vpn). Получается вот так:

Как прописать маршрут из одной сети в другую windows 10

OSPF – Interface Templates для ptp

Это проделывается на всех роутерах.

Просмотр соседей OSPF

Затем перейдём на вкладку Neighbors, чтобы посмотреть соседей OSPF и их состояния:

Как прописать маршрут из одной сети в другую windows 10

OSPF – вкладка Neighbors

В этом случае (ptp), чтобы все работало, состояния должно быть Full и никакими другими. Так как здесь не идет голосования и нет DR и BDR роутеров.

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

После того, как мы убедились в полном соседстве наших роутеров, посмотрим на таблицу маршрутизации на первом роутере:

Как прописать маршрут из одной сети в другую windows 10

Теперь у нас есть доступ ко всем подсетям, через vpn соединения.

И так из первой подсети (192.168.1.0/24) в четвертую (192.168.4.0/24) и пятую подсеть (192.168.5.0/24) пакеты пойдут через l2tp-in4.

Как только упадет VPN между 1 и 4 роутером, маршруты перестроятся:

Как прописать маршрут из одной сети в другую windows 10

OSPF – таблица маршрутизации

Теперь в 4 и 5 подсеть с первого роутера пакеты пойдут через l2tp-in2 и l2tp-in3 используя ECMP. То есть половина соединений пойдет через R2, а половина через R3. И периодически такие соединения будут перестраиваться, что не совсем правильно.

Когда мы создавали Interface Templates мы не меняли параметр Cost. Поэтому у нас цена каждого соединения равна единицы. Вот как это выглядит, если потеряно соединение R1 с R4:

Как прописать маршрут из одной сети в другую windows 10

OSPF – Параметр Cost

То есть кратчайшем путём от первой подсети к пятой подсети будет через R1 – R2 – R4 или через R1- R3 – R4. И эти пути равны. А так как у нас два равноценных пути, то в работу вступает ECMP.

Чтобы это исправить, нужно на роутере R1 в Interface Templates увеличить стоимость (Cost) перехода к R3:

Как прописать маршрут из одной сети в другую windows 10

OSPF – Меняем параметр Cost

Теперь наша схема изменится:

Как прописать маршрут из одной сети в другую windows 10

Теперь кратчайшем путём от первой подсети к пятой подсети будет через R1 – R2 – R4, а путь R1- R3 – R4 будет дороже.

Чтобы в этом убедиться посмотрим таблицу маршрутизации:

Как прописать маршрут из одной сети в другую windows 10

Видим что действительно пакеты в 4 и 5 подсети пойдут через R2 (l2tp-in2).

Настройка маршрутизации в Linux

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 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 можно добавить или удалить один (за один раз) статический маршрут. Вот ее формат:

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

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

route add default gw 192.168.1.1 eth0

auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.17.8hwaddress ether 00:E0:4C:A2:C4:48netmask 255.255.255.0broadcast 192.168.17.255auto eth1iface eth1 inet staticaddress 192.168.254.2netmask 255.255.255.0gateway 192.168.254.1broadcast 192.168.254.255

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

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

На этом примере маршрутизируются 3 подсети

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

Ну вот и все по аналогии настраиваются любое кол-во маршрутов и сетевых интерфейсов

Дополнение 2.

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

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

Прежде чем понять суть происходящего, познакомимся с некоторыми отличительными чертами сетевого стека Linux.

Первый отличительный момент — это специальные типы маршрутов. Когда ip-пакет приходит с какого-нибудь интерфейса, надо определить, адресован ли он этому хосту, или другому. Определяется это довольно элегантно — просто для адреса назначения ищется нужный маршрут в таблицах маршрутизации. Если пакет попадает на маршрут типа «local», значит он адресован непосредственно хосту, если нет, то значит его надо маршрутизировать дальше (при этом дальнейший маршрут уже известен) или сделать что-то ещё, в зависимости от типа маршрутов.

Имена таблиц хранятся в файле /etc/iproute2/rt_tables. Под номер таблицы отдано 32 бита, но максимальное количество таблиц в данный момент жёстко ограничено числом 256. Как добавлять/удалять/редактировать маршруты можно почитать в мане к ip-route.

Таблица, в которой надо искать маршруты, определяется политиками маршрутизации. Эта технология называется Policy Based Routing — маршрутизация на основе политик. Суть её в том, что основываясь на каких-либо критериях сетевого пакета мы либо выбираем таблицу, в которой надо искать маршрут, либо определяем действие, которое надо выполнить над пакетом. Каждая политика имеет номер (он может быть даже не уникальным), он же определяем приоритет. Просмотр политик осуществляется в порядке возрастания их приоритетов. Новые политики добавляются перед существующими.

Запираем маршруты в таблицу

Теперь небольшой практический пример после скучного введения. Для начала, мы реализуем схему с vrf-lite вручную, а затем уже усложним пример динамической маршрутизацией.

Допустим, у нас есть вот такая схема:

Задача состоит в том, чтобы изолировать трафик различного «цвета» друг от друга. При этом адресные пространства цветов могут пересекаться, что делает задачу ещё более интересной. Неформально сформулируем цель: сделать так, чтобы пакеты каждого цвета не уходили за пределы своей таблицы маршрутизации и передавались только по интерфейсам своего цвета.

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

Сначала назначаем интерфейсам адреса. При этом подключенные маршруты будут попадать в таблицу main, а локальные и широковещательные — в таблицу local.

Добавляем для удобства имена таблиц маршрутизации.

Добавляем прямые маршруты в соответствующие таблицы. Нужны это для того, чтобы нам были доступны соседние маршрутизаторы.

Добавляем остальные маршруты.

Есть один нюанс: что будет, если пакет одного цвета не находит маршрута в своей таблице? Значит, будет продолжен поиск маршрута в других таблицах, что для нас не очень хорошо. Чтобы «запереть» пакет в пределах своего цвета, мы можем в каждую изолированную таблицу добавить маршрут по-умолчанию (либо юникастовый, либо запрещающий), либо после каждой политики поиска маршрута в пределах цвета добавить запрещающую политику. Сделаем для одного цвета первый вариант, а для другого — второй.

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

В итоге, наши таблицы маршрутизации и политики будут выглядеть примерно так:

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

На этом пока всё, но продолжение следует. В нём постараюсь рассказать про динамическую маршрутизацию применительно к vrf с помощью демона маршрутизации bird, и обмен маршрутами между таблицами (vrf leaking).

Роутинг и policy-routing в Linux при помощи iproute2

Для настройки роутинга служит команда ip route. Выполненная без параметров, она покажет список текущих правил маршрутизации (не все правила, об этом чуть позже):

Ip rule

Как же ядро выбирает, в какую таблицу отправлять пакеты? Все логично – для этого есть правила. В нашем случае:

Простой пример

Теперь рассмотрим простой пример. У нас есть некий шлюз, на него приходят пакеты с IP 192.168.1.20. Пакеты с этого IP нужно отправлять на шлюз 10.1.0.1. Чтобы это реализовать делаем следующее: Создаем таблицу с единственным правилом:

Создаем правило, отправляющее нужные пакеты в нужную таблицу:

Как видите, все просто.

Доступность сервера через несколько аплинков

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

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

Думаю теперь уже объяснять смысл этих строк не надо. Аналогичным образом можно сделать доступность сервера по более чем двум аплинкам.

Балансировка трафика между аплинками

Делается одной элегантной командой:

Использование маркировки пакетов при помощи iptables

Допустим нам нужно, чтобы пакеты на 80 порт уходили только через 11.22.33.1. Для этого делаем следующее:

Первой командой маркируем все пакеты, идущие на 80 порт. Второй командой создаем таблицу маршрутизации. Третьей командой заворачиваем все пакеты с указанной маркировкой в нужную таблицу. Опять же все просто. Рассмотрим также использование модуля iptables CONNMARK. Он позволяет отслеживать и маркировать все пакеты, относящиеся к определенному соединению. Например, можно маркировать пакеты по определенному признаку еще в цепочке INPUT, а затем автоматически маркировать пакеты, относящиеся к этим соединениям и в цепочке OUTPUT. Используется он так:

Пакеты, приходящие с eth0 маркируются 2, а с eth1 – 4 (строки 1 и 2). Правило на третьей строке проверяет принадлежность пакета к тому или иному соединению и восстанавливает маркировки (которые были заданы для входящих) для исходящих пакетов. Надеюсь изложенный материал поможет вам оценить всю гибкость роутинга в Linux. Спасибо за внимание 🙂

[править] Команды

Для управления маршрутизацией применяются следующие команды: route, netstat, ip (последняя из пакета iproute2, возможно его придется установить).

Просмотреть таблицу можно следующими способами:

route -n (устаревшее)
netstat -rn
ip route show
cat /proc/net/route

При этом следует учитывать, что доступ ко всем возможностям дает только ip. Используя route вы не только не сможете настроить «продвинутые» функции вроде политик маршрутизации, но и не увидите их существование в выводе команды просмотра, если они уже настроены в системе. Поэтому следует по возможности использовать ip.

Модификация таблицы маршрутизации:

Синтаксис ip по структуре напоминает синтаксис Cisco IOS. Любые опции могут быть сокращены до потери двусмысленности, например «ip ro ad» вместо «ip route add».

Добавление маршрута через шлюз: ip route add 172.16.10.0/24 via 192.168.1.1
Добавление маршрута через интерфейс: ip route add 172.16.10.0/24 dev eth0
Маршрут с метрикой: ip route add 172.16.10.0/24 dev eth0 metric 100

Действия с маршрутами

Кроме add также поддерживаются и другие действия:

Equal Cost Multi Path

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

ip route add default dev eth0
ip route add default dev eth1

Настройка маршрутизации IPv6 почти идентична настройке для IPv4.

ip route add ::/0 via 2001:db8:dead:beef::1/64

В некоторых дистрибутивах еще есть нерешенная проблема с маршрутом по умолчанию (например, старые версии RHEL), используйте

в этом случае.

Просмотр маршрутов до определенной сети

На маршрутизаторах с длинной таблицей может быть неудобно просматривать вывод «ip route show» в поисках нужного маршрута. В этом случае можно использовать команду вида:

ip route show 10.0.0.0/8

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

Как добавить или удалить статический маршрут?

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

Как прописать маршрут из одной сети в другую windows 10

Также можно добавить отдельный маршрут для одного 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

Как прописать маршрут из одной сети в другую windows 10

Как видите, маршрут удален из таблицы маршрутизации.

Чтобы добавить постоянный маршрут, нужно создать файл для этого маршрута, либо добавить правило в файл rc.local (выполняется при загрузке сервера).

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

В моем случае, интерфейс enp0s3.

Как прописать маршрут из одной сети в другую windows 10

Далее открываем следующий файл:

И добавляем туда строку с маршрутом:

После добавления маршрута в файл нужно перезапустить сервис network:

# service network restart

Как прописать маршрут из одной сети в другую windows 10

После перещаауска сетевого сервиса, в таблице маршрутизации появился статический маршрут.

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

И укажите команду добавления маршрута:

Как прописать маршрут из одной сети в другую windows 10

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

Маршрутизация по умолчанию

Второй способ настройки маршрутизации в 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.

Настройка маршрутов в 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=10.10.0.1 NETMASK=255.0.0.0 IPADDR=10.10.0.22

Как прописать маршрут из одной сети в другую windows 10

Настройка сетевых маршрутов в Linux (CentOS)

В этой статье мы рассмотрим особенности настройки маршрутизации и управления маршрутами в Linux (просмотр таблицы маршрутизации, добавление/удаление статических маршрутов и т.д.) на примере CentOS с помощью утилиты ip. Статья применима и для любого другого дистрибутива Linux с утилитой ip (Red Hat, Fedora и т.д.).

[править] Конфигурационные файлы

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

(добавьте свои дистрибутивы, пожалуйста)

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

Определить маршрут к сети, которая должна быть достигнута через сетевой интерфейс eth0:

Здесь для команды route не указывается сам интерфейс, поскольку предполагается, что узлу nodeone соответствует адрес 192.168.1.2. Далее, route «узнаёт», что маршрут нужно проложить именно через eth0 благодаря тому, что системное ядро анализирует все доступные интерфейсы на предмет их конфигурации и сравнивает адрес пункта назначения с сетевой частью сетевых (сконфигурированных) интерфейсов. В данном случае ядро обнаруживает, что eth0 – тот интерфейс (с адресом 192.168.1.2), которому соответствует конечный адрес, т. е. 192.168.1.0.

Задание шлюза по-умолчанию:

Доступ в локальную сеть Ethernet через сетевой интерфейс eth0:

Здесь 192.168.10.0 – сеть, к которой нужно установить доступ (маршрут).

Также можно использовать сокращённую запись для задания маски подсети:

Следует отметить, что шлюзы, установленные командой route будут существовать до перезагрузки системы. Для их использования на постоянной основе необходимо нужные команды прописать в файле. В Ubuntu это /etc/network/interfaces.

Например для настройки маршрутизации сети 192.168.10.0/24 через шлюз 192.168.10.1 интерфейс eth0, это команда

файл /etc/network/interfaces будет выглядеть следующим образом

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Нужно настроить статическую маршрутизацию MikroTik?

Мы поможем настроить: маршрутизатор(роутер), точку доступа или коммутатор.

Таблица маршрутизации

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

Как прописать маршрут из одной сети в другую windows 10

Таблица маршрутизации содержит для каждой записи следующие поля: Сетевой адрес (Network Destination), Маска сети (Netmask), Адрес шлюза (Gateway), Интерфейс (Interface) и Метрика (Metric). Разберем каждое поле подробнее.

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

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

На начальном этапе работы (т.е. с таблицами маршрутизации по умолчанию) маршрутизатор (хост) знает только, как достичь сетей, с которыми он соединен непосредственно. Пути в другие сети могут быть «выяснены» следующими способами:

Рассмотрим каждый из способов по порядку.

Выбор таблицы маршрутизации (ip / firewall / mangle)

Но с помощью ip / firewall / mangle мы можем пометить трафик, основываясь на других параметрах. Это может быть исходящий порт, протокол, адрес лист и многое другое.

Если исходящий трафик мы помечали в цепочке output, то проходящий трафик нужно помечать в цепочке prerouting. Сделаем так, чтобы компьютер с адресом 192.168.0.9 ходил через второго провайдера:

/ip firewall mangle
add action=mark-routing chain=prerouting comment=»to isp2″ new-routing-mark=2 passthrough=no src-address=192.168.0.9

Но это ещё не все. У меня второй провайдер (ether4) во второй таблице маршрутизации, для этого я использовал VRF. И нужно возвращённый трафик из интернета в локальную сеть возвращать в таблицу main. Для этого создаем в ip / routes / rule следующее правило:

/ip route rule
add dst-address=192.168.0.0/24 table=main

В окне WinBox это выглядит так:

Как прописать маршрут из одной сети в другую windows 10

Трафик для локальной сети возвращаем в таблицу main

Дополнение 1.

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

sudo /etc/init.d/networking restart

Выбор таблицы маршрутизации (routes / rule)

В предыдущем пункте мы создали два маршрута по умолчанию (0.0.0.0/0) в разных таблицах маршрутизации. Трафик, по умолчанию, всегда выберет маршрут в таблице main (это главная таблица маршрутизации на роутере). Но, мы можем поместить трафик во вторую таблицу маршрутизации используя инструмент ip / routes / rule.

Например, создадим правило, которое помещает пакеты во вторую таблицу маршрутизации, если адрес источника равен 192.168.0.6:

/ip route rule
add src-address=192.168.0.6/32 table=2

Как прописать маршрут из одной сети в другую windows 10

Создание правила в ip / routes / rule

Как работает маршрутизация?

Первая — когда, например, пакет адресуется компьютеру, находящемуся в той же сети, что и источник пакета, а точнее сказать — его отправитель. В данной ситуации для такого пакета следующим шлюзом является один из локальных интерфейсов и он (пакет) отправляется сразу к адресату. Такие «явные» и «короткие» шлюзы обычно задаются во время конфигурирования сетевых интерфейсов — командой ifconfig.

Вторая — когда адрес назначения пакта не соответствует ни одному шлюзу в таблице маршрутизации. В таком случае, во избежание коллизий в сети и её чрезмерной нагрузки должен быть задействован шлюз по-умолчанию. Другими словами, это такой маршрут, который указывает системному ядру: все остальные пакеты (без соответствий в таблице маршрутов) направляй сюда. Если шлюз по-умолчанию не будет предусмотрен, то отправляющей стороне посылается сообщение о недостижимости сети или узла.

Как правило, локальные сети имеют единственный шлюз во внешнюю среду, например в Интернет. В свою очередь, в сети Интернет таких «стандартных маршрутов» не существует.

[править] Команды

Для хоста 192.168.1.1 используется особенная таблица маршрутизации (table 3), не такая как для всех остальных хостов. В ней указан единственный маршрут — маршрут по умолчанию.

Все будут ходить через шлюз 10.0.1.2, а 192.168.1.1 — через 10.0.3.4.

Как посмотреть таблицу маршрутизации

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

Как прописать маршрут из одной сети в другую windows 10

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

Как прописать маршрут из одной сети в другую windows 10

Как прописать маршрут из одной сети в другую windows 10

Вывод похож на результат предыдущей команды, но выглядит не совсем привычно, это потому, что вывод команды можно использовать в качестве аргумента для ip route add или ip route del. Это очень удобно. Как вы видите, в качестве шлюза по умолчанию везде используется 192.168.1.1. Рассмотрим подробнее что означает вывод этой команды:

А теперь рассмотрим выполняется настройка маршрутов Linux.

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

Чтобы вывести текущую таблицу маршрутизации в Linux выполните команду:

Как прописать маршрут из одной сети в другую windows 10

Чтобы узнать через какой интерфейс (шлюз) должен маршрутизироваться трафик к определенному IP адресу используется команда:

# ip route get 192.168.2.45

Помещаем принятый трафик в нужную таблицу маршрутизации

Иногда нужно пометить приходящий трафик (из интернета) и поместить его в свою таблицу маршрутизации. PBR на MikroTik позволяет это сделать двумя правилами в ip / firewall / mangle:

/ip firewall mangle
add action=mark-connection chain=prerouting in-interface=ether4 new-connection-mark=from-2 passthrough=yes
add action=mark-routing chain=prerouting connection-mark=from-2 new-routing-mark=2 passthrough=no

То есть, я маркирую соединения пришедшие на ether4 (ISP2) меткой from-2. А уже все соединения с меткой from-2, помещаю в таблицу маршрутизации 2 (new-routing-mark=2).

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

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

Каждому из маршрутизаторов нужно знать на какой компьютер передавать пакет дальше. Именно это мы и обсудим в этой статье. Сегодня нас будет интересовать маршрутизация в Linux, как это работает, как настроить правила и заставить все работать как нужно.

[править] Конфигурационные файлы

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

Дополнение 3.

Для этого есть команда iptables:

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

Для определения и задания маршрутов в сетях существуют динамическая и статическая маршрутизации. В первом случае маршруты задаются специальным демоном маршрутизации, который модифицирует соответствующим образом таблицу маршрутизации ядра. Во втором случае маршруты задаются администратором/пользователем при помощи команды route. Маршруты, заданные командой route не изменяются, даже если включена динамическая маршрутизация.

Когда нужно применять статическую маршрутизацию в MikroTik

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

Как настроить “static routing” в MikroTik

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

Как прописать маршрут из одной сети в другую windows 10

Dst. Address – конечный адресат, популярные значения

Gateway – шлюз, которому будет отправлен пакет.

Check Gateway – проверка доступности шлюза:

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

Type – маршруты, которые не указывают nexthop для пакетов, но вместо этого выполняют некоторые другие действия с пакетами, имеют тип, отличный от обычного unicast(одноадресного). Маршрут blackhole(черная дыра) молча отбрасывает пакеты, в то время как маршруты, unreachable(недоступные) и prohibit(запрещающие), отправляют сообщение ICMP Destination Unreachable (код 1 и 13 соответственно) на адрес источника пакета.

Distance – определение приоритета заданного маршрута. Чем ниже число, те выше приоритет.

ScopeTarget Scope – параметры рекурсивной маршрутизации, состоящей из этапов:

Routing Mark – направлять пакеты из заданной таблицы маршрутизации. Как правило этот параметр или пустой или заполняется промаркерованнымb маршрутами из раздела Mangle.

Pref. Source – задается IP адрес, от которого будет отправлен пакет. Этот параметр актуален, когда на интерфейсе несколько IP адресов.

[править] Policy routing

ip route add default via 10.0.1.2
ip rule add from 192.168.1.1 lookup 3
ip route add default via 10.0.3.4 table 3

Для хоста 192.168.1.1 используется особенная таблица маршрутизации (table 3),
не такая как для всех остальных хостов. В ней указан единственный маршрут — маршрут по умолчанию.

Сетевые маршруты в Linux

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

Когда компьютеру нужно отправить пакет в сеть он смотрит таблицу маршрутизации, в ней указанны ip адреса пунктов назначения и адреса интерфейсов и роутеров в домашней сети, которые могут отправить пакет по нужному адресу. Если для цели маршрут не указан то используется так называемый шлюз по умолчанию или маршрут по умолчанию. Точно такая же картина наблюдается на роутере. Устройство смотрит на IP адрес назначения и сверяет его со своей таблицей маршрутизации, а потом отправляет дальше.

Ниже мы рассмотрим как проверить текущие маршруты в системе, а также как настроить новые.

Статическая маршрутизация

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

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

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

Но вернемся к нашему примеру. Наша задача, имя исходные данные, установить соединения между хостом XP и Server2 который находится в сети Net3, то есть нужно что бы проходил пинг на 192.168.2.1.

Начнем выполнять на хосте XP команды ping постепенно удаляясь от самого хоста. Выполните в Командной строке команды ping для адресов 192.168.0.2, 192.168.0.1, 192.168.1.1.

Мы видим, что команды ping по адресу собственного интерфейса хоста XP и по адресу ближайшего интерфейса соседнего маршрутизатора Server1 выполняются успешно.

Как прописать маршрут из одной сети в другую windows 10

Как прописать маршрут из одной сети в другую windows 10

Однако при попытке получить ответ от второго интерфейса маршрутизатора Server1 выводится сообщение «Заданный узел недоступен» или «Превышен интервал ожидания для запроса».

Как прописать маршрут из одной сети в другую windows 10

Это связано с тем, что в таблице маршрутизации по умолчанию хоста 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 с необходимыми параметрами:

Параметры команды имеют следующие значения:

Индекс интерфейса можно определить из секции Список интерфейсов (Interface List) выходных данных команды route print.

Выполним команду route print.

Как прописать маршрут из одной сети в другую windows 10

Теперь мы видим , что хост 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.

Как прописать маршрут из одной сети в другую windows 10

Индекс физического интерфейса может быть разным, обязательно обращайте на него внимание.

Вместо ответа вы получите сообщение «Заданный узел недоступен». С этой проблемой мы сталкивались еще в самом начале лабораторной работы, машина 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

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

Примеры статических маршрутов в MikroTik

Применяется для использования разных линий интернета для разных узлов. К примеру в сети расположено два сервера, использующие внешние порты 80 и 443.

Для работы правила нужно промаркировать трафик(раздел Mangle) и указать его в параметре Routing Mark.

Как прописать маршрут из одной сети в другую windows 10

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

Применяется, когда нужно изменить некоторые параметры в автоматическом добавлении маршрута(Add default route)

Как прописать маршрут из одной сети в другую windows 10

Настройка резервного интернет канала

В качестве параметра переключателя между провайдера используется параметр Distance. Трафик в этом случае направляется в тот маршрут, значение Distance которого МЕНЬШЕ,

Как прописать маршрут из одной сети в другую windows 10

Балансировка нагрузки для двух интернет каналов

Осуществляется через почередное указание шлюзов провайдера. Параметром Gateway можно задавать не только последовательность, но и управлять количественной частью. К примеру, если вам нужно чтобы к провайдеру со шлюзом 11.11.11.11 уходило в 2 раза больше трафика(или там канал в 2 раза быстрее) достаточно этот шлюз указать два раза.

Как прописать маршрут из одной сети в другую windows 10

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

В качестве шлюза указывается IP адрес VPN клиента. Использование таких маршрутов в MikroTik популярно, когда в качестве L2TP или PPTP VPN клиента выступает роутер, со своей подсетью.

Как прописать маршрут из одной сети в другую windows 10

Динамическая маршрутизация, протокол RIP

Протокол RIP (Routing Information Protocol или Протокол передачи маршрутной информации) является одним из самых распространенных протоколов динамической маршрутизации.

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

Есть две версии протокола RIP. Версия 1 не поддерживает маски, поэтому между сетями распространяется только информация о сетях и расстояниях до них. При этом для корректной работы RIP на всех интерфейсах всех маршрутизаторов составной сети должна быть задана одна и та же маска.

Протокол RIP полностью поддерживается только серверной операционной системой, тогда как клиентская операционная система (например, Windows XP) поддерживает только прием маршрутной информации от других маршрутизаторов сети, а сама передавать маршрутную информацию не может.

Настраивать RIP можно двумя способами:

Рассмотрим настройку в режиме командной строки с помощью утилиты netsh.

Netsh – это утилита командной строки и средство выполнения сценариев для сетевых компонентов операционных систем семейства Windows (начиная с Windows 2000).

Введите последовательно команды:

Вы увидите, что среди доступных команд этого контекста есть команда add interface, позволяющая настроить RIP на заданном интерфейсе. Простейший вариант этой команды – add interface «Имя интерфейса».

Настроим RIP на Server1. Но сначала нужно выключит брандмауэр.

Теперь в оснастке «Маршрутизация и удаленный доступ» в контекстном меню пункта SERVER1 (локально) выберите пункт «Настроить и включить Маршрутизация ЛВС

Как прописать маршрут из одной сети в другую windows 10

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

Как прописать маршрут из одной сети в другую windows 10

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

Как прописать маршрут из одной сети в другую windows 10

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

Как прописать маршрут из одной сети в другую windows 10

То же самое нужно выполнить на Server2.

[править] Дополнительная информация

Исходящим трафиком от самого MikroTik может быть:

Чтобы выпустить такой трафик через второго провайдера, нужно поместить его во вторую таблицу маршрутизации. Это делается с помощью правила IP / Firewall / Mangle:

/ip firewall mangle
add action=mark-routing chain=output dst-address=0.0.0.0/0 new-routing-mark=2 passthrough=no

В цепочке output содержится только исходящий с самого роутера трафик. Вот этот трафик и будет помещён во вторую таблицу маршрутизации.

Оцените статью
Мой маршрут