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 pointSerial chainNested chain
Client's access networkOuter tunnel onlyOuter tunnel only
Operator of AInner IP packet between A and BOuter addresses of the inner tunnel, not its payload
Path between A and BSecond tunnelSecond tunnel
Operator of BInner packet re-originated by APayload after the inner layer is removed
Service edgeTraffic from the exit addressTraffic 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.

Artigos relacionados