Proxmox IPv6

Lintu

Registered User
Hallo zusammen

Ich bin schon seit letzter Woche am testen wie ich IPv6 auf meinem Proxmox Server für den Host als auch die VM's zum laufen kriege.

Mein IPv6 64er Netz: 2a00:c1e0:0000:0003:0000:0000:0002:xxxx/64
Der Gateway ist unter folgender Adresse erreichbar: 2a00:c1e0:0000:0003:0000:0000:0000:0001

Meine /etc/network/interfaces:
Code:
auto lo
iface lo inet loopback

auto vmbr0
iface vmbr0 inet static
	address xxx.xxx.xxx.xxx
	netmask 255.255.255.128
	gateway xxx.xxx.xxx.xxx
	bridge_ports eth0
	bridge_stp off
	bridge_fd 0
	up route add -host xxx.xxx.xxx.xxx dev vmbr0

iface vmbr0 inet6 static
	address 2a00:c1e0:0000:0003::2:1
	netmask 64
	gateway 2a00:c1e0:0000:0003::1

Code:
root@host01:~# /etc/init.d/networking restart
Running /etc/init.d/networking restart is deprecated because it may not re-enable some interfaces ... (warning).
Reconfiguring network interfaces...Device "vmbr0" does not exist.

Waiting for vmbr0 to get ready (MAXWAIT is 2 seconds).
done.

Code:
root@host01:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:24:81:d1:2f:a5
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:149 errors:0 dropped:0 overruns:0 frame:0
          TX packets:116 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:27810 (27.1 KiB)  TX bytes:76951 (75.1 KiB)
          Interrupt:17

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:901 errors:0 dropped:0 overruns:0 frame:0
          TX packets:901 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1097378 (1.0 MiB)  TX bytes:1097378 (1.0 MiB)

