How do I know what my usable IP addresses are in an IPv6 /64 range?
I was assigned a /64 range and I don't understand how to add addresses from it. What is a /64 range and how can I use it?
IPv6 ranges can definitely be confusing when compared to IPv4. A /64 range is routed through your Linode's SLAAC address and gives you access to 18,446,744,073,709,551,616 addresses. To understand how an IPv6 range works, it's important to understand that an IPv6 address has 128 bits as opposed to an IPv4's 32 bits. IPv6 addresses can also be condensed because of how many zeroes are in each address. You can remove all leading zeroes in each hextet (set of 4 digits, separated from others by a :). You can also replace the longest run of zeroes in each IPv6 address by a :: instead of writing out the zeroes.
When an IPv6 address is condensed in this format, it can be tough to see how so many addresses are available from a single /64 range. When the address is expanded, it becomes a bit easier to see. Another difference between IPv4 and IPv6 is that IPv6 addresses include single-digit numbers as well as letters up to f. This means that the first possible IPv6 address is 0000:0000:0000:0000:0000:0000:0000:0000 and the last possible IPv6 address is ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff. A /64 range has 64 usable bits from the end of the address, so the last 4 hextets in the expanded IPv6 address are usable.
So, how do you figure out what address to use from your range? One helpful resource is this CIDR-to-range converter. You can input your IPv6 range, along with its CIDR (/64). You'll receive the first and last usable IP addresses from the range, along with the number of possible addresses that can be used. You'll start from the end of the IP address, adding ::1 at the end and progressively incrementing in numbers, replacing the :: with its expanded address as necessary. In order to configure an address from your range, use our static IP configuration guide.