Ambos os desenhos são chamados de VPN e resolvem problemas diferentes. Um túnel site a site une dois gateways, de modo que cada host atrás deles pode alcançar os endereços permitidos do outro lado sem instalar nada. Um túnel de acesso remoto une dispositivos individuais a uma rede, um cliente por vez. A comparação importa porque a maioria dos erros de implantação vem de configurar um desenho esperando o comportamento do outro, e o sintoma costuma ser um tempo limite esgotado num serviço que o túnel realmente alcançou.

Dois desenhos, duas fronteiras

Site-to-siteRemote access
Endpointstwo gatewaysa gateway and each client
Who configuresnetwork ownerseach user or an MDM
Scope of reachwhatever the gateways routewhatever the client is granted
Broadcast discoverynot carriednot carried

Nenhum dos desenhos estende um domínio de difusão LAN. Os dispositivos do lado remoto não aparecem numa lista de descoberta local, e esperar que apareçam é a primeira suposição a abandonar. Nomes DNS privados que você publica de propósito são mais previsíveis do que qualquer protocolo de descoberta e sobrevivem a uma troca de fornecedor.

Use 10.10.0.0/24 num site e 10.20.0.0/24 no outro. O gateway A precisa de uma rota ou de um seletor de tráfego que envie o prefixo 10.20.0.0/24 para o túnel, e o gateway B precisa da imagem espelhada. Os hosts dos dois lados passam então a usar conectividade IP comum e nunca ficam sabendo que existe um túnel. Essa invisibilidade é a funcionalidade, e é também a razão pela qual as falhas parecem erros de rede comuns em vez de erros de túnel.

Baseado em política e baseado em rota não são o mesmo túnel

Numa implantação de IPsec baseada em política, os seletores de tráfego negociados definem exatamente quais pares de origem e destino estão protegidos. Se aparecer uma sub-rede nova atrás de um gateway e nenhum seletor a cobrir, o túnel continua ativo e a nova sub-rede simplesmente não é transportada. Num desenho baseado em rota, uma interface recebe o tráfego e a tabela de roteamento decide, o que faz com que adicionar um prefixo seja uma mudança de roteamento e não uma renegociação do túnel.

O StrongSwan expõe as duas visões diretamente, e lê-las em conjunto é como se descobre qual modelo você realmente implantou.

swanctl --list-sas
ip xfrm policy
ip -4 route show table all | grep -E '10\.(10|20)\.'

Uma lista de seletores que omite o prefixo de que você precisa explica a falha sem qualquer captura de pacotes, e uma rota apontando para a interface errada explica a falha espelho na volta. Leia as duas antes de renegociar qualquer coisa, porque uma renovação de chave não acrescenta um seletor que você nunca configurou.

Planeje o endereçamento antes do túnel

Faixas sobrepostas são o erro de desenho que não se corrige com configuração. Se os dois sites usam 192.168.1.0/24, um host que precisa de 192.168.1.50 tem dois candidatos e nenhuma forma de escolher. O túnel vai autenticar, as associações de segurança serão estabelecidas, e a decisão de roteamento será errada ou ambígua de qualquer maneira.

Escolha uma de três opções honestas: renumerar um site, traduzir a faixa sobreposta no gateway para que cada lado veja um prefixo distinto, ou abrir mão do roteamento direto para esses hosts e publicar o serviço de outra forma. Cada uma tem um custo, e a primeira costuma ser a mais barata num horizonte de dois anos. Decida antes de o túnel existir, porque depois a mudança atinge todo dispositivo que tenha o endereço antigo.

Resolva também a questão da MTU cedo. Um túnel reduz a carga útil, e um desenho que depende de fragmentação se comporta de forma diferente de um que fixa a MSS nos gateways.

O encaminhamento e a política ficam fora do túnel

O gateway precisa estar disposto a encaminhar pacotes entre a interface do túnel e a interface LAN, e ambas as direções precisam de política que permita o serviço. No Linux são dois ajustes separados, mais as regras de firewall que decidem se o fluxo encaminhado é permitido.

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -s 10.20.0.0/24 -d 10.10.0.0/24 -j ACCEPT
iptables -A FORWARD -s 10.10.0.0/24 -d 10.20.0.0/24 -j ACCEPT

O host receptor acrescenta uma terceira camada: o próprio firewall dele ainda precisa aceitar um cliente da sub-rede remota. Um servidor de arquivos que só permite sua /24 local vai rejeitar o tráfego encaminhado de 10.20.0.7, por mais saudável que o túnel pareça, e essa rejeição é fácil de ler como falha de roteamento.

Teste a partir de um host, não do gateway

Um ping originado pelo próprio gateway pode seguir um endereço de origem e uma política diferentes do tráfego de usuário encaminhado. Isso o torna um teste fraco e, às vezes, enganoso: ele funciona enquanto a aplicação falha, ou falha enquanto a aplicação funciona.

ip route get 10.10.0.5 from 10.20.0.7
ping -I 10.20.0.7 10.10.0.5
curl -sv --max-time 5 http://files.10-10.internal/ -o /dev/null

Use um host real, um endereço de origem real e o protocolo real que a aplicação utiliza. Depois leia o caminho de volta separadamente, porque uma direção de ida que funciona sem rota de retorno produz um tempo limite esgotado idêntico ao de um serviço bloqueado.

Escolha o desenho pela pergunta que você responde: você está unindo redes ou admitindo dispositivos? Todo o resto, inclusive qual fornecedor você configura, decorre dessa resposta.

Artigos relacionados