tap102i0  Link encap:Ethernet  HWaddr 56:d1:d8:0e:0d:1d
          inet6 addr: fe80::54d1:d8ff:fe0e:d1d/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:63245 errors:0 dropped:0 overruns:0 frame:0
          TX packets:223101 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:11192404 (10.6 MiB)  TX bytes:19985717 (19.0 MiB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet6 addr: fe80::1/128 Scope:Link
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:3 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

vmbr0     Link encap:Ethernet  HWaddr 00:24:81:d1:2f:a5
          inet addr:xxx.xxx.xxx.xxx  Bcast:xxx.xxx.xxx.xxx  Mask:255.255.255.128
          inet6 addr: fe80::224:81ff:fed1:2fa5/64 Scope:Link
          inet6 addr: 2a00:c1e0:0:3::2:1/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:150 errors:0 dropped:0 overruns:0 frame:0
          TX packets:109 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:25132 (24.5 KiB)  TX bytes:76046 (74.2 KiB)

Ein anpingen von Google klappt nicht...

Code:
root@host01:~# ping6 ipv6.google.com
PING ipv6.google.com(mil01s25-in-x0e.1e100.net) 56 data bytes
From 2a00:c1e0:0:3::2:1 icmp_seq=2 Destination unreachable: Address unreachable

Auch der Gateway kann ich nicht anpingen

Code:
root@host01:~# ping6 2a00:c1e0:0000:0003::1
PING 2a00:c1e0:0000:0003::1(2a00:c1e0:0:3::1) 56 data bytes
From 2a00:c1e0:0:3::2:1 icmp_seq=2 Destination unreachable: Address unreachable

Hat hier jemand einen Denkanstoss was ich noch ausprobieren kann? Bin im Moment mit meinem Latein am ende.

P.S Gibt es eine Möglichkeit welche die config nach 5 Minuten automatisch zurücksetzt und neu startet falls man was falsch macht? Dachte da gab es mal was.
 

MadMakz

Member
Beachte bei einem Hetzner-Server das es lt. deren Wiki nicht funktioniert bzw. IPv6 dort nicht geteilt werden können. Ich schätze mal das, wie bei IPv4 dort, auch das IPv6/64 an nur eine MAC gebunden werden kann.

Hier meine Config:

sysctl.conf:
Code:
net.ipv6.conf.all.forwarding=1
Code:
:~# sysctl -p /etc/sysctl.conf

interfaces als Beispiel:

Code:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto eth1
iface eth1 inet manual

auto vmbr0
iface vmbr0 inet static
        address  84.x.y.z
        netmask  255.255.255.0
        gateway  84.x.y.1
        broadcast  84.x.y.255
        bridge_ports eth0
        bridge_stp off
        bridge_fd 1
        bridge_hello 2
        bridge_maxage 12

iface vmbr0 inet6 static
        address 2001:1608:10:0xyz:0000:0000:0000:abc
        netmask 64
        up ip -6 route add 2001:1608:0010:0xyz:0000:0000:0000:0001 dev vmbr0
        up ip -6 route add default via 2001:1608:0010:0xyz:0000:0000:0000:0001 dev vmbr0
        down ip -6 route del default via 2001:1608:0010:0xyz:0000:0000:0000:0001 dev vmbr0
        down ip -6 route del 2001:1608:0010:0xyz:0000:0000:0000:0001 dev vmbr0

2001:1608:0010:0xyz:0000:0000:0000:0001 = Gateway

Beim Bridged interface ist es übrigens nicht notwendig das der Host eine IPv6 Adresse hat. Du kannst deine IPv6 direkt in der/den VM's konfigurieren.

...
Alternativ kann man auch einen älteren Kernel installieren.
Oder, wenn du OVZ nicht brauchst, garnicht erst den pve-Kernel.
 
Last edited by a moderator:
M

Manu

Guest
Code:
iface vmbr0 inet6 static
	address 2a00:c1e0:0000:0003[B][U]::2:1[/U][/B]
	netmask 64
	gateway 2a00:c1e0:0000:0003::1

Hier liegt ein kleiner Fehler vor, woran es liegen wird.
Was ich auch deutlich gekennzeichnet habe.
 

MadMakz

Member
Ist kein Fehler.

Demnach wird

Adresse zu 2a00:c1e0:0000:0003:0000:0000:0002:0001
Gateway zu 2a00:c1e0:0000:0003:0000:0000:0000:0001

Bei mir würde mein Debian mäckern wenn ich die kurze schreibweise benutze.
 
Last edited by a moderator:

Lintu

Registered User
Welchen Kernel setzt Du ein? In dem "neusten" (2.6.32-37) gibt es einen Bug.
https://bugzilla.proxmox.com/show_bug.cgi?id=600

Folgendes scheint bei einigen geholfen zu haben:
Code:
echo 0 > /sys/class/net/vmbr0/bridge/multicast_snooping
Alternativ kann man auch einen älteren Kernel installieren.

Funktioniert soweit bis ich das networking neu starte. Dann finde ich wieder einer 1 in der Datei. Aber solange ich nicht neu starte funktioniert es.

@MadMakz Es handelt sich um keinen Server bei Hetzner

IPv6 Adressen lieber gekürzt oder ausgeschrieben in den configs?
 

MadMakz

Member
Funktioniert soweit bis ich das networking neu starte. Dann finde ich wieder einer 1 in der Datei. Aber solange ich nicht neu starte funktioniert es.
Code:
 up echo 0 > /sys/class/net/vmbr0/bridge/multicast_snooping
in interfaces
 

Lintu

Registered User
Hallo zusammen

Mitlerweile läuft IPv4 und IPv6 zusammen sowohl auf dem Host als auch auf den KVM Guest. Vielen Dank nochmal für den Hinweiss zum Bug.

Ich habe nun noch einen IPv6 Only KVM Guest erstellt. Nun musste ich aber leider feststellen das noch nicht so viel per IPv6 erreichbar ist wie ich mir gehofft habe. :eek:

Nun gibt es meiner Ansicht nach zwei Möglichkeiten dieses Problem zu beheben:

1. IPv4 vom Host per socat auf IPv6 des Guest weiterleiten. Also einfach die benötigten Ports. Ich habe das mal mit folgendem Befehl kurz erfolglos getestet:

socat TCP4-LISTEN:9022,fork,su=nobody TCP6:[2a00:c1e0:0:3::2:3]:22

/etc/network/interface vom Guest:

Code:
auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet6 static
address 2a00:c1e0:0:3::2:3
netmask 64
gateway 2a00:c1e0:0:3::2:1
dns-nameservers 2001:4860:4860::8888

2. Internes Netz auf Basis IPv4 aufbauen mit welchem die VM's und der Host untereinander kommunizieren können. Dann kann man von der Externen IP vom Host auf die Interne vom Guest weiterleiten.

Gehe ich richtig der Annahme das ich folgendes in der interfaces vom Host hinzufügen muss und dann bei Proxmox beide Interfaces für den Guest auswählen muss und jedem Guest noch eine IP zuordnen kann:

Code:
auto vmbr1
iface vmbr1 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    bridge_ports none
    bridge_stp off
    bridge_fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward

Welche möglichkeit wäre die bessere und wo liegen meine Fehler?
 
Top