Heute geht’s mit Proxmox weiter in meiner Reihe „IPv6„. Damit hätten wir dann auch bereits 2 sehr wichtige Systeme auf IPv6 erreichbar gemacht und diese können dementsprechend auch nach außen über IPv6 erreichbar gemacht werden.
Ich gehe hier natürlich davon aus, dass Ihr bereits ein laufendes Proxmox System auf IPv4 Basis habt und euch am Server ein 64er IPv6 Subnet zur Verfügung steht.
Den Proxmox Host für IPv6 vorbereiten
Hier ist gar nicht so viel zu tun.
In /etc/sysctl.conf zuerst folgende Zeile einfügen
[su_note note_color=“#c1c1b6″]
net.ipv6.conf.all.forwarding=1
[/su_note]
Dann genau das gleiche erneut um es sofort aktiv zu setzen
[su_note note_color=“#c1c1b6″]
sysctl -w net.ipv6.conf.all.forwarding=1
[/su_note]
Als nächstes braucht Ihr eine fixe IPv6 für den Proxmox Host. Diese wird dann einfach als IPv6 in die /etc/network/interfaces eingetragen.
Sollte in etwas so aussehen:
[su_note note_color=“#c1c1b6″]
iface eth0 inet6 static address 2a01:4f8:201:806b::2 netmask 128 up sysctl -p gateway fe80::1
[/su_note]
das restliche Subnetz kann man nun ganz entspannt auf die Bridge leiten.
[su_note note_color=“#c1c1b6″]
ip -6 route add 2a01:4f8:201:806b::/64 dev vmbr0
[/su_note]
Wenn die Bridge bei euch anders heißt dann solltet Ihr den Befehl natürlich anpassen aber ich gehe ohnehin nicht davon aus, dass man einfach Blind irgendwas kopiert 😉
Nun noch eine IPv6 für die Bridge vergeben
[su_note note_color=“#c1c1b6″]
iface vmbr0 inet6 static pre-up /sbin/modprobe -q ipv6 ; /bin/true address 2a01:4f8:201:806b::3 netmask 64 up ip route add IP.v4.local.route dev vmbr0 up ip -6 route add 2a01:4f8:201:806b::/64 dev vmbr0
[/su_note]
Das wars auch auf der Konsole. Der Rest funktioniert über die Proxmox GUI.
Proxmox Container eine IPv6 zuweisen über das Webinterface
Hier wird einfach über die Proxmox Weboberfläche eine Netzwerkkarte bearbeitet und eine IPv6 eingetragen. Die sollte, logischerweise aus dem Subnet sein welches wir vorhin auf die vmbr0 geroutet haben und als CIDR das /64.
Als Gateway entsprechend die vergebene IPv6 der Bridge vom Proxmox Host.
Anschließend den Container einmal rebooten und dann mittels ifconfig schauen ob die IP da ist.
Meine Ausgabe sieht so aus
[su_note note_color=“#c1c1b6″]
eth0 Link encap:Ethernet HWaddr be:8d:c7:4d:3d:0a inet addr:192.168.0.150 Bcast:192.168.0.125 Mask:255.255.255.255 inet6 addr: 2a01:4f8:201:806b::4/64 Scope:Global inet6 addr: fe80::bc8d:c7ff:fe4d:3d0a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:22273666 errors:0 dropped:0 overruns:0 frame:0 TX packets:21461162 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6469204784 (6.0 GiB) TX bytes:31135892542 (28.9 GiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:32595002 errors:0 dropped:0 overruns:0 frame:0 TX packets:32595002 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:25952130355 (24.1 GiB) TX bytes:25952130355 (24.1 GiB)
[/su_note]
Tada! Das wars schon. Nun hat mein Container neben einer IPv4 auch noch die entsprechende IPv6 im Proxmox Container.
Mit einem KVM System funktioniert das ganze Analog.
Solltet Ihr ein Privates IPv6 Subnetz verwenden vergesst nicht die Masquerade IPv6 Regeln im iPtables.
Und vergesst in einem Produktiven System nur nicht den AAAA Eintrag auf die IPv6 und den Reverse Eintrag der IPv6 bei euren DNS Einstellungen / Registrar sonst geht es euch unter Umständen wie Google 😆
hallo sehr interesant aber leider bekomme ich es einfach nicht hin bei mir 🙁
Lg. Alfred
Hi Alfred,
ich habe dir auf deine Mail geantwortet. Geht nicht gibt es nicht 🙂
Also ich habe die Anleitung genau so befolgt, aber die VMs/Container haben erst Netzwerkzugriff via IPv6 wenn ich masquerading an mache (via iptables)
allerdings funktioniert dann auch nur ipv6 ausgehend, eingehend funktionierts trotzdem nicht 🙁
Was sagt denn deine Routingtabelle? Was für ein V6 Netz hast du? Ein private oder Public?
Ist ein Public Netz, und wenn ich dann masquerade mache sind ausgehende pakete natürlich auch von der IP die ich eth0 des hosts zugewiesen habe. Intern können sich die container wunderbar hin und her pingen (außer die eth0 ip vom host)
routing tabelle: https://pastebin.com/6GS1HGm9
Welche IPs sind denn den Containern zugewiesen?
Wie sieht da das Routing aus? Wenn die IP Public aus dem Internet erreichbar sind dann ist kein Masquerade notwendig.
Kannst du mal die Configs posten vom Host und vom Container?
Hallo,
ich versuche jetzt schon seit vielen Stunden auf einem Hetzner Server IPv6 zum Laufen zu bringen. Habe auch bei Hetzner eine Anleitung gefunden, die Bestätigt, dass es so wie in Deiner Anleitung beschrieben, funktionieren sollte. Tut es aber nicht 🙁
Meine /etc/network/Interfaces am Host:
### Hetzner Online GmbH installimage
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
iface lo inet6 loopback
auto enp2s0
iface enp2s0 inet static
address XXX.XXX.XXX.163
netmask 255.255.255.255
pointopoint XXX.XXX.XXX.129
gateway XXX.XXX.XXX.129
iface enp2s0 inet6 static
address 2a01:4f8:212:XXXX::2
netmask 128
gateway fe80::1
up sysctl -p
# fuer Einzel-IPs
auto vmbr0
iface vmbr0 inet static
address XXX.XXX.XXX.163
netmask 255.255.255.255
bridge_ports none
bridge_stp off
bridge_fd 0
up ip route add XXX.XXX.XXX.188/32 dev vmbr0
up ip route add XXX.XXX.XXX.189/32 dev vmbr0
iface vmbr0 inet6 static
address 2a01:4f8:212:XXXX::3
netmask 64
up ip -6 route add 2a01:4f8:212:XXXX::/64 dev vmbr0
net.ipv6.conf.all.forwarding=1
Ist aktiv.
Am Gast hab ich als IP die 2a01:4f8:212:XXXX::100 und als Gateway 2a01:4f8:212:XXXX::2 eingetragen.
Von außen kann ich die 2a01:4f8:212:XXXX::2 anpingen, die 2a01:4f8:212:XXXX::3 oder gar die 2a01:4f8:212:XXXX::100 nicht.
Von der VM kann ich die 2a01:4f8:212:XXXX::3, die 2a01:4f8:212:XXXX::2 oder eine externe IPv6 Adresse nicht.
Vom Host System aus kann ich die ::2, ::3 und die ::100 anpingen.
Was sagt denn das Routing? Ich würde sagen da fehlen die Routen auf die Bridge auch wenn diese laut config gesetzt werden
Moin,
ist zwar schon ein recht alter post aber Ich hoffe mir kann trotzdem jemand helfen.
Ich bekomme einfach keine Verbindung hin.
Interfaces ist konfiguriert:
iface eth0 inet6 static
address 2a01:xx:x:xx::1/64
gateway 2a01:xx:x:xx::
netmask 64
up sysctl -p
iface vmbr0 inet6 static
pre-up /sbin/modprobe -q ipv6 ; /bin/true
address 2a01:xx:x:xx::2/64
netmask 64
up ip -6 route add 2a01:xx:x:xx::/64 dev vmbr0
ip -6 route list
2a01:xx:x:xx::/64 dev eth0 proto kernel metric 256 pref medium
2a01:xx:x:xx::/64 dev vmbr0 proto kernel metric 256 pref medium
2a01:xx:x:xx::/64 dev vmbr0 metric 1024 pref medium
default via 2a01:xx:x:xx:: dev eth0
sobald ich net.ipv6.conf.all.forwarding auf 1 setzte hat mein host keine Verbindung mehr über IPv6.
2a01:xx:x:xx::1 ist eine öffentliche IP von meinem hoster. Ich habe auch die Möglichkeit weitere IPv6 Adressen zu erstellen. (2a01:xx:x:xx::2, 2a01:xx:x:xx::3)
Hoffe mir kann einer helfen <3
Hi, du routest hier das gesamte subnet auf die vmbr0 …. logische Konsequenz ist eigentlich dass der Host auf deiner eth0 keine ipv6 mehr hat.
Entweder schneidest du also ein Netz heraus aus deinem Subnet oder du trägst nur einzelne IPs mittels /128 ein.
Früher hat das mal funktioniert mit dem 64er Subnet aber da wurde in Proxmox wohl generell vieles überarbeitet