IPv6 is here but what do you need to know? It seems so familiar, but is just a bit different, almost around every corner. This article is a crash course to get you started and know where to go next.
[ ] IPv6 basics: address structure, types and characteristics [ ] Some configuration mechanisms [ ] Configuring DNS your records [ ] IPv6 websites in the browser and with other tools
The address length is 4 times the number of bits as in IPv4: 128 bits. That is about 3.4×10^38 addresses. It is said to be sufficient to assign more than 100 addresses to each atom on the surface of earth. No more need for NAT (Network Address Translation). DHCPv6 servers can be used to assign addresses locally but are not needed.
Addresses are written with ‘:‘ between blocks of 16-bits. Consecutive 16-bit blocks of zero can be collapsed into ‘::‘ but only in once place in the address. 16-bit blocks of consecutive zeros may be written as ‘:0:‘ which is equivalent to ‘:0000:‘. The values of 4 bits is written in hexadecimal, using symbols 0…F. ‘FFFF‘ thus corresponds to 16 consecutive ‘1’ bits.
Each Ethernet interface has a globally unique MAC address, which is the basis of the so called IPv6 Interface ID, which is 64 bits. The MAC address is expanded into a so called EUI-64, a 64-bit extended unique identifier, which can be used for the last 64 bits of an IPv6 address. (This raises some privacy concerns and calls for mitigation techniques but that is another topic.)
Link-Local Addresses, are used for auto-configured networking (autonomously, by an interface), the address always starts with FE80::/10 and 48 0 bits followed by Interface ID: FE80::<interfaceID> . These addresses are not routable though, and never forwarded by a router.
Unique-Local Addresses are globally unique, but should be used locally only, e.g. within an organization. These consist of a Prefix FC00::/7 of which the last bit has special meaning, a Global ID of 40 bits, a Subnet ID of 16 bits and an Interface ID of the usual 64 bits.
Global Unicast Addresses are composed of 48 bits global routing prefix, 16 bits subnet ID, followed by a 64-bit Interface ID. (Auto configuration requires 64 bit interface ID but if that is not needed, some bits can be taken away from the interface ID and added to the bits used for sub netting.) Global prefix always starts with MSB bits 001. These addresses are used for Internet v2.
Several addresses are reserved and have a special meaning or use.
FF02::5, FF02::6, FF02::9, FF02::A are multicast addresses for different routing protocols. FF01::1, FF01::2, FF02::1, FF02::2, FF05::2 are multicast addresses for collections of nodes or routers of certain scope in a network.
::/128, that is all 0‘s has the meaning of “unspecified address” (in “CIDR” notation where /128 indicates that the first 128 bits is used for routing, and 128-128=0 bits is used for addressing in a subnet.)
::/0 address means default route (this is all 0‘s with a “netmask” of all 1‘s)
::1/128, that is all 0‘s and last bit a 1, means loopback address.
IPV6 CONFIGURATION MECHANISM
ARP has been replaced by ICMPv6, a neighbor discovery protocol. An interface can auto-configure, and then join a number of multicast groups.
The interface sends a message to FF02::1/16 to find out if any other interface is using the same address. If there is no complaint about duplicate addresses, the interface assumes its assumed address is unique locally. Finally it sends out a message confirming adoption of its address, and configuration is complete.
Next the interface sends a message to FF02::2/16 to ask for any routers on the edges bounding its network. Any routers respond back, and the interface can adopt it as default gateway. The routers can also send a redirect message saying that there is a better gateway router available.
ADDING DNS RECORDS
To point your domain to an IPv6 address, use extensions (RFC3596) to DNS. Specifically the new AAAA record, just like you use A records for IPv4. You should point to the same server as your A record does, or delete the A record altogether for an IPv6-only server.
PTR records use the same reverse notation of your IPv6 address as with IPv4, one hex digit (nibble) at a time, separated by periods and followed by ipv6.arpa. the newly defined domain root for IPv6.
Using SRV (location of services) records you can express preference of v6 over v4 for each service and protocol type. SRV records include a service description where the first _xxxx specifies the service xxxx, and _yyyy the protocol, e.g. TCP or UDP, and a priority value where a lower value expresses higher priority, a weight value that can be used to express a static proportion of traffic that is recommended in case there are more than one options with same priority, and finally a port and host for the service. For example to basically run a v6-only http service with v4 fallback you can have these records:
v4.yourdomain.com. IN A <ip4address>
yourdomain.com. IN AAAA <ip6address>
_http._tcp.yourdomain.com. 3600 IN SRV 10 0 80 yourdomain.com.
_http._tcp.yourdomain.com. 3600 IN SRV 20 0 80 v4.yourdomain.com.
ADDRESSING A WEBSITE WITH IPV6
For addressing an IPv6-only website in your browser using the ip address, you need to use square brackets like so: http://[<address>] and port numbers can be specified after the closing bracket as usual, e.g. like this: http://[<address> ]:80
Here are how to use to the usual commands with IPv6:
nslookup -query=AAAA <hostname>
dig <hostname> AAAA
updated: 20170216; 20170330