Назад | Перейти на главную страницу

IPv6, несколько маршрутизаторов и возможное объявление неверного префикса в ICMPv6 RA

В моей сети установлено два устройства типа «маршрутизатор».

Один из них - мой настоящий 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)

Итак ... кто здесь виноват?

radvd (демон рекламы маршрутизатора) должен быть отключен на DLink, по крайней мере, на интерфейсах, обращенных к маршрутизатору Cisco.

В качестве альтернативы вы можете настроить статический маршрут по умолчанию к маршрутизатору Cisco на DLink. Это сделает маршрут на один переход длиннее, но все еще действителен при условии, что DLink направит обратно интерфейс к маршрутизатору Cisco.

Если порт WAN - это тот, который подключен к маршрутизатору Cisco, маршрутизатор DLink не должен объявлять маршрутизацию на этом канале.

EDIT: вы можете повлиять на маршрутизацию, установив AdvRoutePreference high; и / или AdvDefaultPreference high; в конфигурации radvd маршрутизатора Cisco.

EDIT2: проблема заключается в том, что маршрутизатор DLink не имеет глобального IP-адреса или маршрута. Маршрут по умолчанию для маршрутизаторов обычно не обнаруживается, поэтому может потребоваться установить его вручную.

Шаг для установки предпочтений маршрутизатора ipv6 из Документация CISCO являются:

  1. включить
  2. настроить терминал
  3. номер типа интерфейса
  4. ipv6 nd предпочтительный маршрутизатор {высокий | средний | низкий}

Согласно 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 для меня более чем достаточно. На самом деле вам даже не нужно устанавливать такой же префикс, но если вы этого не сделаете, ваши интерфейсы и таблицы маршрутизации будут загромождены дополнительными адресами и маршрутами, которые не будут использоваться ни для чего.