I happened to have a chance to work on IPv6 related project, and here are some some quick insights of the IPV6 of current state. I would put in Q&A format so it might be faster to read:
Q: How does an IPv6 address look like:
A typical ipv6 address is like something like this
Q: How many addresses are in IPV6:
The address has 8 blocks in total, each block has 4 hexadecimal digits. Each hexadecimal digt has 4 bits ( 2⁴ => 16)
So totally there are 4 x 4 x 8 = 128 bits.
The total IPV6 address in the world is 2¹²⁸
Q: Why my IPv6 address look like this: 2001:0db8::ff00:0042:8329 ?
I think this is a first confusing part when you work with IPV6. “::” is a short hand for “0000:0000:…”, it tries to fill up 32 digits using a bunch of zeros. (This short hand could only be used for once in each address.)
2001:0db8::ff00:0042:8329 actually means
Q: So, what’s the advantage of using IPv6 for me?
As far as I could tell now, the biggest advantage is, you could get a lot of IPv6 addresses easily.
For many VPS providers (AWS, Linode, Digital Ocean, etc…), you could only have one IPv4 per machine. And extra IPv4 are normally very expensive. If you want a block of 256 IPv4, it could easily cost you more than 5000HKD per month.
However, if you want the IPv6, you could simply ask for it, and you would immediately get a block of /64 for free. A block /64 means the IPv6 address with first 64 bits fixed, so the total IP you will get (for free) is:
2 ^ (128–64) = 2⁶⁴ = 18,446,744,073,709,551,616
It’s even much more than all the IPv4 together in the world (2³²)
Q: So, with so many IPv6, what could I do?
You could do a lot of strange things actually. For example, if you want to craw a website, you could use a different IP for every URL request, and there is no way the user could block you using the IP address alone. And you could build a a huge network of docker instances, each with a different global IP.
Q: How mature is the IPv6 right now?
Most of linux tools are ready with IPv6, but very few sites support IPv6. You could see the example from this list: http://sixy.ch/ The site may not be complete, but still total number of sites are not much.
Q: What are commonly used IPv6 commands?
IPv6 and IPv4 are basically two totally separate systems, you need another set of tools for all IPv6 related tasks. Here are some common IPv6 commands:
# check if you machine support
ipv6 curl -6 ipv6.google.com
# get ipv6 address of current machine
curl -6 ipv6.myexternalip.com/raw
# ip is the new ip manipulating tool, next generation of
ifconfig ip -6 a
Q: Can docker support IPv6?
A: Yes, but very tricky for now. Using docker IPv6 + ip6tables would bring the maximum flexibility. However, it seems the current official documentation has some problems (if you follow the official documentation fully, you may get into some problems). The path to make it work is painful, I might share my experience in a separate post.