Sistema: CentOS 6.5
Red: Puente en br0
IPv6: ISP Nativo /bloque 64.
IPv4: dirección ISP (no LAN interna)
Propósito: Para asignar IPv6 solo a invitados (manualmente), no quiero que se asigne una dirección ipv4 al sistema operativo invitado.
En anfitrión:
/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
espectáculo brctl
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
gato /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
ruta -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
En invitado:
SO: CentOS 6.5 mínimo
Red: Manual
gato /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)
Comportamiento:
En el Host, puedo hacer ping a la dirección ipv6 del huésped, vise-vesa.
No puedo hacer ping a ninguna otra dirección IPv6 del invitado, incluido Google DNS 2001:4860:4860::8888/8844. (Caducado)
No puedo hacer ping desde ninguna dirección IPv6 de ISP no asignada al invitado. (Caducado)
ping6 desde los hosts hacia el exterior está bien.
Actualizar:
- Si cambio la puerta de enlace del huésped a 2607:beef:be:bff:ff:ff:ff:ff (puerta de enlace del host), el huésped se quejará "no hay ruta al host". Incluso agregué la información de la ruta estática (ruta6-eth0) al Invitado, todavía no se conecta.
¿Alguien podría ayudarme a descubrir qué está pasando, por favor? Gracias.
Respuesta1
Entonces, con el aviso de Mark, responderé mi propia pregunta.
Configuración del anfitrión:
Asigne el subbloque IPv6 a su puente virtual, en mi ejemplo:
Agregar
<ip family='ipv6' address='2607:beef:be:beef:1::' prefix='96'>
Para /etc/libvirt/qemu/networks/default.xml
usar virsh
destruir y reconstruir el dispositivo virbr0, en mi caso generó un dispositivo virbr1.
Agregue la regla ip6tables:
ip6tables -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT
ip6tables -A FORWARD -i br0 -j ACCEPT
Del lado de la máquina virtual:
Agregue la dirección IPv6 seleccionada a su archivo de configuración:
IPV6INIT=yes
IPV6ADDR=2607:beef:be:beef:1::253:8/128
Reinicie la interfaz de red de su VM, simplemente funciona.
Supongo que eso se debe a que la VM se conecta con el mundo exterior a través de la interfaz virbr1 en el host. La puerta de enlace del host es br0. Con la regla ip6tables todo se solucionará.
He recopilado una guía paso a paso en mi blog.https://luxing.im/adding-ipv6-support-for-kvm-vms/
Respuesta2
Su puerta de enlace está mal en su invitado.
Dado que conectó su conexión de red, es como si la VM estuviera en la misma subred (LAN) que el host. Por lo tanto, debe utilizar la misma dirección de puerta de enlace que el host.