Atribua o endereço ipv6 aos convidados do KVM no modo bridge

4

Sistema: CentOS 6.5

Rede: ponte na br0

IPv6: ISP nativo / bloco 64.

IPv4: endereço do ISP (não LAN interna)

Objetivo: Atribuir o IPv6 somente aos convidados (manualmente), não quero que o endereço ipv4 seja atribuído ao sistema operacional convidado.

No 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

mostra 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

cat / etc / sysconfig / scripts de rede / 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 

Em convidado:

SO: CentOS 6.5 mínimo

Rede: Manual

cat / etc / sysconfig / scripts de rede / 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)

Comportamento:

No Host, posso fazer ping no endereço ipv6 do convidado, vise-vesa.

Não consigo pingar nenhum outro endereço ipv6 do convidado, incluindo o google dns 2001: 4860: 4860 :: 8888/8844. (Esgotado)

Não consigo pingar de nenhum endereço ipv6 do ISP atribuído ao hóspede. (Esgotado)

ping6 dos hosts para o exterior é OK.

Atualização:

  1. Se eu alterar o gateway do Guest para 2607: beef: be: bff: ff: ff: ff: ff (gateway do host), o convidado reclamará "sem rota para hospedar". Mesmo eu adicionei a informação de rota estática (route6-eth0) ao Guest, ela ainda não conectará.

Alguém poderia me ajudar a descobrir o que está acontecendo, por favor? Obrigado.

    
por hlx98007 27.12.2013 / 06:24

2 respostas

2

Então, com o aviso de Mark, eu responderei minha própria pergunta.

Configuração do host:

Atribua o sub bloco IPv6 à sua ponte virtual, no meu exemplo:

Adicionar

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

Para /etc/libvirt/qemu/networks/default.xml , use virsh destruir e reconstruir o dispositivo virbr0, no meu caso ele gerou um dispositivo virbr1.

Adicione a regra ip6tables:

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

ip6tables -A FORWARD -i br0 -j ACCEPT

No lado da VM:

Adicione o endereço IPv6 selecionado ao seu arquivo de configuração:

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

Reinicie a interface de rede da sua VM, apenas funciona.

Eu acho que porque a VM está se conectando com o mundo externo via interface virbr1 no host. O gateway no host é br0. Com a regra ip6tables tudo vai resolver.

Eu compilei o guia passo a passo no meu blog, link

    
por 11.09.2015 / 05:00
1

Seu gateway está errado em seu convidado.

Como você conectou sua conexão de rede, é como se a VM estivesse na mesma sub-rede (LAN) que o host. Assim, ele precisa usar o mesmo endereço de gateway que o host.

    
por 27.12.2013 / 06:52