About two years ago I started implementing a server setup which is based on virtual machines for the services and a physical host orchestrating them. The special feature was that all virtual machines are only connected via IPv6. I only needed IPv4 on the physical host and on virtual machines with services where an external IP protocol conversion was impossible (hello, e‑mail…).
Originally, I planned five to six articles in this series. I published three: One about the basic setup of the physical host, one about the basic setup of the virtual machines and one about how to implement an e‑mail server on this setup. Unfortunately, things got a bit stuck after that. The articles about web servers, integration with Let’s Encrypt and implementing a Cryptpad instance were somehow finished but I never got them „over the line” and online.
Nevertheless, I used my computer with all these schemes constantly (and still use it, you just read this article on it…) and even started implementing it on other systems. I found some mistakes and shortcomings in the setup and corrected them in the blog articles. I even got some amount of feedback from people who – successfully – used my instructions to implement the described IPv6-based server schemes on their own servers. Marvellous!
By July 2020, two things happened – totally unrelated but almost at the same time. First was a lengthy conversation with a reader of my articles. He tried to implement the server with Ubuntu 20.04 and ran into strange problems. I also had tried this setup once by the end of May 2020, but I did not dig really deep into it and oversaw the problems.
The second thing was my company. We decided to move some production systems onto a new server cluster and those servers should – for the first time – also be virtualized and IPv6-based for the main communication channels.
Both incidents lead me deeper into my setup again. I checked the Ubuntu 20.04 problems and was able to circumvent the problem, which I think is raised by the systemd-networkd daemon. I fixed some quirks in the IPv4 configuration. I added information about routing, fixed a bunch of – well – incorrect statements and overall brought the documents back in shape.
And I decided, that some blog articles are not sufficient as base for the ongoing work on this documentation. So, I moved everything into Asciidoc documents, reorganized and sorted it and made a „real” large guide document of it (which I sometimes refer to as „book”…).
So, bad news: Today, the article series about IPv6 networking on KVM setups in this blog ends. But, good news: It is replaced by a much better document! Just look for
The IPv6 First Guide – Network Configurations With Linux And KVM
Read it as HTML document on http://ipv6-first-guide.hillbrecht.de.
Read it as PDF document on http://ipv6-first-guide.hillbrecht.de/ipv6-first-guide.pdf.
Or download or browse its Asciidoc sources on https://github.com/dirkhillbrecht/ipv6-first-guide.
The guide does not only include the (updated) content of the blog articles, but also all the stuff which was unpublished so far. Namely:
- How to obtain SSL certificates from Let’s encrypt
- How to setup web servers on IPv6-only machines and make them accessible from IPv4 clients
- How to install a Cryptpad instance on a IPv6-only machine and make it accessible from IPv4
These are rather large topics and I am quite happy that I finally managed to publish all this stuff.
I have released the whole guide under the CC-BY-SA license, so feel free to get it, enhance it, correct it.