Docker mit zusätzlichem IPv6-Subnetz

  • Hallo,

    ich hänge hier derzeit an einer Herausforderung, welche ich vormals unter Proxmox schnell lösen konnte....aber mit Docker schlich nicht hinbekomme.

    Ich verfremde natürlich die nachfolgenden Bezeichnungen.

    Ausgangssituation auf einem Debian 13:

    Es besteht ein zusätzliches, gekauftes IPv6-Subnetz: ABCD:ABCD:AA:BBB::/64

    Es existiert "as usual" die dazugehörige Routing-IPv6 gemäß SCP.

    Ich habe in der /etc/network/interfaces "as usual" folgende Einträge hinzugefügt:

    post-up ip -6 address add <Routing-IPv6>/128 dev ens3

    pre-down ip -6 address del <Routing-IPv6>/128 dev ens3

    Ich habe ebenso "as usual" unter /etc/sysctl.d/99-Blubb-ipv6.conf das Forwarding aktiviert und ist bestätigt auch nach Reboot aktiv:

    net.ipv6.conf.all.forwarding=1

    ->bei Debian 13 wird nicht mehr die /etc/sysctl.conf verwendet, sondern es ist /etc/sysctl.d/ zu verwenden.


    Im Anschluss habe ich unter Docker ein gebridgtes und IPv6-fähiges Netzwerk "Super-Network" erstellt:
    docker network create --driver bridge --ipv6 --subnet ABCD:ABCD:AA:BBB::/64 --gateway ABCD:ABCD:AA:BBB::1 Super-Network

    und anschließend meine Container dort hinein gepackt.

    Gemäß "docker inspect Super-Network" läuft da auch alles, Gateway ist drin und alle Container haben von Docker eine IPv6 aus dem Subnet zugewiesen bekommen

    Ergebnis:

    1. Der Docker-Host kann das Gateway als auch alle dahinterliegenden Container des "Super-Network" per IPv6 erreichen
    2. Ein Container (bspw. ein temporäres Ubuntu und direkt in dessen Shell) aus dem "Super-Network" kann das Internet problemlos per IPv6 erreichen...funktioniert alles!
    3. Aus dem Internet ist das Gateway ABCD:ABCD:AA:BBB::1 ebenso erreichbar
    4. Aber die dahinterliegenden Container (bspw. ABCD:ABCD:AA:BBB::2) sind aus dem Internet nicht erreichbar.

    Es funktioniert also prinzipiell alles, nur dass ich von außerhalb des Dockers-Hosts nicht über das Gateway des "Super-Network" eingehend hinwegkomme.

    Ein tcpdump auf das Gateway ABCD:ABCD:AA:BBB::1 zeigt, dass ein ICMP Ping auf die dahinterliegende bspw. ABCD:ABCD:AA:BBB::2 eingeht und mir wird entsprechend angezeigt:

    ABCD:ABCD:AA:BBB::1 > ABCD:ABCD:AA:BBB::2

    Mache ich ein tcpdump auf den dahinterliegenden Container ABCD:ABCD:AA:BBB::2....kommt da aber nichts an.

    Ich tüdel hier seit 2 Tagen rum, habe mich von einer KI mit ip6tables belabern lassen....aber es funktioniert nicht.

    Selbst das setzen von ip6tables "lass alles einfach durch" führt hier zu keiner Änderung.

    Ich hab bestimmt schon 12x den Snapshot wieder "alles auf Anfang" zurückspielt, aber ich finde den Fehler nicht.

    Gibt es hier jemanden, der Docker funktional mit einem zusätzlichen IPv6-Subnetz nutzt und mir meinen Denkfehler aufzeigt? :)


    Grüße

    Einmal editiert, zuletzt von -Manu- (24. November 2025 um 12:57)

  • Ich könnte mir vorstellen, dass die dedizierte Routing Adresse aus dem Zielsubnetz auf einem Interface außerhalb des eigentlichen docker Adapters Ärger macht. Das Gateway muss ja nicht aus dem Zielsubnetz sein, ich würde da die link-lokale Adresse des Docker Bridge Devices auf dem Host nehmen.

  • Ich hab es hinbekommen :!:

    Meine oben genannten Punkte bleiben bestehen, aber:


    STREICHE:

    docker network create --driver bridge --ipv6 --subnet ABCD:ABCD:AA:BBB::/64 --gateway ABCD:ABCD:AA:BBB::1 Super-Network

    SETZE:

    docker network create --driver bridge -o com.docker.network.bridge.gateway_mode_ipv6=routed --ipv6 --subnet ABCD:ABCD:AA:BBB::/64 --gateway ABCD:ABCD:AA:BBB::1 Super-Network

    Im Anschluss daran funktioniert alles, wie es soll.


    Nach Bedarf kann nun den Containern entweder eine feste IPv6 aus dem Subnetz zugewiesen werden (bspw. einem ReverseProxy), ansonsten verteilt Docker automatisch entsprechende IPv6-Adressen an diese.