IPv6 at home from the cable provider

Hello,

I get IPv6 from my cable provider using hAP AC. The provider says it uses “DHCPv6/SLAAC, link: /128 IPv6 addresses to modem, prefix-delegation: /64 block for IPv6 addresses behind the modem.”

I configured DHCPv6 with

 
 /ipv6 dhcp-client> print detail
 0    interface=ether1 status=bound duid="0x000300016c3b6b11e5e8" 
      dhcp-server-v6=fe80::2fe:c8ff:fe06:5019 request=address add-default-route=yes 
      use-peer-dns=yes pool-name="" pool-prefix-length=64 prefix-hint=::/0 
      address=2a02:2788:1010:0:3438:87d3:ad5f:455f, 51m43s

I advertise 2a02:2788:1010::/64 on the bridge

My addresses are

/ipv6 address> print

 #    ADDRESS                                     FROM-POOL INTERFACE          ADVERTISE
 0 DL fe80::6e3b:6bff:fe11:e5e9/64                          bridge             no       
 1 DL fe80::6e3b:6bff:fe11:e5e8/64                          ether1             no       
 2  G 2a02:2788:1010::1/64                                  bridge             yes      
 3 DG 2a02:2788:1010:0:3438:87d3:ad5f:455f/64               ether1             n

and here is the routing table:

/ipv6 route> print   
 #      DST-ADDRESS              GATEWAY                  DISTANCE
 0 A S  ::/0                     fe80::1%ether1                  1
 1 ADC  2a02:2788:1010::/64      bridge                          0

I can ping my ISP’s DHCP server with

/ping fe80::2fe:c8ff:fe06:5019%ether1

but pinging any other global address fails with a timeout.

Can someone please help me understand why?

In DHCPv6 client, you’re requesting address (request=address), but what you really want is prefix. Then set pool-name where received prefix will be saved. And finally, instead of assigning address/subnet to internal interface manually, let it use automatic one from pool (::1/64 will change into proper address automatically):

/ipv6 address
add address=::1/64 from-pool=<pool name> interface=bridge

Bingo!

Thanks a lot! I tried exactly that, but instead of letting DHCPv6 create the pool automatically, I configured it myself beforehand. However, when configuring the pool manually, one can only specify the prefix-length up to 63.

When DHCPv6 create the pool, it sets the prefix-length to 64.

Without the properly configured pool, nothing worked for me.

And how do I ask my wAP AC that sits on the same network to autoconfigure an IPv6 address? Or rather, should I? Or it can use the link-local addresses in the LAN?

I had no complaints from router when I tried to add:

/ipv6 pool
add name=test prefix=2001:db8::/64 prefix-length=64

Link-local address is enough for local management. You could get public one using SLAAC by setting:

/ipv6 settings set accept-router-advertisements=yes

But the behaviour is currently not very nice, you won’t see the address anywhere in RouterOS, even though router will have it.

I had no complaints from router when I tried to add:

/ipv6 pool
add name=test prefix=2001:db8::/64 prefix-length=64

I did it in the web interface, setting prefix to ::/0 and prefix-length=64. IIRC, these were the default values, but when I clicked on Apply, I got a popup saying that prefix-length is supported up to 63.

I am running RouterOS 6.37 if that matters.

Anyway, these are gory details. IPv6 works, yahoo!

Thanks again!

If you tried to use prefix=::/0, you were telling router that you own whole IPv6 address space. You didn’t really expect it would believe you, did you? :slight_smile: There just seems to be a typo in that message, the correct limit should be 33bit, not 63bit.