Может ли Linux быть сделано для соблюдения предпочтений объявления маршрутов IPv6?

Bottom Line Up Front: Я не могу заставить Linux-сервер, получающий RA, использовать значение RFC4191 «Default Router Preference» для предпочтения маршрутов с более высоким приоритетом . Вместо этого, тот маршрут по умолчанию, который он изучил первым, является тем, что он использует, во вред всем. Мне не хватает параметра конфигурации или обновления ядра, или я просто обречен на все времена ?

Длинная версия:

У меня есть сеть со шлюзом HA по умолчанию (VRRP / Keepalived). Интернет-провайдер восходящего потока направляет / 48 к шлюзу, и затем я вырезаю блоки / 64 для назначения машинам в моей инфраструктуре (чтобы они могли назначать глобально маршрутизируемые адреса контейнерам, которые они запускают). Затем каждая машина объявляет свой контейнер / 64 остальной части сети через radvd (с помощью AdvDefaultLifetime 0 , чтобы показать, что у нее нет маршрута по умолчанию). В шлюзах также работают контейнеры, поэтому они имеют свои собственные / 64 и объявляют об этом, но с AdvDefaultLifetime 30 , потому что шлюзы имеют маршрут по умолчанию.

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

За исключением ... Linux, похоже, ничего не делает со значением предпочтения маршрутизатора. Я пресмыкался в исходном коде ядра, и хотя он тщательно сохраняет значение во флагах маршрута, и rt6_score_route даже выглядит так, как будто что-то с предпочтениями, поведение я в производственной среде (Ubuntu 14.04 с ядром 3.13) используется тот маршрут по умолчанию, который был изучен первым, независимо от того, какой из них имеет более высокие предпочтения.

Помимо взлома keepalived для изменения файлов конфигурации radvd (один с AdvDefaultLifetime 30 , когда MASTER , а другой с AdvDefaultLifetime 0 , когда BACKUP ) и перезагрузка radvd всякий раз, когда keepalived повышает / понижает, что я могу сделать, чтобы обеспечить предпочтение маршрутов с более высоким приоритетом в RA?

2
задан 15 April 2016 в 04:36
1 ответ

В последних ядрах Linux есть функция, о которой вы просите. Если вы настраиваете ядро, установите CONFIG_IPV6_ROUTER_PREF , см. Поддержка сети -> Параметры сети -> Протокол IPv6 -> Поддержка предпочтений маршрутизатора (RFC 4191) . Возможно, вам придется перекомпилировать ядро, если в вашем дистрибутиве по умолчанию эта функция отключена.

0
ответ дан 3 December 2019 в 14:30

Теги

Похожие вопросы