proxmox und ipv6 in lxc containern

  • Hi :)

    Ich habe auf meinem netcup root server proxmox installiert, wo dann wiederum einige lxc container am laufen sind.

    Nun habe ich folgendes Problem: Wie bekomme ich ipv6 auf die container?


    Dem Host ipv6 Adresse zuzuweisen ist kein Problem, allerdings einfach dem container in seiner config zu sagen du hast jetzt ipv6 adresse xyz funktioniert nicht.

    Proxmox übernimmt die Einstellung dafür nichtmal, vielleicht, weil es mit dem gateway fe80::1 nicht einverstanden ist?


    Hat jemand damit schon erfahrung gemacht, und eine etvl. eine Problemlösung parat?

  • Hallo,


    fe80::1 als Gateway für die LXC Gäste wird schwierig. Der Proxmox Host muss Gateway sein.

    Dazu muss IPv6 Forwarding im Kernel aktiviert sein, deine Firewall muss ein Forwarding erlauben, und du benötigst einen 'Neighbor Discovery Proxy'


    Für die Rückroute müssen die Routen auf dem Proxmox Host stimmen.

  • Was auch geht und nicht viel Konfiguration benötigt ist ein zusätzliches IPv6 Subnet. Vorteil ist, dass dieses ein geroutetes Subnet ist.

    Ich hab IPv4 über NAT und IPv6 über ein zusätzliches Subnet laufen. Beide über das gleiche interne Interface. Funktioniert wunderbar.

  • Ich nutze für sowas immer den dort erwähnten ndppd mit der Proxmox IP als Gateway.

    Also einfach auf dem Host ndppd installieren, in der config dann mein ipv6 /80 netz eintragen, und unter proxmox einfach die adressen verteilen, ndppd macht dann den rest automatisch?

  • Also einfach auf dem Host ndppd installieren, in der config dann mein ipv6 /80 netz eintragen, und unter proxmox einfach die adressen verteilen, ndppd macht dann den rest automatisch?

    Bei Einsatz von ndppd trägst Du dort alle IPs ein, die Du verwenden willst. Das ist vollkommen unabhängig davon, welches Subnetz in den VMs verwendet wird. ndppd sorgt nur dafür, dass die IPv6 Pakete bei Dir ankommen. Was Du danach damit machst ist Dir überlassen. Ich setze grundsätzlich nichts kleineres als /64 mehr ein.

  • Ich kriege es irgendwie nicht hin.


    Ich habe folgendes gemacht:


    Beim proxmox host:

    - ip -6 addr add 2a03:4000:XXXX:XXXX:1::1/80 dev vmbr0

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

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


    ndppd.conf

    route-ttl 30000

    proxy vmbr0 {

        router no

        timeout 500

        ttl 30000

        rule 2a03:4000:xxxx:xxxx:1::/80 {

        static

        }

    }



    Bei dem container:

    pasted-from-clipboard.png



    Damit kann ich schon mal zwischen Host und Container pingen, allerdings komme ich nicht vom Container aus in's www.


    root@name:~# traceroute6 2a00:1450:4001:821::200e

    traceroute to 2a00:1450:4001:821::200e (2a00:1450:4001:821::200e) from 2a03:4000:xxxx:xxxx:1::2, 30 hops max, 24 byte packets

     1  2a03:4000:xxxx:xxxx:1::1 (2a03:4000:xxxx:xxxx:1::1)  0.119 ms  0.126 ms  0.031 ms

     2  *^C

  • Nein, vmbr0 ist eine Bridge, die man für die LXC Container braucht.




  • Warum zensierst du RFC1918 Adressen?

    In die ndppd.conf müsste eigentlich das Public Interface rein (ens3), du willst ja die ND Pakete von Netcup beantworten.

    Die Netzmaske von ens3 schließt die /80er Subnetze mit ein. Diese müsste auch /80 lauten.


    Wenn nichts geht würde ich auch eine ip6tables Rule setzen, damit das Forwarding klappt.

  • Überprüfe mal ob folgende Werte in sysctl jeweils 0 sind:


    net.ipv6.conf.all.accept_ra = 0

    net.ipv6.conf.default.accept_ra = 0

    net.ipv6.conf.ens3.accept_ra = 0

    net.ipv6.conf.lo.accept_ra = 0

    net.ipv6.conf.default.autoconf=0

    net.ipv6.conf.all.autoconf=0


    Zu der NDP Proxy Konfiguration:


    rule 2a03:4000:xxxx:xxxx:1::/80


    Trage wie ich gesagt habe jede IP die nicht auf ens3 liegt mit einer Netzmaske von /128 ein. Sonst läufst Du Gefahr, dass sowohl Deine Kernel Routingtabelle, als auch die vom Netcup Router voll läuft und das wäre sehr schlecht.

  • Du hast noch einen Konfigurationsfehler drin: gateway fe80::1 auf der vmbr0 kann nicht funktionieren. Du musst IPv6 link-local über ens3 routen. Auf der vmbr0 hast Du ja keinen extra Router laufen.

  • Trage wie ich gesagt habe jede IP die nicht auf ens3 liegt mit einer Netzmaske von /128 ein. Sonst läufst Du Gefahr, dass sowohl Deine Kernel Routingtabelle, als auch die vom Netcup Router voll läuft und das wäre sehr schlecht.

    Er möchte ja nicht jede Adresse im Proxy eintragen. /120 fände ich da sinnvoller - wozu aber dann das 64er Netz so grob zerschnippeln, wenn man auch feiner granuliern könnte?

    Ich denke nicht, dass die Netcup Router da die Hufen hochreißen. Stell dir mal vor jmd. nutzt sein 64er Block ausgiebig.



    Du hast noch einen Konfigurationsfehler drin: gateway fe80::1 auf der vmbr0 kann nicht funktionieren.

    Stimmt. Habe ich sogar übersehen.