Schlagwort-Archive: IPv6

Docker: Start mit aktivem IPv6 nicht möglich

Docker kann bei mir nach wie vor zwei Lager bedienen: Die Idee von Containern klingt gut, die mangelnde Stabilität und viele Konzepte der Implementierung lassen mich aber nur den Kopf schütteln. Heutiges Thema: IPv6. Prinzipiell nicht wirklich nutzbar, da die meisten Orchestration-Systeme wie Kubernetes oder Swarm bisher laut Doku und Bugtrackern bestenfalls rudimentäre Unterstützung bieten. Docker selbst soll – laut Anleitung – jedoch mit wenigen Handgriffen IPv6-fähig gemacht werden können.

Klingt einfach? Tja, nach einem Neustart ließ sich der Docker-Daemon nicht mehr starten. Im Log fand sich folgendes:

dockerd: Error starting daemon: Error initializing network controller: Error creating default "bridge" network: could not find an available, non-overlapping IPv6 address pool among the defaults to assign to the network

Die Abhilfe ist recht einfach: Ein festes Netz vergeben. Hierzu in der daemon.json einen passenden fixed-cidr-v6-Eintrag machen:

{
"ipv6": true,
"fixed-cidr-v6": "2a01:1234:5678:9abc:def0::/112"
}

BitBasics – Crashkurs Netzwerkprotokolle

BitBasics - Crashkurs Netzwerkprotokolle

(69 MB) 00:25:04

2016-09-25 10:00 🛈

PC-Netzwerke sind heutzutage überall. Alleine beim lesen dieses Artikels oder schauen des Videos sind vermutlich dutzende Netzwerke aktiv.

In diesem extrakompakten Crashkurs schauen wir uns an, welche Protokolle in einem einfachen Heimnetzwerk ineinandergreifen und welche Aufgaben sie Übernehmen.

Korrekturen / Ergänzungen

  • 15:32 DNS ist ein eigenständiges Protokoll, dessen Anfrage fängt also selbst wieder bei der Anwendungsschicht an
  • 16:20 LinkLocal, MAC, NDP und ARP werden zwar vom verwendeten Protokoll der Vermittlungsschicht ausgewählt, zählen selbst aber schon zur Übertragung
  • 21:42 Bei Switchen oder Hubs bezeichnet ein Port einen Anschluss – diese haben nichts mit den Ports auf der Transportschicht zu tun.

Grafiken

Bild: https://www.adlerweb.info/blog/wp-content/uploads/2016/09/tcp-layer-300×169.png

Bild: https://www.adlerweb.info/blog/wp-content/uploads/2016/09/isoosi-tcp-layer-300×169.png

Weiterführende Erlkärungen

Ressourcen:

RFC vs. Microsoft: IPv6 ist kein IP!

Derzeit läuft noch mein schier endloser Kampf gegen den SPAM-Filter der Microsoft’schen Maildienste outlook.com/hotmail. Heute kam endlich eine Rückmeldung – ich wurde gebeten einige Daten einzusenden, unter anderem die „IP-Adresse oder Range“ der/des Mailservers. So getan folgte alsbald folgende Mail:

Sehr geehrte Damen und Herren,

Die folgende IP-Adresse ist ungültig: 2001:41d0:2:7981::/64

Könnten Sie dies bitte überprüfen und uns die richtige senden?

Mit freundlichen Grüßen,

Offenbar ist den Microsoft-Mitarbeitern IPv6 noch nicht bekannt…

IPv6: Lets rename NAT?

Hier zu Archivzwecken ein Copy&Paste meines Beitrags aus dem OVH-Forum. Es geht um die Möglichkeit IPv6 in ein lokales Netz weiter zu routen – dürfte sicher in Zukunft für einige interessant werden…

… Ich verwende feste IPv6-Adressen für Host und Gäste, das Routing läuft über den Host (Also nicht die virtuellen MAC-Adressen, die es inzwischen gibt). Für den Host gilt: eth0=OVH-Netz,br0=Netz mit den Gästen. Ich schreibe nur die nötigen Befehle – da die Config je nach Linux-Distri verschieden sind überlasse ich euch das übersetzen selbst (bei mir tuts aus Faulheit die rc.local). Wie man IPv6-Abkürzt (führende 0en weglassen, kürzen per ::) erklärt bei Bedarf google.

