I’ve been running IPv6 on my RB5009 running RouterOS 7.20.5 as my home router, downstream from an Xfinity residential service. The carrier assigns me a /60 via PD, shown below (modifying actual v6 prefix for privacy):
[admin@Home-Edge1] > /ipv6/dhcp-client/export
/ipv6 dhcp-client
add interface=ether1 pool-name=pool0 prefix-hint=::/60 request=address,prefix use-peer-dns=no
[admin@Home-Edge1] >
[admin@Home-Edge1] > /ipv6/dhcp-client/print
Columns: INTERFACE, STATUS, REQUEST, PREFIX
INTERFACE STATUS REQUEST PREFIX
0 ether1 bound address 2001:601:7890:abc0::/60, 3d10h3m39s
prefix
[admin@Home-Edge1] >
My first interface, MAIN_VLAN_1, gets a correct /64 allocated downstream, but I’m running into trouble adding ipv6 for my two new vlan interfaces, GUEST_VLAN_10 and IOT_VLAN_20. I'm assigning ::1 from pool0 to the two additional downstream vlan interefaces, but when I start with ::1, they get changed to ::a000 and ::b000 as /64s in the configuration (seemingly incrementing every time I test this), putting them in the same subnet effectively:
[snohomish@Snohomish-Edge1] > /ipv6/address/add address=::1 from-pool=pool0 interface=GUEST_VLAN_10
[snohomish@Snohomish-Edge1] > /ipv6/address/add address=::1 from-pool=pool0 interface=IOT_VLAN_20
[snohomish@Snohomish-Edge1] > /ipv6/address/export
/ipv6 address
add address=::1 from-pool=pool0 interface=MAIN_VLAN_1
add address=fd00:effe:3204::1 interface=MAIN_VLAN_1
add address=fd00:effe:3204:a::1 interface=GUEST_VLAN_10
add address=fd00:effe:3204:14::1 interface=IOT_VLAN_20
add address=::a000:0:0:1 from-pool=pool0 interface=GUEST_VLAN_10
add address=::b000:0:0:1 from-pool=pool0 interface=IOT_VLAN_20
[snohomish@Snohomish-Edge1] >
Note that I’m also assigning ULA subnets to each, but I don’t believe that’s relevant here. LMK if I’m wrong on that.
What I'd expect to see is the three vlans to be numbered 2001:601:a583:44c0::1/64, 2001:601:a583:44c1::1/64, and 2001:601:a583:44c2::1/64 (the last nibble of the /64 denoting the disaggregation from the /60). However, here’s what I see instead (filtering out link-local and ULA entries):
[admin@Home-Edge1] > /ipv6/address/print
Flags: D - DYNAMIC; G - GLOBAL, L - LINK-LOCAL
Columns: ADDRESS, FROM-POOL, INTERFACE, ADVERTISE, VALID
ADDRESS FROM-POOL INTERFACE ADVERTISE VALID
0 D ::1/128 lo no
3 G 2001:601:7890:abc0::1/64 pool0 MAIN_VLAN_1 yes
12 G 2001:601:7890:abc0:a000::1/64 pool0 GUEST_VLAN_10 yes
13 G 2001:601:7890:abc0:b000::1/64 pool0 IOT_VLAN_20 yes
[admin@Home-Edge1] >
Which means the three downstream LANs addresses out of the same /64, which should not be the case. The routing table shows this more clearly (again, filtering out link-local and ULA):
[admin@Home-Edge1] > /ipv6/route/print
Flags: D - DYNAMIC; I - INACTIVE, A - ACTIVE; c - CONNECT, d - DHCP, g - SLAAC; + - ECMP
Columns: DST-ADDRESS, GATEWAY, ROUTING-TABLE, DISTANCE
DST-ADDRESS GATEWAY ROUTING-TABLE DISTANCE
DAg ::/0 fe80::21c:73ff:fe00:99%ether1 main 1
DAc ::1/128 lo main 0
DAd 2001:601:7890:abc0::/60 main 1
DAc+ 2001:601:7890:abc0::/64 MAIN_VLAN_1 main 0
DAc+ 2001:601:7890:abc0::/64 GUEST_VLAN_10 main 0
DAc+ 2001:601:7890:abc0::/64 IOT_VLAN_20 main 0
[admin@Home-Edge1] >
Even odder, the used pool statistics shows /68s, not /64s! SLAAC would not like this at all.
[admin@Home-Edge1] > /ipv6/pool/used/print
Columns: POOL, PREFIX, OWNER, INFO
POOL PREFIX OWNER INFO
pool0 2001:601:7890:abc0::/68 Address MAIN_VLAN_1
pool0 2001:601:7890:abc0:a000::/68 Address GUEST_VLAN_10
pool0 2001:601:7890:abc0:b000::/68 Address IOT_VLAN_20
[admin@Home-Edge1] >
I don’t know if I’ve got a config mistake (should I not be using ::1 for all three interfaces?) or if we’re looking at a bug (the /68s under /ipv6/pool/used makes me suspicious here), but the upshot is that I’ve only got one useful IPv6 LAN in my network. Would love some advice or investigation ![]()