Jump to content
Калькуляторы

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

 

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

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

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

Спасибо.

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

Не люблю Микротик, но тут как раз таки все правильно, Микротик действует согласно 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

Share this post


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

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

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

 

 

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В 25.08.2017 в 16:47, Fafofu сказал:

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this