O anúncio do roteador para o ipv6 está anunciando o endereço do link-local

5

Eu tenho a seguinte situação: Eu configurei uma máquina FreeBSD 9.1 como o endpoint de um túnel SixXS heartbeat em uma interface gif0 . Funciona até agora e eu posso fazer ping6 via IPv6.

Eu atribuí a outra interface lagg0 , que é uma interface agregada, um IPv6 estático fora da sub-rede IPv6 designada que está conectada à LAN. Agora eu gostaria de anunciar este prefixo de rede para minha LAN usando o rtadvd deamon.

Este é o arquivo /etc/rtadvd.conf :

lagg0:\
     :addr="xxxx:yyyy:zzzz:aaaa::":prefixlen#64:tc=ether:

com xxxx:yyyy:zzzz:aaaa::/64 sendo o prefixo de rede. Agora, quando adiciono clientes à rede, eles pegam o prefixo da rede e geram seus autoconf e endereços temporários. Isso funciona muito bem.

No entanto, o que eles estão perdendo é a rota padrão correta do IPv6. Na tabela de roteamento, a rota padrão para IPv6 é o fe80:: link-local do roteador.

Agora, nenhum pacote é roteado para a internet. Se eu adicionar a rota padrão manualmente ao host, isso funciona.

Minhas perguntas

Eu pensei que o anúncio do roteador deveria configurar a rota padrão correta nos clientes. Estou faltando alguma coisa aqui? Por que ele anuncia seu endereço de link local em vez do endereço certo?

    
por GorillaPatch 08.02.2013 / 22:44

1 resposta

3

O endereço local do link deve funcionar bem e, de fato, é o endereço usado por rtadvd .

Estou usando o 6to4, mas é basicamente a mesma configuração. No meu caso, tudo que faço é:

ifconfig stf0 create
ifconfig stf0 inet6 2002:c0a8:1:ffff::1/16
ifconfig lan0 inet6 2002:c0a8:1::1/64

Isso cria a conexão, seu túnel deve cortar o mesmo propósito.

route add -inet6 default 2002:c058:6301::

Neste ponto, ping6 ipv6.google.com funciona no meu roteador.

sysctl net.inet6.ip6.forwarding=1

Agora o roteamento está habilitado, mesmo com endereços locais de link, se eu configurar manualmente os clientes para usar o roteador à medida que seu DG IPv6 funciona. Mas queremos algum nível de configuração automática ... então /etc/rtadvd.conf contém:

lan0:\
    :addr="2002:c0a8:1::":prefixlen=64:tc=ether:

A única coisa que resta é adicionar a configuração ao meu arquivo rc.conf :

ipv6_gateway_enable="YES"               # Route IPv6 Traffic
rtadvd_enable="YES"                     # IPv6 Router Advertisement Daemon
rtadvd_interfaces="lan0"

cloned_interfaces="stf0"
ifconfig_stf0_ipv6="inet6 2002:c0a8:1:ffff::1/16"

ipv6_defaultrouter="2002:c058:6301::"   # 6to4 Default Router

Os clientes têm uma rota padrão do intervalo fec0 ::, mas funciona perfeitamente. Um tcpdump mostra os clientes enviando de seu endereço IPv6 global para o endereço fec0.

Para qualquer um que esteja lendo este desejo de fazer 6to4, os endereços "internos" acima são para 192.168.0.1, que não podem ser roteados na Internet. Você precisa calcular seu próprio endereço IPv6 interno com base em seu endereço IPv4 externo.

    
por 09.02.2013 / 05:37