AWS Client VPN com túnel dividido: quais rotas publicar
O túnel dividido é uma lista de rotas, não uma caixa de seleção. Decida para onde vai o tráfego de internet, quais prefixos privados publicar e qual resolver usar.
O console oferece um interruptor de túnel dividido, então a decisão parece uma caixa de seleção. Não é. O que realmente chega ao cliente é o conjunto de rotas publicadas do endpoint, e essa lista decide quais prefixos privados usam o túnel, se o tráfego geral de internet fica local ou sai pela AWS, e com qual resolver o cliente ainda consegue falar. Três perguntas resolvem o desenho, e cada uma pode ser respondida mal enquanto a conexão ainda funciona.
Uma flag de túnel dividido não é uma lista de destinos
A AWS descreve o túnel dividido como a adição de rotas do endpoint à tabela de rotas do cliente no estabelecimento da conexão. Uma rota para a VPC privada limita o túnel a esse destino; todo o resto segue o caminho comum do cliente. Uma rota padrão é uma instrução diferente com efeito diferente, por isso a documentação do túnel dividido alerta contra publicar 0.0.0.0/0 num endpoint configurado para este modo: costuma quebrar a conectividade em vez de estendê-la. A tabela de rotas do endpoint é a política, e a tabela de rotas do cliente é o resultado que você pode inspecionar.
Leia a tabela de rotas do endpoint e as rotas instaladas do cliente em conjunto. O rótulo descreve uma intenção; as rotas descrevem o que acontece.
Primeira decisão: o tráfego geral de internet deve ficar local?
Se a navegação deve usar a conexão do próprio usuário, publique apenas os destinos privados de que o trabalho precisa e pare ali. Não adicione uma rota de internet porque um tutorial de túnel completo incluía uma, e não presuma que a rota extra melhora a segurança. Ela muda o caminho, não acrescenta política e costuma custar uma latência que você não orçou.
Se o tráfego de internet deve sair pela AWS, construa a arquitetura de acesso à internet documentada: rota do endpoint, regras de autorização, o caminho da sub-rede associada, política de segurança e uma saída superior que funcione. Uma rota padrão sozinha não fornece nada disso.
Segunda decisão: quais prefixos privados e autorizados por quem?
Publique o menor conjunto de destinos que atende à carga real, e verifique se cada sub-rede associada consegue rotear até eles. O destino da rota do endpoint e o roteamento VPC da sub-rede são camadas diferentes, e uma rota que existe numa não é prova da outra. A autorização é novamente separada: um destino pode ser alcançável e ainda assim negado porque o grupo do cliente não tem uma regra que o permita.
Testar uma única sessão bem-sucedida prova um único caminho. Verifique cada sub-rede associada, porque uma associação de sub-rede adicionada depois é exatamente onde a rota ausente costuma estar.
Quando um destino precisa ser alcançável por nome, note que a próxima pergunta é a resolução de nomes, não a rota.
Terceira decisão: qual resolver segue o túnel?
Um cliente pode receber um servidor DNS alcançável apenas pela VPN, e esse resolver só funciona se o endereço dele estiver dentro de uma rota autorizada. Verifique as duas metades: o endereço do resolver segue uma rota publicada, e o servidor responde aos nomes que a aplicação pede. Uma requisição que tem sucesso por endereço mas falha por nome de host aponta para nomeação, não para roteamento, e depurar o túnel nesse caso desperdiça a tarde.
Nomes públicos devem resolver como antes da conexão, o que é mais uma razão para ser preciso sobre o que você publica.
Mude o conjunto de rotas e depois verifique os dois mundos
A AWS documenta que alterar rotas num endpoint de túnel dividido redefine as conexões dos clientes. Planeje a mudança com isso em mente: aplique-a, reconecte pelo cliente suportado e leia as rotas instaladas de novo em vez de confiar no estado aplicado antes da edição. Estado aplicado desatualizado é o motivo mais comum de uma mudança correta parecer quebrada.
Aceite o desenho somente quando um recurso privado e um destino público se comportarem como pretendido, por nome e por endereço, nas famílias de endereços que você realmente suporta. Um túnel que autentica não é a mesma coisa que um túnel que divide corretamente.
Escreva a lista de rotas no runbook ao lado do raciocínio, para que a próxima pessoa distinga uma exclusão intencional de uma esquecida.