Existem duas razões legítimas para encaixar túneis num portátil de programador. Ou o cliente corporativo tem de parecer vir de um país específico, ou duas redes privadas têm de estar acessíveis ao mesmo tempo. Ambos os casos exigem que o túnel externo transporte a própria conexão do cliente interno.

Iniciar dois clientes por qualquer ordem não produz isso. É o encaminhamento que produz.

Compare as duas ordens possíveis

Escolha a camada externa como o túnel cujo ponto final é alcançável a partir da internet pública. A camada interna é o túnel cujo servidor só responde através dessa saída. No Windows a divisão prática é WireGuard fora e o cliente corporativo dentro. O fator decisivo é o controlo.

O cliente oficial do WireGuard aplica um ficheiro de configuração completo, incluindo rotas e DNS. Os clientes corporativos comerciais costumam esconder ambos. Colocar um cliente escondido fora deixa-o a adivinhar o caminho por baixo.

A ordem inversa não é impossível. É apenas mais difícil de raciocinar, porque o cliente externo reescreve rotas segundo um calendário que nunca vê.

Deixe o AllowedIPs nomear apenas o intervalo corporativo

AllowedIPs lista os destinos que o WireGuard encaminha para o túnel. Para o encaixamento só precisa do endereço do servidor interno e dos prefixos corporativos. Tudo o resto fica na rede local, impressoras e hipervisor incluídos. Isto é um túnel dividido por conceção, e evita por completo o problema da exclusão.

Uma camada externa de túnel completo precisa de 0.0.0.0/0 menos os intervalos locais. O formato não consegue exprimir uma exclusão, por isso o complemento tem de ser calculado e colado.

[Interface]
PrivateKey = ...
Address = 10.99.4.2/32

[Peer]
PublicKey = ...
Endpoint = 198.51.100.44:51820
AllowedIPs = 198.51.100.44/32, 10.20.0.0/16, 10.21.0.0/16

Quando o cliente interno não instala as suas próprias rotas, enumere você os prefixos corporativos. Um prefixo em falta nessa linha é um destino que o túnel externo nunca transporta. Uma cópia desatualizada da lista é pior do que nenhuma, porque ainda parece correta.

Ordem, métricas e o segundo adaptador

Ligue primeiro o túnel externo e só depois inicie o cliente corporativo. A ligação ao ponto final sai então pelo WireGuard em vez do gateway local. Dê à interface corporativa uma métrica mais baixa para que os seus prefixos ganhem nos endereços que possui.

# which interface currently claims the corporate prefix?
Find-NetRoute -RemoteIPAddress 10.20.10.5 | Select-Object -First 1

# prefer the corporate interface for its own prefixes
Set-NetIPInterface -InterfaceAlias 'Corp VPN' -InterfaceMetric 3
Set-NetIPInterface -InterfaceAlias 'wg-personal' -InterfaceMetric 40

wg show interfaces

As métricas são o passo que as pessoas saltam. Sem uma ordem, a rota instalada por último ganha para o prefixo sobreposto. Isso muda entre arranques, e é por isso que o problema parece intermitente.

Os clientes baseados no OpenVPN 2.6 acrescentam uma armadilha própria. Quando o adaptador de descarga do canal de dados já está ocupado, uma segunda instância simplesmente recusa arrancar. Acrescentar disable-dco ao perfil volta ao caminho TAP mais antigo, e então ambos correm lado a lado.

Onde o caminho encaixado se quebra

Desligar o túnel externo mata o interno. Voltar a ligar apenas o cliente interno costuma enviá-lo direto para a internet e remove silenciosamente o encaixamento. Teste a sequência de raiz todas as vezes, começando com os dois túneis parados.

Espere uma MTU útil mais pequena. Cada camada acrescenta sobrecarga, por isso um par inicial à volta de 1420 e 1400 é um ponto de partida. Uma transferência que encrava em pacotes grandes enquanto os pedidos pequenos passam é o sinal habitual. A política corporativa é o outro limite, porque um cliente que exige um dispositivo gerido pode considerar um caminho encaixado uma violação.

Quando as duas pontas são redes fixas, um túnel de local para local entre os gateways remove o problema da ordem em vez de o gerir. Num só portátil, dois túneis coexistem apenas quando cada um tem a sua própria interface e uma regra que seleciona destinos por prefixo.

Artigos relacionados