Я тестирую реализацию IPv6 в Ubuntu. Мой Linux-клиент Ubuntu правильно получает RA с сервера и настраивает адрес в объявленном префиксе. Затем он получает другой адрес через DHCP, который имеет /128
маска.
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether f8:a9:63:0c:3c:cb brd ff:ff:ff:ff:ff:ff
inet6 2001:xxxx:1f15:yyyy::9/128 scope global
valid_lft forever preferred_lft forever
inet6 2001:xxxx:1f15:yyyy:faa9:63ff:fe0c:3ccb/64 scope global dynamic
valid_lft 82162sec preferred_lft 10162sec
inet6 fe80::faa9:63ff:fe0c:3ccb/64 scope link
valid_lft forever preferred_lft forever
Я заинтригован /128
маска для этого адреса, которая подразумевает связь точка-точка. Почему маска /128
а не скажи /64
?
Это нормальное поведение DHCPv6 или что-то связано с настройкой моего DHCP-сервера?
Да, это нормальное поведение. Серверы DHCPv6 выдают адреса (с параметром IA_NA), но ничего не сообщают клиенту о подсети. Поэтому клиент просто настраивает отдельный адрес на интерфейсе. Любые маршруты в подсеть предоставляет RA. Если RA объявит префикс без опции автонастройки, клиент не будет настраивать адрес автоматически, но добавит маршрут для локальной подсети.
Это разделение ответственности сделано намеренно. Серверы DHCPv6 имеют право назначать адреса (среди прочего), но не имеют права говорить о состоянии сети. Часто серверы DHCPv6 не находятся даже в локальной подсети и общаются с клиентом через реле. Устройства, с которыми клиент обращается напрямую, - это маршрутизаторы. Поэтому в IPv6 маршрутизаторы сообщают клиентам о статусе сети (префикс, шлюз по умолчанию, маршруты и т. Д.) С помощью RA. Дополнительные параметры конфигурации и необязательные назначения адресов выполняются с DHCP-сервера.
Таким образом, клиент может быстро реагировать на изменения в сети, получая при этом более долгоживущую информацию от DHCPv6.