Weird behavior regarding xxxx:xxxx:xxxx:xxxx::/128

I set up a clean 7.23.1 environment and configured the following simple addresses:

/ipv6 address
add address=fe80::cc:0:0:18 advertise=no auto-link-local=no interface=lan
# The result below will be fd00:0:0:cc::18/64, although I believe it should be fd00:0:0:cc::18/128
add address=fd00:0:0:cc::18 advertise=no interface=lan

Then, I pinged fd00:0:0:cc:: from the router itself, and got the following result:

It seems like it's resolving to its own address. This causes a problem. For a DHCPv6 stateful server, if a pool like fd00:0:0:cc::/64 is configured, the first client to get an address from this pool will receive fd00:0:0:cc::/128. RouterOS will then consider this address as its own, resulting in abnormal communication for the client.

So, is this a bug?

Also, just two quick questions regarding the DHCPv6 pool:

  1. Is there a way to reserve specific addresses in the pool so they won't be handed out? I know static binding is one way, but it's too inefficient.

  2. It seems ROS always allocates addresses sequentially starting from 0. Is there a way to make it start from a specific address and allocate them randomly? For example, starting with 10f, and the next one being a random address like 20a, etc.

Thank you.

I believe the netmask should also be included for the address to function as intended:

/ipv6 address
add address=fd00:0:0:cc::18/64 advertise=no interface=lan

As for your questions, there aren't specific options covering your needs that I'm aware of, so no to both of them

Regarding your second question, you can create a particular sub-pool from existing pool and delegate addresses from it.

For example, take a sub-pool like fd00:0:0:cc:dc01::/80. The first address allocated from it would still be fd00:0:0:cc:dc01:0:0:0/128, right?

Nope, addresses taken from pool, will have same prefix length as pool itself.

i.e.fd00:0:0:cc:dc01:0:0:0/80

Unless you explicitly set prefix length yourself.

well, same thing
dozen of VLAN's, every vlan with ia_na dhcpv6 server, and in every vlan pool need to manualy reserve ::0 and ::1 addres to avoid problems
luckily, i get static v6/56 so few minute script for 24pcs of vlan solve this, but ... it is still manual process

Since this pool is for stateful DHCPv6, the prefix length has to be set to 128.

I really hope MikroTik can add support for reserved addresses in the near future.

I've submitted a ticket: SUP-219906.