Raphael Friedmann

Podman Dual-Stack?

Seit einiger Zeit beschäftige ich mich vermehrt mit Containern und wollte einen Podman Container von außen erreichen können.

Privat habe ich aktuell meine Internetverbindung von dem Provider Vodafone (BW) und dadurch leider keine echte IPv4 Adresse mehr, DS-Lite sei Dank. Allerdings bekommt man ein komplett natives IPv6 zu Verfügung.

Mittlerweile habe ich auf ziemlich allen Geräten die ich verwende IPv6 am Laufen, somit war klar, was nicht mit IPv4 geht ist somit IPv6 möglich, warum auch nicht?

Daher wollte ich rausfinden, wie man mit Podman IPv6/IPv4 in einem echten Dual-Stack betreibt.

Daraufhin habe ich die Anleitung gelesen und mich auch bei Github schlau gemacht und so richtig fündig wird man leider irgendwie nicht.

Es gibt verschiedene Beispiele, die aber nicht darauf abgezielt haben, das ganze zusätzlich per DHCP/RA zu realisieren, so dass ich die Netzwerkkonfiguration von meiner Vodafon-Station oder Fritzbox „dynamisch“ bekommen kann.

 

Vorraussetzungen

Wie oben schon erwähnt, benötigt man einen funktionieren DHCP Server und einen Router der eine gültige IPv6 Adresse zuteilt. Zusätzlich muss podman auf einen Linux System installiert sein. In meinem Fall hab ich die Installation auf einem Arch Linux gemacht per

				
					pacman -S podman
				
			

Netzwerk anlegen & Container im Dual-Stack starten

Im ersten Schritt wird ein spezielles Netzwerk angelegt, welches die Außenanbindung an das Netzwerk realisiert.

				
					podman network create --ipv6 --driver macvlan --opt parent=eno1 mynet

				
			

Hierbei muss man nachdem dem „parent=“ den Namen an das jeweilige Netzwerkinterface anpassen, welchen man zu Verfügung hat. „mynet“ bezeichnet den Namen des Netzwerks und kann frei gewählt werden. Weitere Informationen finden sich unter: podman-network-create

Jetzt kann man wie gewohnt seinen Container starten, wichtig sind zwei zusätzliche Parameter:

„–network=mynet“ womit man dem Container mitteilt, dass der Netzwerk „mynet“ anstatt dem regulären Netzwerk verwendet werden soll und eine MAC-Adresse per „–mac-address“ ist nicht verkehrt, damit der Container nicht bei jedem Start eine neue IP erhält.

Wenn man die MAC-Adresse nicht angibt, so wird bei jedem Start von dem Container eine neue zufällig generiert MAC-Adresse verwendet.

 

				
					podman run  -l "io.containers.autoupdate=registry" -d \
  --name=test \
  --network=mynet \
  --mac-address 92:d4:de:ad:b3:3f \
  --restart unless-stopped \
quay.io/libpod/banner

				
			

Nachdem der Container gestartet ist wird automatisch eine IPv4 und eine IPv6 zugewiesen. Wichtig hierbei zu wissen, dass „podman inspect“ zumindest in Version 3.4.4 die IPv6 nicht anzeigt, was leider recht nervig ist.

Per „ip neigh“ kommt man auch nicht an die IPv6 Adresse ran und ein Subnet-Scan mit nmap würde unter IPv6 einige Zeit dauern… somit kommt man eigentlich nur per „ip a“ an die IPv6-Adresse ran.

				
					 podman exec -it test ip a
				
			

Tipp: Manchmal kann es sein, dass der jeweilige Container es nicht implementiert hat, dann nimmt man einfach kurz einen der es integriert hat wie z.b. quay.io/libpod/banner

Sicherheitsbedenken

Generell konfiguriere ich meine Systeme immer mit aktivierter Firewall.

Was mit bei der Verwendung von MACVLAN aufgefallen ist, das an dem Punkt die Firewall (firewalld) von meinen System nicht greift und direkt alle Ports im Netzwerk sind.

Für Produktiv Systeme würde ich aktuell es nicht verwenden.