В моей сети установлено два устройства типа «маршрутизатор».
Один из них - мой настоящий IPv6-маршрутизатор - Cisco 2621 (fe80::xxxx:3e60
). Это правильный маршрутизатор по умолчанию.
Другой - DLINK DIR-615 (fe80::xxxx:5760
). Он поддерживает IPv6, но на данный момент настроен только для локальной адресации, поскольку используется только как WAP.
Оба устройства отправляют сообщения ICMPv6 RA, и в результате оба добавляются в таблицу маршрутизации моих клиентов:
$ ip -f inet6 route | grep default
default via fe80::xxxx:3e60 dev wlan0 proto kernel metric 1024 expires 1741sec mtu 1500 advmss 1440 hoplimit 64
default via fe80::xxxx:5760 dev wlan0 proto kernel metric 1024 expires 1791sec mtu 1500 advmss 1440 hoplimit 64
Проблема возникает из-за того, что у моих клиентов теперь есть выбор маршрутизаторов по умолчанию. Один весело рассылает пакеты, другой - нет. Я могу удалить неверный маршрут, но он просто будет добавлен заново, когда придет следующий RA.
fe80::xxxx:3e60
(правильный маршрутизатор) рассылает RA, объявляя префикс 2001: xxxx: xxxx :: / 64 (моя сеть)
fe80::xxxx:5760
(неправильный маршрутизатор) рассылает RA, объявляя префикс fe80 :: / 64 (link-local)
Итак ... кто здесь виноват?
fe80::xxxx:5760
для отправки RA, когда он не может предоставить действительный префикс?fe80::xxxx:5760
для отправки RA с префиксом локальной ссылки?fe80::xxxx:5760
в таблицу маршрутизации, когда он объявляет префикс локальной ссылки?radvd (демон рекламы маршрутизатора) должен быть отключен на DLink, по крайней мере, на интерфейсах, обращенных к маршрутизатору Cisco.
В качестве альтернативы вы можете настроить статический маршрут по умолчанию к маршрутизатору Cisco на DLink. Это сделает маршрут на один переход длиннее, но все еще действителен при условии, что DLink направит обратно интерфейс к маршрутизатору Cisco.
Если порт WAN - это тот, который подключен к маршрутизатору Cisco, маршрутизатор DLink не должен объявлять маршрутизацию на этом канале.
EDIT: вы можете повлиять на маршрутизацию, установив AdvRoutePreference high;
и / или AdvDefaultPreference high;
в конфигурации radvd маршрутизатора Cisco.
EDIT2: проблема заключается в том, что маршрутизатор DLink не имеет глобального IP-адреса или маршрута. Маршрут по умолчанию для маршрутизаторов обычно не обнаруживается, поэтому может потребоваться установить его вручную.
Шаг для установки предпочтений маршрутизатора ipv6 из Документация CISCO являются:
Согласно RFC2461 §4.6.2:
Маршрутизатору НЕ СЛЕДУЕТ отправлять опцию префикса для префикса локальной связи, а хосту СЛЕДУЕТ игнорировать такую опцию префикса.
§6.2.1:
Локальный префикс ссылки НЕ ДОЛЖЕН включаться в список объявленных префиксов.
Таким образом, можно подумать, что если у маршрутизатора нет действительных префиксов для предложения, он вообще не должен отправлять RA. Точно так же, если хост видит RA без действительных префиксов, он, вероятно, должен его игнорировать.
Маршрутизатор D-Link неисправен.
По крайней мере, на аппаратной версии C2 DIR-615 (на маршрутизаторе есть наклейка, на которой указано, какая у вас версия оборудования), обновление брандмауэра 3.03WW, похоже, не позволяет ему отправлять RA. В любом случае это верно, по крайней мере, в режиме локальной связи (другие варианты я не тестировал).
Я бы сказал, что к ошибкам относятся странность объявления префикса от fe80 ::, маршрутизатор, объявляющий маршрут по умолчанию, когда у него нет подключения к Интернету, и тот факт, что прошивка и документация совсем не упрощают его выяснить, как отключить маршрут по умолчанию.
Но есть хороший обходной путь, по крайней мере, для моего DIR-615 ревизии E3 с прошивкой 5.1:
Перейдите на страницу конфигурации Advanced / IPv6.
Выберите «Автоконфигурация без сохранения состояния».
Установите префикс LAN IPv6, который вы используете.
Выберите «Включить автоконфигурацию», выберите «Без сохранения состояния» в качестве типа автоконфигурации и (это важная часть) установите «Время жизни объявления маршрутизатора» равным 0.
Установка времени жизни маршрутизатора на 0 в RA означает, что «это не маршрут по умолчанию».
Я не нашел способа отключить рекламу маршрутизатора на этом маршрутизаторе, но установка его на префикс, который я уже использую, и установка времени жизни маршрутизатора на 0 для меня более чем достаточно. На самом деле вам даже не нужно устанавливать такой же префикс, но если вы этого не сделаете, ваши интерфейсы и таблицы маршрутизации будут загромождены дополнительными адресами и маршрутами, которые не будут использоваться ни для чего.