Я читал противоречивые источники и видел различное поведение в отношении того, как маршрутизатор CPE должен назначать адреса IPv6.
RFC3633 похоже, подразумевает, что каждый хост должен получить / 64, а RFC6204 говорит, что маршрутизатор должен назначить / 64 каждому из своих интерфейсов LAN (что по-прежнему составляет один / 64 на хост для простой жилой сети, верно?)
Между тем, мне назначили / 56 (через туннель), и у меня есть маршрутизатор, на котором работает OpenWRT Barrier Breaker.
SLAAC на моем компьютере дает мне IP только с первого / 64; и в попытке выделить каждому компьютеру полный / 64 автоматически (а не вручную), оба сервера DHCPv6 (odhcpd и dnsmasq), которые я пробовал, по-прежнему выдавали IP-адреса только в первом / 64.
Более конкретно с dnsmasq я пробовал dhcp-range=2001:xxxx:e001:c501::,2001:xxxx:e001:c5ff::
но это ошибка с "несогласованным диапазоном DHCPv6", и dhcp-range=2001:xxxx:e001:c500::,56
дает "длина префикса должна быть не менее 64".
Таким образом, фактический DHCPv6 (и SLAAC), похоже, использует только один / 64 для всей сети, но я только прочитал, что каждый хост должен получить / 64.
Итак, что правильно?
Редактировать:
Если / 64 для всей сети является "правильным" назначением для жилого объекта, почему это лучшая текущая практика назначить каждому сайту / 56 или / 48?
Я исходил из предположения, что это так, что каждому хосту будет выделено / 64 маршрутизатором.
P.S. IP-адреса на интерфейсах моего роутера выглядят так:
$ ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::a2f3:c1ff:fed4:3678/64 scope link
valid_lft forever preferred_lft forever
5: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
inet6 2001:xxxx:e001:c500::1/56 scope global
valid_lft forever preferred_lft forever
inet6 fdd0:da3b:f524::1/56 scope global
valid_lft forever preferred_lft forever
inet6 fe80::a2f3:c1ff:fed4:3678/64 scope link
valid_lft forever preferred_lft forever
7: eth0.2@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
inet6 fe80::a2f3:c1ff:fed4:3678/64 scope link
valid_lft forever preferred_lft forever
8: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::a2f3:c1ff:fed4:3678/64 scope link
valid_lft forever preferred_lft forever
22: sit1: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1280
inet6 2001:xxxx:f000::32af/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::7892:987e/64 scope link
valid_lft forever preferred_lft forever
inet6 fe80::c0a8:101/64 scope link
valid_lft forever preferred_lft forever
IPv6 обычно использует / 64 для каждой подсети. Маршрутизаторы отправляют объявление маршрутизатора или RA в LAN. Этот RA содержит основные настройки для локальной сети, например, какие префиксы (часто один / 64) использовать, можно ли использовать маршрутизатор в качестве шлюза по умолчанию, разрешено ли хостам автоматически настраиваться и есть ли на нем DHCPv6-сервер. LAN (и какой DHCPv6-сервер: с отслеживанием состояния или без отслеживания состояния). Резолверы DNS по умолчанию также могут быть отправлены в RA.
Да, это означает, что запустить сеть без DHCP не проблема, и все будет работать автоматически.
Если хостам разрешено автоконфигурировать себя, они будут брать / 64, объявленное в RA, и давать себе один или несколько адресов в этом / 64. Вероятно, вас смущает то, что это показано, например, как 2001:db8:aa:b::12ab/64
. Это не означает, что хост получает все / 64, это означает, что хост часть из этого / 64 в локальной сети с адресом 2001:db8:aa:b::12ab
.
DHCPv6 может работать двумя способами: с отслеживанием состояния и без отслеживания состояния. Stateful похож на то, к чему вы привыкли в IPv4: DHCP-сервер назначает адреса хостам и предоставляет им информацию о конфигурации, такую как разрешение DNS, серверы NTP и т. Д. Без сохранения состояния проще: он предоставляет только информацию о конфигурации. О том, какой тип сервера DHCPv6 доступен в LAN, сообщается в RA.
Комбинация автоконфигурации и DHCPv6 без сохранения состояния очень распространена.
Каждый широковещательный домен получает / 64. Если ваши хосты изолированы, так что в каждой подсети должен быть только один, вы можете назначить целое / 64 для одного хоста. Это в основном используется для серверов, где вы все равно используете статические IP-адреса. Если вы видите необходимость в SLAAC или DHCPv6 с отслеживанием состояния, вам, вероятно, следует назначить / 64 для всего сегмента сети, а не для одного хоста.