O servidor Linux não está recebendo rota IPv6 padrão através do link PPP

2

Estou substituindo um roteador pfSense em um escritório remoto por um pequeno dispositivo linux, rodando Debian. O roteador só precisa lidar com recursos muito básicos de iptables / DHCP e VPN. Ele é configurado de modo que o provedor upstream seja uma conexão PPPoE, na qual os endereços IPv4 e IPv6 estáticos (e o prefixo IPv6) são fornecidos.

Estou usando uma combinação de radvd , wide-dhcpv6-client , wide-dhcpv6-server e ppp para configurar o endereçamento. Praticamente tudo funciona, exceto pelo fato de que o roteador não recebe uma rota IPv6 padrão quando o ppp0 aparece. Os clientes podem fazer ping no roteador, mas o roteador não pode fazer ping no mundo externo.

Eu configurei wide-dhcpv6-client desse jeito ( eth0 é o adaptador de LAN local):

profile default
{
  request domain-name-servers;
  request domain-name;

  script "/etc/wide-dhcpv6/dhcp6c-script";
};
interface ppp0 {
    send ia-pd 0;
    send rapid-commit;
};

id-assoc pd 0 {
    prefix-interface eth0 {
        sla-len 0;
        sla-id 1;
        ifid 1;
    };
};

Os servidores DNS fornecidos pelo upstream são preenchidos corretamente em resolv.conf (IPv4 e IPv6) e o endereço IPv6 em eth0 está definido como o endereço correto ( 2001:111:1111::1 ) e radvd anuncia o prefixo correto. No entanto, ip -6 show route não possui nenhum gateway listado:

2001:111:1111::/48 dev eth0  proto kernel  metric 256
fe80::/64 dev eth1  proto kernel  metric 256
fe80::/64 dev ppp0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256
fe80::/10 dev ppp0  metric 1
fe80::/10 dev ppp0  proto kernel  metric 256

Eu também tenho o seguinte conjunto de configurações:

net.ipv6.conf.ppp0.forwarding = 2
net.ipv6.conf.ppp0.accept_ra = 2

Se eu simplesmente fizer ip -6 route add 0::/0 dev ppp0 , o roteamento IPv6 começará a funcionar magicamente. No entanto, minha expectativa é que, quando a interface ppp0 aparecer, a rota seja autoconfigurada, junto com o prefixo, os servidores DNS e tudo mais.

O roteamento IPv6 funciona no pfSense (2.1), então eu não acho que é fazer algo engraçado. Preciso adicionar manualmente essa rota toda vez que ppp0 aparecer, ou isso deve funcionar automaticamente?

edite Ativei o modo de depuração em dhcp6c e é isso que sai quando a interface aparece: link

    
por growse 04.10.2013 / 22:28

3 respostas

1

Eu tenho uma máquina Linux Debian quase fazendo a mesma coisa (eu não uso um servidor dhcpv6 e estou usando o dibbler como o cliente iph6 dhcp para a interface ppp), na minha configuração PPP eu tenho :

defaultroute
replacedefaultroute
+ipv6
ipv6cp-accept-local

se você adicionar:

debug

para a configuração do ppp, você obterá os detalhes da negociação do ipv6. Eu suspeito que você está perdendo a opção defaultroute

    
por 06.10.2013 / 21:13
1

... net.ipv6.conf.ppp0.accept_ra = 2

Para garantir que os parâmetros de configuração do kernel sejam realmente definidos toda vez que o dispositivo ppp surgir, tente usar uma regra do udev:

KERNEL=="ppp0", SUBSYSTEM=="net", ACTION=="add", RUN+="/bin/bash -c 'echo 2 >/proc/sys/net/ipv6/conf/ppp0/accept_ra; echo 2 >/proc/sys/net/ipv6/conf/ppp0/forwarding;'"

Coloque-o em algum lugar em /etc/udev/rules.d / e restabeleça a conexão ppp. Em alguns casos, meu valor accept_ra configurado foi redefinido para o valor padrão (se forem diferentes) quando o dispositivo ppp desapareceu na desconexão. Quando ele se reconecta novamente, também estou com falta da minha rota padrão devido ao valor errado definido em accept_ra .

    
por 19.11.2014 / 23:20
0

Você poderia capturar a interface ppp com o tcpdump durante a negociação do ppp para ver se o endereço ipv6 está sendo fornecido pelo RAS? Eu trabalho desenvolvendo sw para roteadores rodando linux embarcados e a maneira mais fácil de diagnosticar problemas de negociação de ppp é capturar os pacotes pppoe durante esta fase (PADI, PADO, PADR, PADS, PADT).

    
por 05.10.2013 / 00:58