Docker und IPv6 – es wird endlich besser

Ich habe ja schon einige Berichte und auch einige GitHub-Kommentare zum Thema Docker und IPv6 verfasst. Die meisten davon waren durch die Enttäuschung geprägt, dass eine eigentlich sehr moderne Virtualisierungslösung seit mehr als zehn Jahren in Sachen moderner Netzwerk-Protokolle und Verwaltung nur sehr langsam zu Potte kam. Die Unterstützung von IPv6 war lange Zeit rudimentär bis stiefmütterlich.

Zur kurzen Einordnung: Per default setzt Docker (noch immer) auf das IPv4-Protokoll, dessen Grenzen hinsichtlich der weltweit verfügbaren Adressen mittlerweile erreicht bzw. sogar überschritten sind. Angesichts der Tatsache, dass Docker im Jahr 2013 gegründet wurde und um 2015 herum langsam an Popularität gewonnen hat, war es doch sehr verwunderlich, dass von Haus aus erst einmal nur das alte IPv4 unterstützt wurde. Immerhin automatisierte Docker an dieser Stelle bereits einiges an Firewall und Forwarding-Regeln. Aber auch automatisierte Workarounds sind und bleiben Workarounds: In die Presche hinein gesprungen sind dann unter anderem Reverse Proxies wie z.B. Traefik, um das Problem zu lösen dass man einen Port (für HTTP 80, für HTTPS 443) pro IP-Adresse immer nur einmal verwenden kann. HTTP an dieser Stelle schon seit Jahrzehnten Virtual Hosts, eingesetzt habe ich das bereits zu Schulzeiten für den Schulserver (damals noch ein Apache 2.2.x) – mit SNI kam für HTTPS dann auch ca. 2009 verbreitet auf, mittlerweile ist es erprobt und stabil.

Aber wie gesagt, all die Workarounds sind mit IPv6 nicht mehr notwendig, das neue Protokoll bietet IP-Adressen in einer Fülle die wohl wahrlich bis ins nächste Jahrhundert ausreichen sollte – bis dahin hat man dann hoffentlich aus der schleppenden Umstellung gelernt und es wird mit IPv7 (oder dann doch gleich IPv8) dann einfacher mit der Umstellung. Selbst in der Standard-Ausführung bekommt man in der Regel 64 Bit Adressraum zur freien Verfügung, ggf. auch noch etwas mehr. Continue reading

Microservices: Ende-zu-Ende, IPv6, Docker und HTTPS / TLS / SSL

IPV6, das neue IP-Protokoll kommt, langsam aber sicher. Amazon ist mit seiner AWS-Cloud voran geprescht und verlangt mittlerweile Aufpreis für externe IPv4-Adressen. Diese werden zunehmend knapper und somit sind auch die Kosten verständlich. Auch bei diversen Hosting-Anbietern hat man seit einiger Zeit zumindest einmal Vorbereitungen getroffen entsprechende Kosten an den Kunden dezidiert weitergeben zu können. Unter anderem wird ein IPv6-only-Betrieb vergünstigt angeboten. Leider ist er auch für mich noch keine wirkliche Option, bereits der Blog benötigt um gut erreichbar zu sein immer noch eine externe IPv4-Adresse, ich möchte ja eine möglichst große Reichweite haben und potentielle Leser nicht aufgrund ihrer IP-Version diskriminieren.

Nun habe ich ja mittlerweile auch einige Dinge nach aktuellem Stand der Technik per Docker virtualisiert (genauer gesagt ist es ja nur eine Paravirtualisierung). IPv6 ist in Docker immerhin angekommen, der Support lässt allerdings immer noch deutlich zu wünschen übrig. Halbwegs tragbar ist der Aufwand wenn man eine feste, öffentliche IPv6-Range hat und mit docker compose bzw. eigenen Docker-Netzwerken arbeitet. Man muss sich dann nur mit der Problematik der Netzwerkaufteilung Gedanken machen. Entgegen der häufig gelesenen Aussage ist aber bei /64-Netzwerken nicht Schluss mit dem Subnetting in IPv6. Derartige Ranges bekommt man in der Regel bei den Hosting-Anbietern im Standard-Paket. Für mich selbst haben sich /80er Aufteilungen für Docker-Netzwerke bisher ganz gut bewährt, das kann man aber je nach Bedarf noch größer oder kleiner schneiden. Continue reading