Host:
Als erstes benötigt der Host natürlich eine feste Adresse. Hierzu geht ihr in den OVH-Manager und sucht euer IPv6-Subnet (Steht bei Interfaces in der Server-Übersicht). Ich gehe hier von 2001:41D0:F0F0:F0F0::/64 aus. Das bedeutet, dass euch die IPs 2001:41D0:F0F0:F0F0:0000:0000:0000:0001 bis 2001:41D0:F0F0:F0F0:FFFF:FFFF:FFFF:FFFE gehören – genug Platz. Der Einfachheit halber nummeriere ich nur die letzte Zahl durch – ist aber natürlich keine Pflicht.

Als erstes erhält der Host auf beiden(!) Interfaces eine IP:

ifconfig eth0 inet6 add 2001:41D0:F0F0:F0F0::1/64
ifconfig br0 inet6 add 2001:41D0:F0F0:F0F0::99/64

Zudem benötigen wir ein Routing. Teilweise erhält der Server bereits über die IPv6-Autokonfiguration die korrekten Routen von OVH. Dummerweise unterstützen einige Switche bei OVH kein IPv6 und blockieren diese Autokonfiguration, daher funktioniert es nicht bei jeden. Da es nichts schadet die Route fest einzutragen werden wir das tun. Die Router-IP ermittelt sich wie folgt:

OVH-Hilfe
Der Router (Standardgateway) für jede IPv6 befindet sich immer auf IP:v:6:FF:FF:FF:FF:FF

Ein Beispiel:

Die IPv6 des Servers: 2001:41D0:1:46e::/64 wird zu 2001:41D0:1:4 + 5 Mal FF.
IPv6 Gateway: 2001:41D0:1:4FF:FF:FF:FF:FF

Die IPv6 des Servers: 2001:41d0:1:209::/64 wird also zu 2001:41d0:1:2 + 5 Mal FF.
IPv6 Gateway: 2001:41d0:1:2FF:FF:FF:FF:FF

In unserem Beispiel ergibt sich also der Router 2001:41D0:F0F0:F0FF:FF:FF:FF:FF. Die Route setzen wir mit

route -A inet6 add 2000::/3 gw 2001:41D0:F0F0:F0FF:FF:FF:FF:FF

Da wir zudem den Host als Router verwenden wollen benötigen wir Forwarding, das schalten wir mit diesem Befehl ein:

sysctl -w net.ipv6.conf.all.forwarding=1

Um auch zu wissen wo die Gäste hin sollen tragen wir hier entsprechende Routen ein. Ich habe es pro Host gemacht, sollte aber auch blockweise funktionieren:

route -A inet6 add 2001:41D0:F0F0:F0F0::10 dev br0
route -A inet6 add 2001:41D0:F0F0:F0F0::11 dev br0

Zum Schluss folgt dann der IPv6-Fubar, der meine Probleme auslöste: Ich nenns mal das IPv6-NAT. Die komplette Erklärung was und warum das nötig ist („Proxy the neighbors“) habe ich am Ende verlinkt.

sysctl -w net.ipv6.conf.all.proxy_ndp=1
ip -6 neigh add proxy 2001:41D0:F0F0:F0F0::10 dev eth0
ip -6 neigh add proxy 2001:41D0:F0F0:F0F0::11 dev eth0

Wichtig hierbei: Das eth0 ist kein Typo! Die Zeile bedeutet, dass der Host auf dem Interface eth0 bekannt geben soll, dass er für die genannte IP eine passende Route kennt.

Auf dem Gast sind dann nur analog zu oben die IPs einzurichten, die IP des Host-Interface br0 spielt dabei den Router:

ifconfig eth0 inet6 add 2001:41D0:F0F0:F0F0::10/64
route -A inet6 add 2000::/3 gw 2001:41D0:F0F0:F0F0::99

Weitere Ressourcen: