Перейти к содержимому
Калькуляторы

RouterOS: DHCP клиент, опция 121 и маршрут по умолчанию

Добрый день!

Роутер - RB951Ui-2HnD

RouterOS - 5.26, 6.07, 6.14, 6.15

Наткнулся на странное поведение DHCP клиента

На eth1 WAN раздается адрес с DHCP сервера (не на микротике)

в опциях сервера есть 03 - gateway-list и 121 - static-classless-route

допустим

03 - 192.168.0.22

121 - 192.168.18.0/24 192.168.0.5, 192.168.20.0/24 192.168.0.5, 192.168.21.0/24 192.168.0.5

при наличии в ответе сервера 121 опции в маршруты на микротике не добавляется

дефолтный маршрут 0.0.0.0/0 192.168.0.22

121 маршруты добавляются нормально.

если на сервере отключить 121 опцию то дефолтный маршрут добавляется.

Пробовал с всеми перечисленными версиями RouterOS.

Сервер тут ни причем - пробовал с Win 2008 и с Linux/DNSMasq

в качестве DHCP сервера.

логи:

если 121 опция выключена:

 

echo: dhcp,debug,packet chaddr = D4:CA:6D:D7:E5:B2

echo: dhcp,debug,packet Msg-Type = ack

echo: dhcp,debug,packet Renewal-Time = 345600

echo: dhcp,debug,packet Unknown(59) = 00-09-3A-80

echo: dhcp,debug,packet Address-Time = 691200

echo: dhcp,debug,packet Server-Id = 192.168.0.1

echo: dhcp,debug,packet Subnet-Mask = 255.255.255.0

echo: dhcp,debug,packet Router = 192.168.0.22

echo: dhcp,debug,packet Domain-Server = 192.168.0.1

echo: dhcp,debug,packet NTP-Server = 192.168.0.1

echo: dhcp,info dhcp-client on ether1 got IP address 192.168.0.76

echo: dhcp,debug,state dhcp-client on ether1 entering <bound> state

 

echo: route,debug,event protocol=DYNAMIC

echo: route,debug,event distance=1

echo: route,debug,event scope=30

echo: route,debug,event target-scope=10

echo: route,debug,event next-hop= address=192.168.0.22

echo: route,debug,event vrf-iface (1)=ether1

echo: route,debug,event origin-type=DYNAMIC

echo: route,debug,calc End calculation

echo: route,debug Begin redistribution

echo: route,debug Accept withdraw 0.0.0.0/0

echo: route,debug Commit prefix 0.0.0.0/0

echo: route,debug End redistribution

echo: route,debug,calc scope=30

echo: route,debug,calc target-scope=10

echo: route,debug,calc next-hop= address=192.168.0.22

echo: route,debug,calc vrf-iface (1)=ether1

echo: route,debug,calc origin-type=DYNAMIC

echo: route,debug,calc End calculation

echo: route,debug Begin redistribution

echo: route,debug Accept add 192.168.0.0/24

echo: route,debug Accept add 0.0.0.0/0

echo: route,debug Commit prefix 0.0.0.0/0

echo: route,debug Commit prefix 192.168.0.0/24

echo: route,debug End redistribution

 

и если 121 опция включена

 

echo: dhcp,debug,packet Msg-Type = ack

echo: dhcp,debug,packet Renewal-Time = 345600

echo: dhcp,debug,packet Unknown(59) = 00-09-3A-80

echo: dhcp,debug,packet Address-Time = 691200

echo: dhcp,debug,packet Server-Id = 192.168.0.1

echo: dhcp,debug,packet Subnet-Mask = 255.255.255.0

echo: dhcp,debug,packet Classless-Route = 192.168.18.0/24->192.168.0.5,192.168.20.0/24->192.168.0.5,192.168.21.0/24->192.168.0.5

echo: dhcp,debug,packet Router = 192.168.0.22

echo: dhcp,debug,packet Domain-Server = 192.168.0.1

echo: dhcp,debug,packet NTP-Server = 192.168.0.1

echo: dhcp,info dhcp-client on ether1 got IP address 192.168.0.76

