Netcup RS und Docker IPv6

  • Hallo zusammen,


    ich habe auf meinem RS 500 SAS G7 bereits mehrere Docker-Container laufen, welche wunderbar über IPv4 und IPv6 von außerhalb erreichbar sind, wenn die entsprechenden Ports auf den Host gemappt wurden. Leider funktioniert es noch nicht korrekt, dass Container eine IPv6-Adresse zugewiesen bekommen und über diese auch mit externen Hosts kommunizieren können.


    Nun möchte ich innerhalb eines Containers Wireguard laufen lassen, wobei ich gerne auch IPv6 verwenden möchte. (Wireguard mit IPv4 funktioniert schon problemlos). Dabei bin ich auf die Problematik mit Docker und IPv6 sowie Netcup gestoßen und habe mich bereits durch diverse Threads gelesen [1],[2],[3]. Auf dem Root-Server habe ich IPv6 eingerichtet anhand des Wiki-Eintrags [4] und kann den Server von außerhalb erreichen, als auch Verbindungen vom Server zu z.B. Google aufbauen. Weiterhin habe ich nach [3] noch ndppd installiert, da dies in einem anderen Thread empfohlen wurde.


    Meine Konfiguration sieht bisher so aus:
    /etc/network/interfaces


    /etc/docker/daemon.json

    Code
    1. {
    2. "ipv6": true,
    3. "fixed-cidr-v6": "2a03:4000:6:XXXX:1::/80"
    4. }


    /etc/ndppd.conf (Alternative Konfiguration als Kommentar noch enthalten.)


    /etc/sysctl.conf


    Der aktuelle Status ist so, dass jeder neu erzeugte Docker-Container eine IPv6-Adresse aus dem Adressbereich zugeordnet bekommt, allerdings nicht zu externen Hosts pingen kann. Pingen zwischen Root-Server und Containern funkioniert allerdings:


    Code
    1. root@4b78b4347d3e:/# ping6 <RS> # Container zu Root-Server
    2. PING <RS>(<RS> (2a03:4000:6:XXXX::1)) 56 data bytes
    3. 64 bytes from <RS> (2a03:4000:6:XXXX::1): icmp_seq=1 ttl=64 time=0.186 ms
    4. 64 bytes from <RS> (2a03:4000:6:XXXX::1): icmp_seq=2 ttl=64 time=0.082 ms
    5. 64 bytes from <RS> (2a03:4000:6:XXXX::1): icmp_seq=3 ttl=64 time=0.106 ms
    6. 64 bytes from <RS> (2a03:4000:6:XXXX::1): icmp_seq=4 ttl=64 time=0.079 ms
    7. ^C
    8. --- <RS> ping statistics ---
    9. 4 packets transmitted, 4 received, 0% packet loss, time 45ms
    10. rtt min/avg/max/mdev = 0.079/0.113/0.186/0.043 ms
    Code
    1. root@watson:~# ping6 2a03:4000:6:XXXX:1:242:ac11:2 # Root-Server zu Container
    2. PING 2a03:4000:6:XXXX:1:242:ac11:2(2a03:4000:6:XXXX:1:242:ac11:2) 56 data bytes
    3. 64 bytes from 2a03:4000:6:XXXX:1:242:ac11:2: icmp_seq=1 ttl=64 time=0.125 ms
    4. 64 bytes from 2a03:4000:6:XXXX:1:242:ac11:2: icmp_seq=2 ttl=64 time=0.167 ms
    5. 64 bytes from 2a03:4000:6:XXXX:1:242:ac11:2: icmp_seq=3 ttl=64 time=0.262 ms
    6. 64 bytes from 2a03:4000:6:XXXX:1:242:ac11:2: icmp_seq=4 ttl=64 time=0.123 ms
    7. ^C
    8. --- 2a03:4000:6:XXXX:1:242:ac11:2 ping statistics ---
    9. 4 packets transmitted, 4 received, 0% packet loss, time 76ms
    10. rtt min/avg/max/mdev = 0.123/0.169/0.262/0.057 ms


    Vielleicht kann mir ja jemand noch ein paar Denkanstöße geben oder sieht etwas, was ich schlicht übersehen habe! Vielen Dank :).


    [1] https://forum.netcup.de/admini…6-problem-auf-vps-system/

    [2] https://forum.netcup.de/admini…2-docker-extern-nur-ipv6/

    [3] https://forum.netcup.de/admini…ocker-container/?pageNo=1

    [4] https://www.netcup-wiki.de/wik…dresse_konfigurieren#IPv6


    Liebe Grüße
    Max

  • Vermutlich klemmt da die Firewall ip6tables -S

    Die Ausgabe lautet:

    Code
    1. root@host:~# ip6tables -S
    2. -P INPUT ACCEPT
    3. -P FORWARD ACCEPT
    4. -P OUTPUT ACCEPT


    Bei der IPv4 Variante von iptables sind deutlich mehr Einträge spezifisch für Docker enthalten:

  • Ich verstehe nicht ganz in wie weit das Problem etwas mit Netcup zu tun haben soll.

    Wenn du eine ipv6 Adresse hast und darüber erreichbar bist, passt doch schonmal alles seitens Netcup.

    Wenn du des Weiteren auch vom Server raus kommunizieren kannst, dann passt es mit den OS Einstellungen ebenfalls. Demnach muss es an deinen Docker Containern liegen und für mich wäre dann der nächste logische Schritt innerhalb eines Containers die ipv6 Kommunikation zu testen und dementsprechend zu handeln.


    Hast du ipv6 im Docker Daemon aktiviert und ein ipv6 Netzwerk erstellt?


    Edit: hast ja deinen Docker Eintrag gepostet hab ich erst jetzt gesehen. Daemon neugestartet danach?

  • Wenn du eine ipv6 Adresse hast und darüber erreichbar bist, passt doch schonmal alles seitens Netcup.

    Das Neighbor Discovery ist nicht so ganz ohne. Und er schreibt auch nirgens, dass dieses Problem etwas mit Netcup zu tun haben soll.


    Hast du ipv6 im Docker Daemon aktiviert und ein ipv6 Netzwerk erstellt?

    Hast du seinen Beitrag gelesen, oder nur die Überschrift?

  • Doch das tut er

    ... Dabei bin ich auf die Problematik mit Docker und IPv6 sowie Netcup gestoßen ...

    Ich habe meinem Beitrag lange (!) vor deinem Beitrag mit einem Edit versehen, wo ich darauf hingewiesen habe, dass ich den Eintrag überlesen habe.

    Jedoch frage ich mich was du mich hier so dumm von der Seite anmachst in beiden Dingen? Ist dir langweilig?

    Denn Dein Beitrag mit der Vermutung es läge an der Firewall, kann durch lesen des ersten Posts ausgeschloßen werden....

  • Ich habe meinem Beitrag lange (!) vor deinem Beitrag mit einem Edit versehen

    Zwischen deinem Beitrag und meinem Beitrag liegen fünf Minuten. Wo willst du da lange vor meinem Beitrag einen Edit plaziert haben?

    Meinst du ich drücke 60 Sekunden, bevor ich einen Antwort abschicke auf F5?



    Jedoch frage ich mich was du mich hier so dumm von der Seite anmachst in beiden Dingen? Ist dir langweilig?

    Klar mache ich dich Dumm von der Seite an - dass du mit deinen Beiträgen zeigst, dass du keine Ahnung hast - lassen wir dabei mal außen vor.



    Denn Dein Beitrag mit der Vermutung es läge an der Firewall, kann durch lesen des ersten Posts ausgeschloßen werden....

    Das musst du mir mal näher erklären. Ich kann da nur sehen, dass die Input und Output Chain einwandfrei funktionieren, es aber Probleme in der Forward Chain geben könnte.


    Beschäftige dich bitte damit, wie Netcup IPv6 Netze routet und wie dort das Neighbor Discovery und IMCPv6 mit reinspielt.

    Dann würdest du sehen, dass die Netze nicht einfach anliegen und deshalb bei Netcup VMs extra Einträge vorgenommen werden müssen.

  • Schau mal, wenn du nichts Sinnvolles beizutragen hast, lass es doch einfach sein. Vor Leuten wie Dir mache ich im echten Leben nur einen großen Bogen. Ich habe weder das Bedürfnis zu streiten, noch habe ich Zeit dazu.


    Ich wollte cltrmx lediglich helfen und bin mir ziemlich sicher, dass es an einem Docker Konfigurationsfehler liegt.


    Die Kommunikation des Host Systems ist laut cltrmx möglich und anhand von seiner Fragestellung war ich mir sicher, dass er nicht manuell in den iptables Änderungen vorgenommen hat und Docker schreibt diese je nach Konfiguration selbst (wie man bei den ipv4 sehen kann).

    Insofern an cltrmx die Frage:

    Wie hast du das ipv6 Netzwerk von Docker erstellt und wie sind deine Container konfiguriert.

  • Hallo ihr zwei,


    ich antworte einfach mal auf alle Fragen gemeinsam!


    Persönlich gehe ich eher davon aus, dass das ein Problem meiner Konfiguration ist! Seitens Netcup sollte alles funktionieren. Das Forum ist doch aber auch für allgemeine Anfragen gedacht oder habe ich das falsch verstanden?


    Die Container können untereinander und auch mit dem Host über IPv6 kommunizieren, wie oben beschrieben. Ja, IPv6 ist im Docker Daemon aktiviert, es existiert ein IPv6 fähiges Netzwerk (default Bridge für Testzwecke) und ich habe den Daemon und den Host anschließend neu gestartet.

    Quote

    Doch das tut er

    Da gebe ich dir Recht. Ich habe in einem anderen Beitrag (oben in meinem ersten Post verlinkt) gelesen, dass bei Netcup das Neighbor Discovery ein klein wenig anders läuft, als man standardmäßig vermuten könnte. Deswegen dachte ich Abhilfe durch ndppd zu schaffen.

    Quote

    Die Kommunikation des Host Systems ist laut cltrmx möglich und anhand von seiner Fragestellung war ich mir sicher, dass er nicht manuell in den iptables Änderungen vorgenommen hat und Docker schreibt diese je nach Konfiguration selbst (wie man bei den ipv4 sehen kann).

    Insofern an cltrmx die Frage:

    Wie hast du das ipv6 Netzwerk von Docker erstellt und wie sind deine Container konfiguriert.

    Korrekt, ich habe keine Änderungen in den iptables per Hand vorgenommen. Docker scheint bei mir keinerlei Einträge für IPv6 geschrieben zu haben. Wie kann ich dies denn aktivieren?


    Das IPv6-Netzwerk, welches ich zum Testen verwende, habe ich nicht per Hand erstellt (es ist das default Bridge Netzwerk). Untereinander können die Container kommunizieren. Ich habe noch keine Container speziell konfiguriert - Zum Testen habe ich mir z.B. einen Debian Container erstellt.

    Bevor ich mich an die spezielle Konfiguration des Wireguard-Containers mache, wollte ich eben erst einen möglichst sinnvollen Container haben, mit dem ich über IPv6 mit externen Hosts kommunizieren kann. (Der ursprüngliche Sinn meines Vorhabens war es ja, Wireguard mit IPv6 zu ermöglichen.)


    Danke euch beiden für eure Hilfe, H6G und christianr !

  • Dadurch, dass er Wireguard mit ipv4 bereits am Laufen hat, wird er dies wohl wissen und auch getan haben.

    cltrmx kannst du vom container auch raus pingen? (was ja die eigentliche frage ist - du hast nur einen ping innerhalb des netzwerkes gepostet)


    Die Frage wie das Docker Netzwerk und die Container konfiguriert wurden ist noch offen. Ist das Netzwerk als extern angelegt und bzw die/der Container? etc. pp.

  • Wireguard Container? Wireguard ist ein Kernelmodul, wie möchtest du das im Container nutzen? Oder willst du die Userspace Implementierung nutzen?

    Du musst vorher Wireguard (je nach Kernelversion) erst auf dem Host installieren.

    Es gibt Docker Container für Wireguard, die eine Verwendung erlauben, sofern der Host das entsprechende Kernelmodul geladen hat (z.B. dieser https://github.com/cmulk/wireguard-docker). Wie geschrieben, die IPv4-Variante funktioniert mit diesem Container bereits. Wie gesagt, um Wireguard und IPv6 kümmere ich mich aktuell noch gar nicht, weil IPv6 -> Internet aus keinem Container aktuell funktioniert. (Das ist nur das Ziel!)


    Quote

    cltrmx kannst du vom container auch raus pingen? (was ja die eigentliche frage ist - du hast nur einen ping innerhalb des netzwerkes gepostet)

    Genau das funktioniert noch nicht. Container -> Container funktioniert, Container -> Host funktioniert, Host -> Container funktioniert, Host -> Internet funktioniert aber Container -> Internet funktioniert nicht.

    Code
    1. root@8b2d80ebe680:/# ping6 google.com
    2. PING google.com(fra15s29-in-x0e.1e100.net (2a00:1450:4001:806::200e)) 56 data bytes
    Quote

    Die Frage wie das Docker Netzwerk und die Container konfiguriert wurden ist noch offen. Ist das Netzwerk als extern angelegt und bzw die/der Container? etc. pp.

    Ich verwende zum Testen die default-Bridge von Docker (siehe hier: https://docs.docker.com/network). Die Container-Konfiguration müsste aus meinem letzten Post hervorgehen (zum Testen quasi keine, der Container wird mit der default-Bridge verbunden.)

    Quote

    bridge: The default network driver. If you don’t specify a driver, this is the type of network you are creating. Bridge networks are usually used when your applications run in standalone containers that need to communicate.


    Konfiguration des Netzwerks:

  • Konfiguration des Containers:

    (Separater Post, weil zu lang.)