Weisen Sie KVM-Gästen im Bridge-Modus eine IPv6-Adresse zu

Weisen Sie KVM-Gästen im Bridge-Modus eine IPv6-Adresse zu

System: CentOS 6.5

Netzwerk: Brücke auf br0

IPv6: ISP Nativer /64-Block.

IPv4: ISP-Adresse (nicht internes LAN)

Zweck: Um IPv6 nur Gästen zuzuweisen (manuell), möchte ich nicht, dass dem Gastbetriebssystem eine IPv4-Adresse zugewiesen wird.


Auf dem Host:

/etc/sysctl.conf:

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1 
net.ipv6.conf.br0.forwarding = 1
net.ipv6.conf.default.forwarding = 1

brctl anzeigen

bridge name     bridge id               STP enabled     interfaces
br0             8000.e840f2ecdfed       no              eth0
                                                        vnet0
virbr0          8000.52540051ef3c       yes             virbr0-nic

ifconfig:

br0       Link encap:Ethernet  HWaddr E8:40:F2:EC:DF:ED  
      inet addr:xxx.xxx.xxx.xxx  Bcast:xxx.xxx.xxx.255  Mask:255.255.255.0
      inet6 addr: 2607:beef:be:beef::1/64 Scope:Global
      inet6 addr: fe80::ea40:f2ff:feec:dfed/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:365707 errors:0 dropped:0 overruns:0 frame:0
      TX packets:470458 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:28867567 (27.5 MiB)  TX bytes:574512176 (547.8 MiB)

eth0      Link encap:Ethernet  HWaddr E8:40:F2:EC:DF:ED  
      inet6 addr: fe80::ea40:f2ff:feec:dfed/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:392675 errors:0 dropped:0 overruns:0 frame:0
      TX packets:608319 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:46359514 (44.2 MiB)  TX bytes:586262036 (559.1 MiB)
      Interrupt:20 Memory:fe500000-fe520000 

/etc/sysconfig/networt-scripts/ifcfg-br0:

DEVICE=br0
BOOTPROTO=static
IPADDR=xxx.xxx.xxx.xxx
NETMASK=255.255.255.0
ONBOOT=yes
GATEWAY=xxx.xxx.xxx.xxx
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6ADDR=2607:beef:be:beef::1/64
TYPE=Bridge
DELAY=0

cat /etc/sysconfig/network-scripts/route6-br0

2607:beef:be:bff:ff:ff:ff:ff dev br0
default via 2607:beef:be:bff:ff:ff:ff:ff

Route -A inet6 -n

Kernel IPv6 routing table
Destination                                 Next Hop                                Flags Metric Ref    Use Iface
2607:beef:be:beef::/64                       ::                                      U     256    0        0 br0     
2607:beef:be:bff:ff:ff:ff:ff/128            ::                                      U     1024   1        0 br0     
fe80::/64                                   ::                                      U     256    0        0 virbr0  
fe80::/64                                   ::                                      U     256    0        0 vnet0   
fe80::/64                                   ::                                      U     256    0        0 br0     
fe80::/64                                   ::                                      U     256    0        0 eth0    
::/0                                        2607:beef:be:bff:ff:ff:ff:ff            UG    1024   20281       4 br0     
::1/128                                     ::                                      U     0      1        1 lo      
2607:beef:be:beef::/128                      ::                                      U     0      0        1 lo      
2607:beef:be:beef::1/128                     ::                                      U     0      36128       1 lo     
...

ip6tables -S:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p ipv6-icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited 
-A FORWARD -s 2607:beef:be:beef::/64 -i br0 -j ACCEPT 

Für Gäste:

Betriebssystem: CentOS 6.5 minimal

Netzwerk: Manuell

cat /etc/sysconfig/network-scripts/ifcfg-eth0:

ONBOOT=yes
NM_CONTROLLED=no
IPV6INIT=yes
IPV6ADDR=2607:beef:be:beef::2/64
IPV6_DEFAULTGW=2607:beef:be:beef::1 (The host's ipv6 address)

Verhalten:

Auf dem Host kann ich die IPv6-Adresse des Gastes anpingen, vise-vesa.

Ich kann vom Gast aus keine andere IPv6-Adresse anpingen, auch nicht Google DNS 2001:4860:4860::8888/8844. (Zeitüberschreitung)

Ich kann von keiner nicht zugewiesenen ISP-IPv6-Adresse einen Ping an den Gast senden. (Zeitüberschreitung)

Ping6 von Hosts nach außen ist OK.


Aktualisieren:

  1. Wenn ich das Gateway des Gasts auf 2607:beef:be:bff:ff:ff:ff:ff (Gateway des Hosts) ändere, beschwert sich der Gast: „Keine Route zum Host“. Selbst wenn ich dem Gast die statischen Routeninformationen (route6-eth0) hinzugefügt habe, stellt er immer noch keine Verbindung her.

Kann mir bitte jemand helfen, herauszufinden, was los ist? Danke.

Antwort1

Mit Marks Hinweis werde ich also meine eigene Frage beantworten.

Host-Setup:

Weisen Sie Ihrer virtuellen Brücke den IPv6-Subblock zu, in meinem Beispiel:

Hinzufügen

<ip family='ipv6' address='2607:beef:be:beef:1::' prefix='96'>

/etc/libvirt/qemu/networks/default.xmlVerwenden Sie dazu virshdie Funktion „Zerstören“ und „Neuaufbau“ des Geräts „virbr0“. In meinem Fall wurde dadurch ein Gerät „virbr1“ generiert.

Fügen Sie die Regel „ip6tables“ hinzu:

ip6tables -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT

ip6tables -A FORWARD -i br0 -j ACCEPT

Auf der VM-Seite:

Fügen Sie die ausgewählte IPv6-Adresse zu Ihrer Konfigurationsdatei hinzu:

IPV6INIT=yes
IPV6ADDR=2607:beef:be:beef:1::253:8/128

Starten Sie die Netzwerkschnittstelle Ihrer VM neu, es funktioniert einfach.

Ich vermute, das liegt daran, dass die VM über die Virbr1-Schnittstelle am Host mit der Außenwelt verbunden ist. Das Gateway auf dem Host ist br0. Mit der IP6tables-Regel wird alles geklärt.

Ich habe eine Schritt-für-Schritt-Anleitung in meinem Blog zusammengestellt.https://luxing.im/adding-ipv6-support-for-kvm-vms/

Antwort2

Ihr Gateway in Ihrem Gast ist falsch.

Da Sie Ihre Netzwerkverbindung überbrückt haben, ist es so, als ob sich die VM im selben Subnetz (LAN) wie der Host befindet. Daher muss sie dieselbe Gateway-Adresse wie der Host verwenden.

verwandte Informationen