default gw + dhcp

Прошу прощения за ап старой темы, но не мог пройти мимо. Даже зарегистрировался для этого.
Проблема неполучения default route в dhcpcd у меня наблюдалась очень давно. Сейчас дошли руки погуглить. В рунете полезных сведений мало. Подавляющее большинство ответов в духе “во всём виноват провайдер”. Хотя те же Винды или даже dhclient в линуксе отлично работают с теми же провайдерскими настройками.
А между тем проблема известная: https://bugzilla.novell.com/show_bug.cgi?id=733080 и состоит в том, что dhcpcd игнорирует option router, если есть classless routes. И делает он это не просто так, а согласно RFC3442, в котором написано:
Many clients may not implement the Classless Static Routes option.
DHCP server administrators should therefore configure their DHCP
servers to send both a Router option and a Classless Static Routes
option, and should specify the default router(s) both in the Router
option and in the Classless Static Routes option.
А в http://linux.die.net/man/5/dhcp-options написано
If the DHCP server returns both a Classless Static Routes option and a Router option, the DHCP client ignores the Router option.
Таким образом, dhcpcd не работает так, как ожидает пользователь, в точном соответствии с RFC. Вина провайдера состоит в том, что админы не читают RFC на ночь вместо художественной литературы. Хотя авторам dhcp-серверов и клиентов или мейнтейнерам пакетов стоило бы оставить комментарий о таком поведении в дефолтном конфиге isc-dhcp или dnsmasq'а.
Ineu
Таким образом, dhcpcd не работает так, как ожидает пользователь, в точном соответствии с RFC. Вина провайдера состоит в том, что админы не читают RFC на ночь вместо художественной литературы.
В данном случае я сам себе провайдер.
И как-же правильно в соответствии с RFC выдавать default gw каждому свой?
Интересные сведения, спасибо вам большое, Ineu :)

Если согласно RFC возможна или раздача роутов, или опции Router, то тогда либо
1) вы отказываетесь от раздачи дополнительных роутов, либо
2) раздаёте дефолтный роут точно так же, как остальные роуты. Смутно припоминается, что дефолтный роут часто обозначают как 0.0.0.0
Natrio
2) раздаёте дефолтный роут точно так же, как остальные роуты. Смутно припоминается, что дефолтный роут часто обозначают как 0.0.0.0
пробовал, то-же были где-то несросты
ладно, будем считать, что rfc недаёт гибкости для практического, а не теоретического использования и поэтому(как это везде и всюду) большинство программ забивают на rfc их и будем использовать )
И как-же правильно в соответствии с RFC выдавать default gw каждому свой?
Например, так: (для dnsmasq)
dhcp-option=tag:my_tag,option:router,192.168.0.1
dhcp-option=tag:my_tag,121,какие-то_маршруты,0.0.0.0/0,192.168.0.1
dhcp-option=tag:my_tag,249,какие-то_маршруты,0.0.0.0/0,192.168.0.1
Для запроса с тегом my_tag отдаём опцию router + бесклассовые роуты. Одинаковые в двух опциях, поскольку разные Винды хотят разных опций.
Для dchpcd это работает, но как выяснилось, ломает некоторые low-end роутеры, например, dir-320 при использовании russian pppoe. Похоже, бесклассовый дефолт имеет приоритет даже над pppoe'шным.
Особо экспериментировать не могу, поскольку мои админские дни в прошлом, а на своих машинах поднимать dhcp-сервер неохота.
в том то и дело, что универсального способа нет
если использовать общий “option routers 192.168.0.1” то в дальнейшем виндовые pptp создают дополнительный default с меньшей метрикой и в итоге работает как задумано, но с *nix-овыми системами возникают проблемы по перезаписи default gw
в итоге половину нужно в лучшем случае настраивать в ручную, в худшем писать костыли
Метрика роутов задаётся не сервером, а клиентом. Как правило, она настраивается.
 
Зарегистрироваться или войдите чтобы оставить сообщение.