Всем привет!!!
Однажды мне понадобилось иметь на всех устройствах в сети дополнительный маршрут и реализовать такое помог мой Mikrotik, который по DHCP раздал такой маршрут всем клиентам в сети.

Я знаю, что это костыль. Но есть задача и она решена силами Mikrotik
Ниже изображена моя схема сети. У вас она естественно может и будет отличаться. На схеме видно как в моей сети есть два маршрутизатора, соединенных коммутаторами. К разным маршрутизаторам подключаются разные устройства. Основная сеть 192.168.68.0/24. В этой сети живут все мои устройства: ПК, телевизоры, основной Synology NAS и так далее.
Вторая сеть 10.17.68.0/24 находится за вторым роутером и в ней живут парочка ПК и один сервер. Вообще это моя тестовая сеть. На втором роутере включен NAT. Соответственно что бы попасть из основной сети во вторую мне нужно на втором роутере пробросить нужный порт. Когда устройств во второй сети мало это не проблема, но когда их становится много или порты повторяются с этим нужно что-то делать.

Поэтому я решил отключить NAT на втором роутере, а на первом прописать маршрут в сеть 10.17.68.0/24 через роутер 192.168.68.100. Сначала это сработало, но оказалась есть проблема.
Дело в том, что когда моему ПК с адресом из сети 192.168.68.0/24 нужно отправить большое количество данных на сервер 10.17.68.101, то трафик летит на первый роутер, а потом возвращается на второй роутер и попадает на нужный сервер. В общем канал между первым роутером и коммутатором забивается симметрично и тем самым мешает работать другим устройствам.
Идея простая, раздать нужный маршрут по DHCP каждому клиенту, что бы не прописывать его вручную. Mikrotik как раз такое умеет.
В MikroTik RouterOS можно настроить DHCP-сервер для раздачи клиентам статических маршрутов через опцию Option 121 (Classless Static Route). Эта опция позволяет передавать клиентам информацию о маршрутах, которые они должны добавить в свою таблицу маршрутов.
Опция 249 — это альтернативная опция DHCP, которая также используется для передачи статических маршрутов клиентам. Она часто применяется в устройствах, которые не поддерживают стандартную опцию 121 (например, некоторые версии Windows, Android и другие устройства).
Что бы не гадать с опциями и не выяснять какие устройства какую опцию поддерживают, я буду делать сразу две опции.
Mikrotik принимает значения только в RAW формате, поэтому сначала разберемся как это делать.
- Маршрут:
- Сеть:
10.17.68.0/24
. - Шлюз:
192.168.68.100
.
- Сеть:
- Преобразуем в RAW-формат:
- Длина префикса:
/24
→24
(в десятичной системе) →0x18
(в шестнадцатеричной). - Сеть
10.17.68.0
:10
→0x0A
17
→0x11
68
→0x44
- Итого:
0A 11 44
.
- Шлюз
192.168.68.100
:192
→0xC0
168
→0xA8
68
→0x44
100
→0x64
- Итого:
C0 A8 44 64
.
- Длина префикса:
- Собираем всё вместе:
- Формат опции 121:
<длина_префикса>:<сеть>:<шлюз>
. - В RAW-формате:
0x18:0A:11:44:C0:A8:44:64
.
- Формат опции 121:
Если это посчитать вам сложно, то можно попросить ИИ сделать это за вас, но учтите, что если маска /24, то незначимый октет опускаем. Т.е. для /24 незначимый октет последний, из 10.17.68.0 пишем только 10.17.68. ИИ часто не знает этого момента.
According to RFC 3442: The first part is the netmask (“18” = netmask /24). Second part is significant part of destination network (“A00000” = 160.0.0). Third part is IP address of gateway (“0A016501” = 10.1.101.1). Then There are parts of the default route, destination netmask (0x00 = 0.0.0.0/0) followed by default route (0x0A016501 = 10.1.101.1)
Так же можно воспользоваться готовым скриптом на Python с github по ссылке.
Открываем DHCP сервер и на вкладке опции создаем две опции 121 и 249 как показано на картинке ниже:

Затем переходим на вкладку Option Sets и создаем соответствующий сет для опции

Ну и на заключительном этапе добавляем этот сет в наш DHCP сервер

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

Вот так, не сильно сложно, можно в Mikrotik раздать по DHCP статический маршрут.
Не забывайте потом отключить NAT и разрешить маршрутизацию между сетями, если такое было у вас ранее настроено или запрещено.
Материалы по теме: