Estou tentando fazer com que meu roteador Linux doméstico também suporte ipv6 na rede doméstica.
Eu tenho um roteador DSL NVG599 atuando como um GW para a Internet pública e, em seguida, meu roteador Linux com duas interfaces: eth0 para a rede doméstica e eth1 para o roteador DSL.
Rede HOME <----eth0-----> LinuxRouter <------eth1------>DSLrouter -->>>>>
O roteador DSL está configurado com um prefixo de rede /64 do meu ISP (suponha que seja 2001:0:0:1234::/64) e o roteador DSL tem um endereço global ipv6 de 2001:0:0:1234::1 . Eu configurei o roteador Linux com radvd para anunciar esse mesmo prefixo de rede /64 para eth0 para a LAN doméstica e, de fato, vejo que os hosts na LAN são capazes de configurar automaticamente seus endereços IP. O anúncio também lista o roteador Linux como roteador padrão para ::/0, e o encaminhamento é configurado para enviar os pacotes para o roteador DSL.
O problema que tenho é que o roteador DSL está enviando pacotes de solicitações de vizinhos na eth1 quando recebe pacotes de entrada da Internet, e essas solicitações de vizinhos não estão sendo passadas de eth1 -> eth0 no roteador Linux. Estou pensando que isso está ocorrendo porque o roteador DSL pensa que está diretamente conectado à rede doméstica (que é normalmente em 99% das redes domésticas sem um roteador Linux no meio).
Depois de passar 2 dias tentando descobrir, a resposta até agora me escapou. Espero que haja alguma maneira de enviar um anúncio de roteador usando radvd para o roteador DSL para instruí-lo a rotear todos os pacotes para o prefixo /64 através do roteador Linux. Atualmente o anúncio do roteador enviado pelo roteador Linux está configurado com o prefixo /64 sendo enviado para o roteador DSL com:
interface eth1
{
AdvSendAdvert on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
route 2001:0:0:1234::/64 {
};
};
Eu acho que isso deveria ser suficiente para fazer com que o roteador DSL encaminhe todos os pacotes para a rede, mas ainda vejo as solicitações dos vizinhos.
Vejo que o roteador DSL tem configurações de passagem de IP com capacidade de definir um "servidor padrão", mas elas parecem se aplicar apenas ao IPv4. Supondo que o roteador DSL não esteja honrando meu RA, suponho que eu poderia configurar o encaminhamento multicast IPv6 usando 'xorb' no meu roteador Linux, mas me perguntando se existem outras opções.
Responder1
O problema que tenho é que o roteador DSL está enviando pacotes de solicitações de vizinhos na eth1 quando recebe pacotes de entrada da Internet, e essas solicitações de vizinhos não estão sendo passadas de eth1 -> eth0 no roteador Linux.
Isso é normal. As solicitações de vizinhos funcionam como consultas ARP – elas traduzem um endereço IP em um endereço MAC e, portanto, só fazem sentido dentro do mesmo domínio de transmissão. Faznão faz sentidopara que um roteador os encaminhe.
(Embora em algumas situações um roteador possaprocuradoreles, conforme descrito no final, mas... deixe isso para o plano C.)
Estou pensando que isso está ocorrendo porque o roteador DSL pensa que está diretamente conectado à rede doméstica (que é normalmente em 99% das redes domésticas sem um roteador Linux no meio).
Sim, e você nuncacontadoé de outra forma.
Então sua situação atual é que omesmoA sub-rede IP está sendo usada por duas redes diferentes e você espera que o roteador Linux funcione como uma ponte... O que é quase exatamente o oposto de um roteador.
(Se a parte confusa for o IPv6, pense em toda a configuração em termos de IPv4, já que o roteamento é mais ou menos o mesmo em ambos, e o ND é basicamente equivalente ao ARP. Portanto, se você não usaria a mesma sub-rede 192.168.1.0 em v4...)
Seu melhor curso de ação éobter umsegundo/64,E usequepara a rede eth1 do seu roteador Linux. (Se o roteador DSL obtiver seu prefixo via DHCPv6-PD, pode ser possível induzi-lo a solicitar um segundo.) A diferença, porém, é que o 2º/64 não seria usado diretamente em uma interface, mas simroteadoem direção ao endereço do roteador Linux.
Por exemplo:
- O roteador DSL possui 2001:db8:0:0:a:b:c:d na interface WAN.
- O roteador DSL obtém 2001:db8:10:0::/64 do ISP, auto-atribui 2001:db8:10:0::1/64 na interface LAN e envia anúncios de roteador para ele.
- O roteador Linux configura automaticamente 2001:db8:10:0:x:y:z:t em eth1 com base em RAs.
- O roteador Linux obtém 2001:db8:10:1::/64 do ISP (de alguma forma), auto-atribui 2001:db8:10:1::1/64 na interface eth0 e radvd envia anúncios de roteador para isso -nãopara a primeira sub-rede.
- O roteador DSL precisa de uma rota como "2001:db8:10:1::/64 via 2001:db8:10:0:x:y:z:t" para que todo o tráfego da segunda sub-rede seja encaminhado para o roteador Linux .
(Desculpas pelo exemplo não muito claro.)
Às vezes, o ISP delega um /60 ou mesmo /56 inteiro para você e encaminha tudo para o roteador DSL. Nesse caso, você poderia simplesmente configurar a segunda sub-rede sem qualquer mágica DHCPV6-PD. Na verdade, não posso fornecer uma boa resposta "genérica" aqui, pois ela depende do ISP e do CPE.
Se for impossível obter um segundo prefixo /64, outras opções possíveis são:
Transforme o sistema Linux em uma ponte pura, sem qualquer funcionalidade de roteamento.
Use outras fontes para obter /64 adicionais, como um provedor de túnel (ou 6to4). Os serviços de túnel existentes funcionarão de maneira muito mais confiável (exceto por alguma latência extra) do que os hacks descritos abaixo.
Faça com que o roteador DSL obtenha apenas o /64, mas não o configure para LAN. (Depende de quão flexível o roteador é.) Em vez disso, configure novamente uma rota para esse /64 por meio do endereço link-local eth0 do seu sistema Linux e, da mesma forma, configure uma rota no sistema Linux para ::/0 por meio do roteador DSL. Endereço de link local da LAN. Como resultado, o /64 será usado apenas na 2ª sub-rede, e a 1ª não terá nenhum prefixo público.
Continue com sua configuração atual, mas instale 'ndppd' para executar proxy de descoberta de vizinho. (Não, o encaminhamento multicast não funciona, pois os pacotes ND geralmente têm endereços de origem link-local.) Tenha cuidado com isso, pois pode tornar as coisas realmente confusas.
Use endereços privados (ULA) para a segunda LAN e habilite NAT (mascaramento) 1 para muitos no roteador Linux... perdendo a maior parte da utilidade do IPv6 no processo. (Sim, oficialmente o NAT não existe no IPv6, mas isso não impediu que o netfilter/iptables do Linux cedesse e o implementasse.)