Hallo, ich kämpfe gerade mit mehreren Themen gleichzeitig und komme einfach nicht weiter.
Ich hab einen Server bei Hetzner mit einem ipv6-Subnetz (a:b:c:d::/64), und mehreren, zusätzlichen Einzel-IPv4-Adressen. Ich virtualisiere auf diesem Host mit KVM und hab die Einzel-IPv4-Adressen bisher direkt über eine Bridge verwendet - so weit so gut. Nun möchte ich verstärkt auf ipv6 umschwenken. Die bereits verwendeten ipv4-Adressen möchte ich wie gehabt weiterverwenden. Für jede einzelne ipv4, die ich bei Hetzner gemietet habe, habe ich auch eine virtuelle MAC anfordern können, die ich bei der Verwendung der Bridge benötige, weil nur Pakete mit diesen MACs oder der MAC des Hosts vom Hetzner-Netz transportiert werden. Für das komplette ipv6-Netz gibts aber keine zusätzlichen MACs, weshalb Hetzner für das ipv6-Subnetz Routing empfiehlt. Die ipv4-Adressen will ich allerdings nicht routen, weil der Host bei deren Nutzung völlig transparent sein soll (auch bei einem traceroute); die bestehende Bridge br0 brauch ich also weiterhin.
Deshalb hab ich versucht, mir von libvirt ein zusätzliches geroutetes Netz (virbr2) an die bereits bestehende Bridge br0 generieren zu lassen (in der Hoffnung, dass alle erforderlichen Routen von libvirt selbst erzeugt werden). Das funktioniert so aber nicht.
Die netplan-Konfig auf dem Host sieht aus wie folgt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | network: version: 2 renderer: networkd ethernets: eno1: match: macaddress: <mac> dhcp4: no dhcp6: no bridges: br0: macaddress: <mac> interfaces: [eno1] dhcp4: no dhcp6: no addresses: - <externeipv4> - a:b:c:d::2/64 routes: - to: 0.0.0.0/0 via: <ipv4-gateway> on-link: true # - to: a:b:c:d::affe/128 # scope: link gateway6: fe80::1 nameservers: addresses: <ipv4 und ipv6-nameserver> |
virtlib xml's auf dem Host:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <network connections="1"> <name>host-bridge</name> <forward mode="bridge"/> <bridge name="br0"/> </network> <network connections="1"> <name>br_ipv6network</name> <forward dev="br0" mode="route"> <interface dev="br0"/> </forward> <bridge name="virbr2" stp="on" delay="0"/> <mac address="mac2"/> <domain name="br_ipv6network"/> <ip family="ipv6" address="a:b:c:d::1" prefix="64"> <dhcp> <range start="a:b:c:d::100" end="a:b:c:d::1ff"/> </dhcp> </ip> </network> |
Ein neuer Test-Gast "affe" soll ausschließlich ipv6 bekommen (seine öffentliche, statische Adresse soll hier mal die a:b:c:d::affe sein).
netplan-Konfig auf "affe":
1 2 3 4 5 6 7 8 9 | network: ethernets: enp1s0: addresses: - "a:b:c:d::affe/64" gateway6: "a:b:c:d::2" nameservers: <ipv6-nameservers> version: 2 |
Die Bridge funktioniert weiterhin problemlos, aber das Routing Host ←→ affe leider überhaupt nicht.
Der Host kommt über ipv6 raus zu google, kann sich aber selbst auf a:b:c:d::2 nicht anpingen. Zum testaffen kommt er ebenfalls nicht.
affe bekommt neben seiner geplanten, statischen ip die testweise vergebene ipv6 über dhcp und kann sich selbst auch auf beiden Adressen anpingen. Er kommt aber nicht raus (merkwürdigerweise scheint beim ping zumindest die Namensauflösung zu funktionieren) und erreicht auch den Host nicht (address unreachable). Von außen ist er nicht erreichbar (traceroute6 kommt bis zur Host-IP a:b:c:d:e:f:g:h).
Ausgabe von "ip a" auf dem Host:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000 link/ether <mac> brd ff:ff:ff:ff:ff:ff 4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether <mac> brd ff:ff:ff:ff:ff:ff inet <ipv4> scope global br0 valid_lft forever preferred_lft forever inet6 a:b:c:d:e:f:g:h/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 86168sec preferred_lft 14168sec inet6 fe80::e:f:g:h/64 scope link valid_lft forever preferred_lft forever 11: virbr2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether <mac> brd ff:ff:ff:ff:ff:ff inet6 a:b:c:d::1/64 scope global valid_lft forever preferred_lft forever inet6 fe80::e:f:g:h/64 scope link valid_lft forever preferred_lft forever 12: virbr2-nic: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel master br0 state DOWN group default qlen 1000 link/ether <mac> brd ff:ff:ff:ff:ff:ff 13: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master virbr2 state UNKNOWN group default qlen 1000 link/ether fe:54:00:1e:4a:8c brd ff:ff:ff:ff:ff:ff inet6 fe80::fc54:ff:fe1e:4a8c/64 scope link valid_lft forever preferred_lft forever
Ausgabe von "ip -6 r" auf dem Host:
::1 dev lo proto kernel metric 256 pref medium a:b:c:d::/64 dev virbr2 proto kernel metric 256 pref medium a:b:c:d::/64 dev br0 proto ra metric 1024 expires 85946sec pref medium fe80::/64 dev br0 proto kernel metric 256 pref medium fe80::/64 dev vnet0 proto kernel metric 256 pref medium fe80::/64 dev virbr2 proto kernel metric 256 pref medium default via fe80::1 dev br0 proto static metric 1024 pref medium
Ausgabe von "ip a" auf affe (gekürzt):
enp1s0: ... ... inet6 a:b:c:d::170/128 scope global dynamix noprefixroute ... inet6 a:b:c:d::affe/64 scope global ... inet fe80::5054:ff:g:h/64 scope link...
Ausgabe von "ip -6 r" auf affe:
::1 dev lo proto kernel metric 256 pref medium a:b:c:d::/64 dev enp1s0 proto kernel metric 256 pref medium a:b:c:d::/64 dev enp1s0 proto ra metric 1024 expires 2398sec pref medium fe80::/64 dev enp1s0 proto kernel metric 256 pref medium default proto static metric 1024 nexthop via a:b:c:d::2 dev enp1s0 weight 1 nexthop via f80::e:f:fef7:e776 dev enp1s0 weight 1 pref medium
Gebe ich virbr2 dieselbe MAC wie br0 (was doch so sein müsste, oder?), dann kann ich das Netzwerk nur starten, wenn ich vorher auf dem Host manuell net.ipv6.conf.br0.accept_ra auf 2 setze. Dauerhaft über die netplan-Konfig des Hosts scheint das aber nicht zu gehen (zumindest nicht durch ein einfaches accept-ra: 2)
Ich hab inzwischen so viele Konfigs ausprobiert und an so vielen Schrauben gedreht, dass ich grad gar nix mehr verstehe. Kann mir jemand helfen?
Bearbeitet von rklm:
Syntaxhighlighting