Меня немного смущают следующие 2 RFC, относящиеся к IPv6:
- RFC 4862 ( автоконфигурация адресов без учета IPv6)
- RFC 7084 (требования к маршрутизатору IPv6 CE)
RFC 4862 заявляет:
Процесс автоконфигурации, указанный в этом документе, применяется только к хостам, а не к маршрутизаторам. Поскольку автоконфигурация хоста использует информацию, объявленную маршрутизаторами, маршрутизаторы необходимо будет настроить другими способами.
RFC 7084 перечисляет одно из своих требований к конфигурации WAN-стороны для назначения адресов:
WAA-1: Маршрутизатор CE IPv6 ДОЛЖЕН поддерживать автоматическую настройку адреса без сохранения состояния (SLAAC) [RFC4862].
Здесь есть противоречие?
Должен ли маршрутизатор автоматически настраивать IPv6-адрес для своего интерфейса WAN?
Почему RFC 4862 говорит
Поскольку автоконфигурация хоста использует информацию, объявленную маршрутизаторами, маршрутизаторы необходимо будет настроить другими способами.
Если я использую маршрутизатор для подключения своей локальной сети, например, к Интернет-провайдеру, разве в сети Интернет-провайдера нет маршрутизатора, который общается с моим маршрутизатором?
Я бы подумал, что было бы разумно объединить 2 (или более) маршрутизатора. В таком случае, почему бы не использовать SLAAC на интерфейсе WAN второго маршрутизатора?
Может быть, проблема сводится к искусственному разграничению между хостами и маршрутизаторами? Из RFC 4862:
узел - устройство, реализующее IP.
Маршрутизатор - узел, который пересылает IP-пакеты, не адресованные самому себе.
хост - любой узел, который не является маршрутизатором.
Но не может ли хост (то есть машина, на которой размещены серверы или приложения) также иметь таблицу маршрутизации и функционировать как маршрутизатор? И мы снова эффективно объединяем 2 роутера.
Изменить : некоторая дополнительная информация, которую я позже обнаружил ...
Ядро Linux обрабатывает SLAAC и строго следует RFC 4862. Вплоть до различия между хостами и маршрутизаторами. Смотрите документацию по ядру в ip-sysctl :
- HOST поведение предполагается. Это означает, что будут отправлены запросы маршрутизатора, а для автоматической настройки адреса будут использоваться объявления маршрутизатора.
- Только если включена переадресация (
/proc/sys/net/ipv6/conf/all/forwarding
), устройство считается МАРШРУТИЗАТОРОМ . Это означает, что запросы маршрутизатора не будут отправлены, а объявления маршрутизатора будут игнорироваться.
Оказывается, это различие восходит к прошлой версии, предшествующей IPv6. Смотрите параметр /proc/sys/net/ipv4/ip_forward
:
Эта переменная является особенной, ее изменение сбрасывает все параметры конфигурации в их состояние по умолчанию ( RFC1122 для хостов, RFC1812 для маршрутизаторов)
Люди, которые написали этот документ (и его предшественник RFC 2462) почти наверняка имели представление о том, что существует два типа устройств. «хостов», которые были многочисленными и обременительными для управления, и «маршрутизаторов», которыми управляли компетентные сетевые администраторы.
В начале 2000-х у нас наблюдался рост количества постоянно подключаемых DSL / кабельных соединений, а также рост числа людей, у которых дома было несколько компьютеров, которые могли бы использовать подключение к Интернету. Поскольку многие интернет-провайдеры выдавали бы только один IP-адрес клиенту (по крайней мере, без дополнительной оплаты), мы наблюдали массовый рост использования «домашних маршрутизаторов» с NAT для сокрытия нескольких компьютеров за таким соединением. NAT позволил «домашнему маршрутизатору» скрыть свою истинную природу от интернет-провайдера, поскольку интернет-провайдер «домашний маршрутизатор» был похож на хост.
Такое использование поначалу было «терпимо» только для интернет-провайдеров, но в конце концов они решили, что в конце концов это не так уж плохо, и начали фактически предлагать / продавать «домашние маршрутизаторы» своим клиентам. В результате мы получили огромное количество таких устройств в домах и небольших офисах.
Только сравнительно недавно IETF начала правильно исследовать, как «домашние маршрутизаторы» и обслуживающие их интернет-провайдеры должны вести себя в контексте IPv6. Ответ заключается в том, что интерфейс «стороны WAN» должен вести себя как хост, в то время как интерфейсы «стороны LAN» должны вести себя как обычный маршрутизатор. Поскольку NAT отсутствует, требуются некоторые дополнительные детали для обработки адресов доставки на стороне локальной сети.
Что касается ядра Linux, оно действительно по умолчанию игнорирует RA при включенной маршрутизации, но это поведение может быть переопределено при необходимости.
источник