O link IPv6 PPP falha no encaminhamento de anúncios do roteador na LAN local

1

Um servidor Debian com eth0 , eth1 . eth2 , ppp0 devices:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff
4: eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff
63: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3
    link/ppp
O

encaminhamento está ativado em todos os lugares:

/proc/sys/net/ipv6/conf ~
  all/forwarding=1  default/forwarding=1
 eth0/forwarding=1     eth1/forwarding=1
 eth2/forwarding=1     ppp0/forwarding=1

e o autoconf também é ativado:

/proc/sys/net/ipv6/conf ~
  all/autoconf=1     default/autoconf=1
 eth0/autoconf=0        eth1/autoconf=1
 eth2/autoconf=1        ppp0/autoconf=1

mais RA (= Anúncio do roteador) é aceito em qualquer dispositivo, mas definindo accept_ra = 2 para no leat ppp0 e eth1 :

/proc/sys/net/ipv6/conf ~
  all/accept_ra=1                              default/accept_ra=1           
 eth0/accept_ra=1                                 eth1/accept_ra=2           
 eth2/accept_ra=0                                   lo/accept_ra=1           
 ppp0/accept_ra=2

A conexão PPP é estabelecida com sucesso, tendo a opção ipv6 :: dead: beef configurada no arquivo de configuração / etc / ppp / peer / myProvider :

63: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qlen 3
    inet6 2003:42:e67f:d3ca:6105:155:f2b3:71f0/64 scope global temporary dynamic 
       valid_lft 14266sec preferred_lft 1666sec
    inet6 2003:42:e67f:d3ca::dead:beef/64 scope global dynamic 
       valid_lft 14266sec preferred_lft 1666sec
    inet6 fe80::dead:beef/10 scope link 
       valid_lft forever preferred_lft forever

e uma rota padrão para um endereço de link local do provedor é definida:

2003:42:e67f:d3ca::/64 dev ppp0  proto kernel  metric 256  expires 13559sec
fe80::/64 dev ppp0  proto kernel  metric 256 
fe80::/10 dev ppp0  metric 1 
fe80::/10 dev eth1  proto kernel  metric 256 
fe80::/10 dev ppp0  proto kernel  metric 256 
fe80::/10 dev eth0  metric 1024
default via fe80::90:1a10:1b2:b780 dev ppp0  proto kernel  metric 1024  expires 1789sec

O prefixo 2003:42:e67f:d3ca::/64 público tem uma rota para o dispositivo ppp0 . radvd instalado e em execução, radvdump mostra o link ppp0 IPv6 enviando RAs

interface ppp0
{
    AdvSendAdvert on;
    # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
    AdvManagedFlag off;
    AdvOtherConfigFlag on;
    AdvReachableTime 0;
    AdvRetransTimer 0;
    AdvCurHopLimit 0;
    AdvDefaultLifetime 1800;
    AdvHomeAgentFlag off;
    AdvDefaultPreference medium;
    AdvLinkMTU 1492;

    prefix 2003:42:e67f:d3ca::/64
    {
        AdvValidLifetime 14400;
        AdvPreferredLifetime 1800;
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr off;
    }; # End of prefix definition

}; # End of interface definition

Do host do servidor, posso ping6 hospedar um host da Internet com sucesso. Agora, quando eu tento forçar um RA solicitando um roteador para ppp0 i get:

Soliciting ff02::2 (ff02::2) on ppp0...
Hop limit                 :    undefined (      0x00)
Stateful address conf.    :           No
Stateful other conf.      :          Yes
Router preference         :       medium
Router lifetime           :         1800 (0x00000708) seconds
Reachable time            :  unspecified (0x00000000)
Retransmit time           :  unspecified (0x00000000)
 MTU                      :         1492 bytes (valid)
 Prefix                   : 2003:42:e67f:d3ca::/64
  Valid time              :        14400 (0x00003840) seconds
  Pref. time              :         1800 (0x00000708) seconds

O que eu esperaria é que todos os nós em eth1 obtenham o SLAAC configurado, mas quando eu tentar solicitar em eth1 i get:

Soliciting ff02::2 (ff02::2) on eth1...
Timed out.
Timed out.
Timed out.
No response.
  • Eu não quero usar DHCPv6 mas SLAAC via radvd
  • Eu gostaria de evitar que o bash kung fu cortasse o prefixo real do provedor (por exemplo: de rdisc6 saída) para ajustar o arquivo radvd.conf sozinho (por exemplo: em um evento if-up)
  • A ligação de dispositivos não é uma solução. O dispositivo PPP é virtual e não pode ser conectado.

De alguma forma, o encaminhamento de RA pacotes de ppp0 para eth1 (e para qualquer outro dispositivo) não parece funcionar. Por quê? Até onde eu sei, qualquer roteador com um modem DSL tem que encaminhar de alguma forma RAs do seu dispositivo de modem interno para as portas LAN físicas, caso contrário qualquer host conectado não obteria um endereço IPv6, certo ? Agora, onde está a diferença entre um roteador e minha caixa debian? Eu ficaria grato por qualquer dica que você possa ter.

    
por 3ronco 17.11.2014 / 23:58

2 respostas

5

Os anúncios de roteador não devem ser encaminhados. Então, quando você descobre que eles não estão sendo encaminhados, pelo menos essa parte está funcionando como pretendido.

Você deve estar executando o seu próprio daemon de roteador em seu roteador, de modo que ele se anuncie para as LANs.

Você deve ter três prefixos / 64 separados para suas três LANs. Então você precisa de um encaminhamento / 62 ou menor do seu ISP. Isto não é problema porque o seu ISP deve dar-lhe um prefixo mais curto para este propósito (o quão curto depende de quem você pergunta, originalmente era / 48 mas alguns apenas distribuiriam um / 56).

Se houver um servidor DHCPv6 disponível através do link ppp, você poderá enviar uma solicitação DHCPv6 solicitando que um prefixo seja delegado a você. Caso contrário, você pode ter que falar com uma pessoa.

    
por 18.11.2014 / 00:13
2

A estrutura desse tipo de configuração de IP geralmente é:

  • Você recebe um RA sobre ppp0 para que seu sistema receba uma rota padrão e, opcionalmente, um prefixo
  • Você executa um cliente DHCPv6-PD no sistema para solicitar um prefixo roteável do ISP
  • Você usa / 64s desse prefixo para numerar sua outra interface
  • Você usa radvd para enviar RAs para suas interfaces locais para permitir que outros sistemas saibam como sua rede ipv6 está configurada
  • Você não envia RAs para ppp0 porque você não é um roteador para seu ISP, seu lado é um roteador para você
por 18.11.2014 / 06:00