Dois saltos de VPN seguidos: quem vê realmente o seu tráfego?
Saltos em série desencriptam e voltam a encriptar na primeira gateway; saltos aninhados removem apenas a camada exterior. Percorra os dois desenhos e veja que operador lê o quê.
Cada perfil de cliente nomeia um servidor, portanto do lugar do utilizador existe um túnel e um ponto onde a proteção termina. O que acontece depois dessa primeira gateway é uma decisão de desenho que o cliente nunca vê, e os dois desenhos comuns comportam-se de forma muito diferente sob inspeção. Numa cadeia em série a primeira gateway desencripta e volta a encriptar. Numa cadeia aninhada remove uma camada exterior e reencaminha um túnel interior que não consegue abrir. O número de saltos é idêntico nos dois, por isso a diferença tem de ser desenhada e não contada.
Comece pelo cliente e nomeie as duas extremidades
Comece onde o utilizador começa, no perfil de ligação. Contém um endereço remoto, um método de autenticação e, quando o desenho o suporta, uma lista de rotas. Etiquete esse túnel exterior do cliente até à gateway A e dê-lhe endereços de exemplo: o endereço do túnel do cliente 10.77.0.2, o de A 10.77.0.1 e o ponto final público de A 198.51.100.10, retirados do intervalo de documentação TEST-NET-2 para que nada no exemplo possa colidir com um anfitrião real.
Nada nesse perfil menciona a gateway B, e isso não é um defeito. O segundo salto pertence a A, e a única obrigação do cliente é entregar tráfego a A e aceitar o que volta. Se A termina o túnel, o reencaminha ou abre um novo é a pergunta a que o resto deste percurso responde, e é ela que decide o que A pode ler.
Em série: A desencripta e depois volta a encriptar
No desenho em série A termina o tráfego duas vezes. Remove a proteção ao cliente, obtém o pacote IP da aplicação e envia depois esse pacote por um segundo túnel que A origina em direção a B. Entre essas duas operações o pacote fica no caminho de reencaminhamento de A como um pacote IP comum endereçado a um destino privado.
Isso produz duas consequências que vale a pena dizer sem rodeios. A pode aplicar política ao pacote interior, na forma de rotas, regras de filtragem e registo de origem e destino, e A tem de manter dois conjuntos de credenciais: um como servidor para o cliente e outro como cliente de B. A proteção existe em cada instante, mas o objeto protegido muda de identidade em A.
Daí não se segue que A leia o texto simples da aplicação. Quando o cliente e o serviço usam TLS e verificam os certificados um do outro, A vê um fluxo de registos TLS em vez de um pedido legível. Confirmar onde essa proteção termina exige olhar para a cadeia de certificados do serviço, não para o diagrama do túnel.
Aninhado: A remove apenas a camada exterior
No desenho aninhado o cliente constrói primeiro um túnel interior para B e depois transporta esse túnel dentro do exterior até A. A retira o cabeçalho exterior, encontra um túnel interior e reencaminha-o sem deter as suas chaves, pelo que a proteção interior continua a terminar em B.
A ligação ascendente do cliente transporta então duas camadas, enquanto o caminho entre A e B transporta uma. A vê os endereços exteriores do túnel interior, o que basta para saber que existe tráfego e aproximadamente para onde vai, e não basta para ler a carga útil. É toda a diferença em relação ao caso em série, e nenhum contador de saltos a mostra. O que A ainda pode fazer é recusar-se a reencaminhar o que não consegue ler, e isso está sempre disponível para o operador dessa gateway.
O aninhamento paga por essa propriedade. Cada camada acrescenta sobrecarga de cabeçalho, por isso o planeamento de MTU e MSS torna-se obrigatório e não apenas arrumado, e um caminho que funciona com uma camada pode descartar silenciosamente pacotes grandes com duas. Cada camada precisa também do seu próprio comportamento de reconexão e de manutenção, e uma falha numa camada parece uma interrupção parcial através da outra.
Desenhe os observadores, não apenas os túneis
Os túneis são a parte fácil do desenho. Os observadores são o tema do desenho, por isso escreva uma linha por ponto de vista e preencha o que cada um consegue realmente ler.
| Vantage point | Serial chain | Nested chain |
|---|---|---|
| Client's access network | Outer tunnel only | Outer tunnel only |
| Operator of A | Inner IP packet between A and B | Outer addresses of the inner tunnel, not its payload |
| Path between A and B | Second tunnel | Second tunnel |
| Operator of B | Inner packet re-originated by A | Payload after the inner layer is removed |
| Service edge | Traffic from the exit address | Traffic from the exit address |
Duas linhas são constantemente confundidas: o operador de A e o fornecedor do túnel do cliente. Podem ser uma só entidade, e nomes de gateway separados não os tornam independentes. Uma propriedade independente exige controlo administrativo separado, credenciais separadas e registo separado.
Os metadados sobrevivem aos dois desenhos. O tempo, os tamanhos dos pacotes e o número de ligações continuam observáveis em cada salto, por isso dois saltos aumentam o custo da correlação em vez de eliminar o sinal. Um desenho que promete invisibilidade deve ser confrontado com essa lista antes de alguém confiar nele.
Percorra os caminhos de falha antes de escolher
Quebre coisas de propósito a partir do cliente, na ordem em que um utilizador as encontraria. Comece pela interface e pelo seu MTU, porque o aninhamento falha no tamanho do pacote muito antes de falhar na autenticação.
ip -4 addr show dev tun0
ip link show dev tun0 | grep mtu
ping -M do -s 1380 -c 2 10.77.1.1
Depois confirme os pontos finais de proteção em vez de os supor. Peça ao serviço o seu certificado de dentro do túnel que estiver ativo, e compare a cadeia que o cliente vê com a cadeia que o serviço apresenta realmente. Uma gateway que volta a assinar ou interceta muda esse certificado, e a inspeção torna-se visível num único comando.
openssl s_client -connect intranet.example.com:443 -brief < /dev/null
Termine com a matriz de reconexão: o túnel do cliente cai, o túnel de B cai, o caminho entre A e B muda. Anote o que regressa e o que não regressa, e se alguma ligação interior cai para uma rota fora do seu transportador previsto. Registe os endereços que cada teste usou, porque repeti-lo noutra rede de acesso responde a outra pergunta. Repita também o teste de MTU após cada reconexão, porque um caminho alterado pode baixar o tamanho utilizável sem que uma única linha de configuração se mova.
Escolha em série quando A tem de aplicar política ao pacote interior, ou quando o cliente não consegue executar dois túneis empilhados. Escolha o aninhamento quando a carga interior tem de permanecer ilegível em A. Escreva a escolha com os seus observadores e os seus números de MTU, e a pessoa seguinte não terá de redesenhar o quadro todo para responder a uma pergunta.