Docker and ipv6

  • Hi,


    nachdem ich heute viele Forenbeiträge durchforstet habe und es leider immer noch nicht klappt, würde ich hier gerne um Hilfe bitten.


    Ich versuche aktuell die Docker Container auf nem root server mit ipv6 zu verbinden.

    Hier meine bisherigen bemühungen:

    Als Erstes habe ich ipv6 wie hier beschrieben https://www.netcup-wiki.de/wik…nd_Ubuntu_.28bis_17.04.29 auf dem root server aktiviert
    Das ganze funktioniert wunderbar hier mal die aktuelle config.



    Code: /etc/sysctl.d/50-IPv6.conf
    net.ipv6.conf.default.accept_ra=0
    net.ipv6.conf.default.autoconf=0
    net.ipv6.conf.all.accept_ra=0
    net.ipv6.conf.all.autoconf=0
    net.ipv6.conf.eth0.accept_ra=0
    net.ipv6.conf.eth0.autoconf=0
    net.ipv6.conf.default.forwarding=1
    net.ipv6.conf.all.forwarding=1

    Mit der Config kann ich mittles ping6 google.de die v6 version von goolge erreichen

    Danach habe ich ipv6 für docker aktiviert:

    Code: /etc/docker/daemon.json
    {
        "ipv6":true,
        "fixed-cidr-v6":"2a03:4000:x:x:1::/80"
    }

    Danach waren meine container von meinerm host und umgekert über ip v6 erreichbar.


    Code
    docker run --rm -t busybox ping6 -c 4 2a03:4000:x:x::1
    PING 2a03:4000:x:x::1 (2a03:4000:x:x::1): 56 data bytes
    64 bytes from 2a03:4000:x:x::1: seq=0 ttl=64 time=0.263 ms
    64 bytes from 2a03:4000:x:x::1: seq=1 ttl=64 time=0.162 ms
    64 bytes from 2a03:4000:x:x::1: seq=2 ttl=64 time=0.145 ms
    64 bytes from 2a03:4000:x:x::1: seq=3 ttl=64 time=0.171 ms
    
    --- 2a03:4000:x:x::1 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 0.145/0.185/0.263 ms



    Allerdings kann ich aus meinen container nicht das v6 internet erreichen:


    Code
    docker run --rm -t busybox ping6 -c 4 google.com
    PING google.com (2a00:1450:4001:806::200e): 56 data bytes
    
    --- google.com ping statistics ---
    4 packets transmitted, 0 packets received, 100% packet loss


    Ab hier muss ich zugeben, dass ich keine Ahnung habe wie ich weiter vorgehen soll.

    In anderen Beiträgen wurde beschrieben das man die ipv6 neighbor discovery einschalten muss und ich habe das mit ndppd versucht, mit folgender config:

    Code: /etc/ndppd.conf
    proxy ens3 {
            router yes
            keepalive yes
            timeout 2000
            ttl 30000
            rule 2a03:4000:x:x:1::/80 {
                    auto
            }
    }

    Wo liegt mein Fehler?


    Hier noch ein paar vielleicht nützliche ausgaben:


    Code: ifconfig ens3
    ens3      Link encap:Ethernet  Hardware Adresse 26:8a:f6:9d:4f:95
              inet Adresse:188.68.40.x  Bcast:188.68.43.255  Maske:255.255.252.0
              inet6-Adresse: fe80::248a:f6ff:fe9d:4f95/64 Gültigkeitsbereich:Verbindung
              inet6-Adresse: 2a03:4000:x:x::1/64 Gültigkeitsbereich:Global
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
              RX-Pakete:72989 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
              TX-Pakete:9559 Fehler:0 Verloren:0 Überläufe:0 Träger:0
              Kollisionen:0 Sendewarteschlangenlänge:1000
              RX-Bytes:5871835 (5.8 MB)  TX-Bytes:2082875 (2.0 MB)
    Code: ifconfig docker0
    docker0   Link encap:Ethernet  Hardware Adresse 02:42:b6:65:36:6f
              inet Adresse:172.17.0.1  Bcast:172.17.255.255  Maske:255.255.0.0
              inet6-Adresse: fe80::42:b6ff:fe65:366f/64 Gültigkeitsbereich:Verbindung
              inet6-Adresse: fe80::1/64 Gültigkeitsbereich:Verbindung
              inet6-Adresse: 2a03:4000:x:x:1::1/80 Gültigkeitsbereich:Global
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
              RX-Pakete:99 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
              TX-Pakete:112 Fehler:0 Verloren:0 Überläufe:0 Träger:0
              Kollisionen:0 Sendewarteschlangenlänge:0
              RX-Bytes:6763 (6.7 KB)  TX-Bytes:14160 (14.1 KB)
    Code: ip -6 n
    fe80::42:acff:fe11:2 dev docker0 lladdr 02:42:ac:11:00:02 STALE
    fe80::22d8:b00:7eee:ff4 dev ens3 lladdr 2c:6b:f5:a0:77:c0 router STALE
    fe80::22d8:b00:7efa:424c dev ens3 lladdr 10:0e:7e:26:f1:c0 router STALE
    2a03:4000:x::3 dev ens3  FAILED
    2a03:4000:x:x:1:242:ac11:3 dev docker0  FAILED
    fe80::42:acff:fe11:3 dev docker0 lladdr 02:42:ac:11:00:03 STALE
    fe80::fc8a:f6ff:fe9d:4f95 dev ens3 lladdr fe:8a:f6:9d:4f:95 STALE
    fe80::1 dev ens3 lladdr 00:00:5e:00:02:02 router STALE
    2a03:4000:x:x:1:242:ac11:2 dev docker0 lladdr 02:42:ac:11:00:02 STALE
  • Die Firewall hast du entsprechend konfiguriert, dass Forwarding auf die docker hosts erlaubt ist?


    ndp ist nötig, das hast du ja schon herausgefunden. Aber dass es trotzdem zu Paketverlusten beim Zugriff auf intern genutzt IPv6 Adressen kommt, hast du auch gelesen?

  • Die Firewall hast du entsprechend konfiguriert, dass Forwarding auf die docker hosts erlaubt ist?

    Hi wahrscheinlich nicht wie mache ich das ?


    Aber dass es trotzdem zu Paketverlusten beim Zugriff auf intern genutzt IPv6 Adressen kommt, hast du auch gelesen?

    Nein das wusste ich nicht was wäre hier die alternative?

  • Hi wahrscheinlich nicht wie mache ich das ?

    Das kommt auf die Firewall an, die du nutzt. iptables, ufw, nftables, ... Irgendwas wirst du ja eingerichtet haben, um dein System vor Zugriffen von außen zu schützen. Immer dran denken, bei netcup gibt es keine Systemfirewall oder sowas. Im Schnitt wird dein System 1x pro Sekunde attackiert. Du hast doch eine Firewall eingerichtet, oder? Ansonsten weißt du ja nun, was du vor deinen IPv6 Versuchen zu tun hast.


    Nein das wusste ich nicht was wäre hier die alternative?

    Es gab einige Versuche mit Scripten, die in regelmäßigen Abständen Datenverkehr von den betroffenen IPs erzeugten, um die Neighbor Tabellen in der netcup Infrastruktur aktuell zu halten. Diesem Ansatz liegt die Vermutung zugrunde, dass diese Tabellen die Ursache für das Problem sind, was nicht abschließend geklärt ist.-


    Wirklich gut funktioniert es nur mit einem zusätzlichen /64 Netz, was man sich auf den Server routen lässt. Dann braucht man weder ndppd noch gibt es Probleme mit Paketverlusten.

  • Ok habs hinbekommen.


    Das Ganze ist ein kleiner Server zum Herumspielen von mir und einem Freund, der hatte das damals eingerichtet.


    Es gibt in docker ein setting mit dem man ip6table automatisch konfigurieren kann

    Code
    {
      "experimental": true,
      "ipv6":true,
      "fixed-cidr-v6":"2a03:4000:17:45:1::/80",
      "ip6tables": true
    }


    Das hat das Problem gelöst.

    Das mit dem zusätzlich /64 netz merke ich mir, danke :)

  • Das Ganze ist ein kleiner Server zum Herumspielen von mir und einem Freund, der hatte das damals eingerichtet.

    Das sind die beliebtesten Ziele für Hacker, die den Server dann dafür nutzen, um SPAM zu versenden oder für Botnetze. Anschließend landen die Netcup Subnetze dann wieder auf irgendwelchen Blacklisten, worunter dann alle leiden.

    Denk dran: Du bist verantwortlich für deinen Server und all den Unfug, den andere damit machen. Das kann im Zweifel sehr teuer werden. Und daran, wie oft Netcup auf solchen Blacklisten landet, erkennt man, wie häufig es in der Praxis tatsächlich vorkommt. Das ist keine Panikmache oder so. Sieh dich im Forum um, es ist voll davon.