I've setup stateful IPv6 infrastructure in my environment and I keep getting a /128 on all the IPv6 addresses that get assigned and I can't figure out why. I have a /64 prefix set on the router with the managed config flag set. I'm not sure what needs to be set in order to get the right prefix to be assigned. I'm using a dhcpd server for DHCPv6, not the router itself.
Here is my config:
interface Vlan31 ip address 10.2.31.1 255.255.255.0 ipv6 address 2620:5:E000:201F::1/64 ipv6 enable ipv6 nd prefix 2620:5:E000:201F::/64 ipv6 nd managed-config-flag ipv6 nd router-preference High ipv6 dhcp relay destination 2620:5:E000::D1
I can see the router advertisements on the network:
00:03:02.835497 IP6 (class 0xe0, hlim 255, next-header ICMPv6 (58) payload length: 64) fe80::e6aa:5dff:fe99:8855 > ip6-allnodes: [icmp6 sum ok] ICMP6, router advertisement, length 64 hop limit 64, Flags [managed], pref high, router lifetime 1800s, reachable time 0s, retrans time 0s source link-address option (1), length 8 (1): e4:aa:5d:99:88:55 0x0000: e4aa 5d99 8855 mtu option (5), length 8 (1): 1500 0x0000: 0000 0000 05dc prefix info option (3), length 32 (4): 2620:5:e000:201f::/64, Flags [onlink, auto], valid time 2592000s, pref. time 604800s 0x0000: 40c0 0027 8d00 0009 3a80 0000 0000 2620 0x0010: 0005 e000 201f 0000 0000 0000 0000
When I issue a DHCP request on one of my servers I get a /128 prefix length:
inet6 2620:5:e000:201f:0:d:8453:f3eb/128 scope global
Does anyone know what I'm missing and why a /128 is always getting assigned?
The /128 is because your address was obtained via DHCPv6. There is nothing wrong with it. The prefix information should be received via the router advertisement and installed in the local routing table, which can be visualized via the netstat -r command.
From the output provided, we can see that the on-link flag is already set.
prefix info option (3), length 32 (4): 2620:5:e000:201f::/64, Flags [onlink, auto], valid time 2592000s, pref. time 604800s 0x0000: 40c0 0027 8d00 0009 3a80 0000 0000 2620 0x0010: 0005 e000 201f 0000 0000 0000 0000
Correct me if I’m wrong, but I think of this as this the same as /32 local routes in the IPv4 protocol that is used to identify the IP address of the interface (i.e, local vs connected routes in a routing table; as opposed to a next hop address/[prefix]). In dual stack, the host routing tables will presumably auto-assign a /32 and /128 prefixes (IPv4 and IPv6) to identify the IP addresses on the local interface. The network prefix advertised by the DHCP server is irrelevant to this local route assignment. In other words in IP protocols, the /32 and /128 local route prefixes are auto-assigned by the local device (host, router, server, etc.) whether the address is dynamically or statically assigned. Correct?