Duas diretivas com um nome quase igual aparecem em todos os exemplos que funcionam, e copiar uma sem a outra produz um túnel que parece correto e descarta o prefixo da filial em silêncio. Elas fazem trabalhos diferentes em lados diferentes da mesma fronteira: uma ensina ao kernel do servidor onde vive um prefixo, e a outra ensina ao OpenVPN qual cliente autenticado o transporta. Se acertar nas duas, o prefixo flui; se acertar em uma, os pacotes têm rota mas não dono.

Duas diretivas, dois trabalhos diferentes

route-ipv6 é uma instalação de rota comum: o servidor adiciona uma rota do kernel que aponta o prefixo para sua interface de túnel. iroute-ipv6 pertence a um contexto específico do cliente e declara propriedade interna, de modo que o daemon sabe que o tráfego desse prefixo deve ser enviado a um cliente específico e não ao par que uma rota do kernel venha a nomear.

Uma trata da tabela de encaminhamento do kernel, a outra do modelo de roteamento interno do daemon. Mantê-las separadas explica por que uma configuração que parece completa ainda pode descartar o prefixo. Também explica por que a mesma rede aparece duas vezes em todos os exemplos que funcionam. Nenhuma das duas linhas é redundante.

Na instalação tradicional em espaço de usuário as duas são necessárias e se complementam. Uma rota do kernel sozinha deixa o daemon sem capacidade de escolher um par. Uma iroute sozinha deixa o kernel sem caminho para o túnel. É também daqui que vem a maior parte da confusão sobre arquivos por cliente: o arquivo não é uma entrada da tabela de rotas, e a entrada de rota não é uma declaração de propriedade.

ip -6 route show | grep fd00:7a
ip -6 route get fd00:7a::1

Onde cada uma fica

A rota fica na configuração gerenciada do servidor, onde se aplica àquele processo de servidor. A iroute fica no arquivo específico do cliente, nomeado pela identidade autenticada do equipamento da filial.

Um nome de arquivo que não corresponde à identidade efetiva nunca é lido, e o sintoma é idêntico ao de uma iroute ausente. Verifique a identidade que o servidor autenticou e depois verifique o nome do arquivo caractere por caractere.

# /etc/openvpn/server/server.conf
route-ipv6 fd00:7a::/64
client-config-dir /etc/openvpn/server/ccd

# /etc/openvpn/server/ccd/branch-b
iroute-ipv6 fd00:7a::/64

Mantenha o pool e o prefixo da filial distintos, porque sobrepô-los cria um quebra-cabeça que nenhuma diretiva resolve.

Do que outro cliente precisa

Um segundo cliente que deve alcançar essa filial precisa de um anúncio, não de propriedade. Empurre o prefixo para os clientes que você quer, no contexto de cliente ou de grupo adequado à sua configuração.

Não o envie para a própria filial, porque esse equipamento já tem o prefixo como rede conectada.

Enviá-lo a todos é uma escolha com consequências: cada cliente passa a acreditar que a filial é alcançável pelo túnel, incluindo clientes a quem você nunca quis dar esse acesso. Anunciar é, na prática, uma decisão de acesso, embora a diretiva pareça encanamento. A referência de opções do servidor documenta iroute-ipv6 como propriedade específica do cliente, e essa é a distinção que vale a pena manter.

O caminho de volta no equipamento da filial

A propriedade só ajuda se a filial encaminhar pacotes e a LAN dela souber responder. Ative o encaminhamento IPv6 no equipamento da filial e confirme que os hosts da LAN dele enviam o tráfego do pool VPN de volta para a filial em vez de para uma rota padrão que não conhece o pool.

Esse caminho de volta é o equivalente IPv6 do problema da rota ausente que as pessoas enfrentam com IPv4.

Verifique-o a partir de um host da LAN com uma consulta ao endereço do pool VPN, não a partir da própria filial. Uma consulta feita no roteador responde a uma pergunta diferente da que seus usuários fazem, e as duas discordam com frequência suficiente para valer o comando extra.

Quando o par ainda não basta

Algumas implantações não usam esse caminho de forma alguma. O caminho de dados do kernel e os servidores gerenciados pelo produto têm seu próprio tratamento de rotas suportado, e um exemplo em espaço de usuário pode não se traduzir diretamente.

Confirme qual caminho de dados sua compilação usa antes de copiar diretivas de um tutorial escrito para o outro.

Por fim, lembre-se do escopo dos endereços: um prefixo local único como fd00:7a::/64 é privado por concepção e não diz nada sobre alcançabilidade IPv6 pública. Trate-o como acesso interno e mantenha a saída para a internet uma questão separada com sua própria política.

Artigos relacionados