echo: dhcp,debug,state dhcp-client on ether1 entering <bound> state

 

echo: route,debug,event protocol=DYNAMIC

echo: route,debug,event distance=1

echo: route,debug,event scope=30

echo: route,debug,event target-scope=10

echo: route,debug,event next-hop= address=192.168.0.5

echo: route,debug,event vrf-iface (1)=ether1

echo: route,debug,event origin-type=DYNAMIC

echo: route,debug Begin redistribution

echo: route,debug Accept 192.168.20.0/24

echo: route,debug,calc End calculation

echo: route,debug Commit prefix 192.168.20.0/24

echo: route,debug End redistribution

echo: route,debug,calc origin-type=DYNAMIC

echo: route,debug,calc End calculation

echo: route,debug Begin redistribution

echo: route,debug Accept add 192.168.0.0/24

echo: route,debug Accept add 192.168.21.0/24

echo: route,debug Accept add 192.168.20.0/24

echo: route,debug Accept add 192.168.18.0/24

echo: route,debug Commit prefix 192.168.21.0/24

echo: route,debug Commit prefix 192.168.20.0/24

echo: route,debug Commit prefix 192.168.18.0/24

echo: route,debug Commit prefix 192.168.0.0/24

echo: route,debug End redistribution

 

видно что от сервера все опции получаются коррктно,

но дальше микротик почему то не добавляет дефолтный маршрут

Сталкивался ли кто нибудь с подобным поведением?

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сталкивались http://forum.nag.ru/forum/index.php?showtopic=86169

Как было сказано продаваном микротика, это вы сами виноваты, нефиг выдавать стат роуты.

Я закостылил в дхцп сервере ответы для микротиков, им опции 121/249 не отдаются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сталкивались http://forum.nag.ru/forum/index.php?showtopic=86169

Как было сказано продаваном микротика, это вы сами виноваты, нефиг выдавать стат роуты.

Я закостылил в дхцп сервере ответы для микротиков, им опции 121/249 не отдаются.

я догадывался что микротик говно, но чтоб такое...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не люблю Микротик, но тут как раз таки все правильно, Микротик действует согласно RFC, в котором сказано - если выдаете опцию 121, то выдавайте там сразу и 0.0.0.0/0, т.к. при наличии 121 поле router (какая там опция - забыл) должно игнорироваться, что Микротик и делает. Так же действуют и некоторые другие dhcp-клиенты (в Linux точно было). Винда же, кстати, ентот RFC нарушает и читает и то, и другое, из-за чего на ней это и работает.

Решение: добавить в 121 опцию дефолный маршрут.

 

Вот кстати человек в теме подробно расписал, почему это случается: http://forum.nag.ru/forum/index.php?showtopic=86169&view=findpost&p=854231

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не люблю Микротик, но тут как раз таки все правильно, Микротик действует согласно RFC, в котором сказано - если выдаете опцию 121, то выдавайте там сразу и 0.0.0.0/0, т.к. при наличии 121 поле router (какая там опция - забыл) должно игнорироваться, что Микротик и делает.

Посмотрите внимательнее.

У ТС опции 03 и 121, по вашей ссылке 33 и 121.

 

 

PS: поправил код своего перлогово дхцп: он все маршруты с маской /32 складывал в опцию 33, если клиент спрашивал 33 и 121/249.

Я ж как лучше хотел :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сталкивались http://forum.nag.ru/forum/index.php?showtopic=86169

Как было сказано продаваном микротика, это вы сами виноваты, нефиг выдавать стат роуты.

Я закостылил в дхцп сервере ответы для микротиков, им опции 121/249 не отдаются.

Спасибо. Значит с головой у меня все ОК.

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

выдавать им еще и 0.0.0.0/0 через 121 опцию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ооо ты смотри :) Я как раз столкнулся, думал, это я криво настраиваю :) Спасибо, за разъяснения :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 25.08.2017 в 16:47, Fafofu сказал:

Ооо ты смотри :) Я как раз столкнулся, думал, это я криво настраиваю :) Спасибо, за разъяснения :)

https://habrahabr.ru/post/239141/ - нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.