Como encaminhar um único site para fora do seu túnel WireGuard
Uma única rota /32 pela gateway LAN mantém um site na sua ligação normal, desde que a firewall o permita e o DNS concorde quanto ao endereço.
Excluir um nome de anfitrião é algo que um túnel não consegue fazer. Uma rota, porém, pode encaminhar um único endereço para fora do túnel e pela gateway de casa, e isso costuma bastar para um site. O senão é que tudo o que está a jusante da rota tem de concordar: a firewall tem de deixar sair o pacote, o DNS tem de devolver o endereço que encaminhou, e o site tem de continuar a usar esse endereço. Quando qualquer um dos três se desvia, a exceção deixa de funcionar sem se anunciar.
Leia o endereço de destino antes de tocar no túnel
Carregue o site uma vez com o túnel ativo e depois veja o endereço do par a que o navegador realmente se ligou. No Linux, ss -tunp lista o endereço remoto de cada socket aberto, e dig +short no mesmo nome mostra o que o resolvedor devolveu. Tenha os dois números à frente.
As duas respostas muitas vezes não coincidem, e essa discrepância é todo o problema. Os sites grandes colocam uma rede de conteúdos à frente da origem, pelo que o endereço que o seu resolvedor devolve agora pode não ser o que o navegador usou há um minuto. Encaminhe o que observou no socket, não o que um guia mais antigo lista. Se as respostas continuarem a rodar entre regiões, uma exceção de endereço é a ferramenta errada para esse site em concreto.
Execute a pesquisa uma segunda vez a partir de outra rede e registe a resposta IPv6 juntamente com a IPv4. Um túnel que transporta ambas as famílias precisa de uma exceção nas duas, senão o navegador recua em silêncio para o caminho IPv6 que nunca tocou. Anote os endereços e a data num sítio onde volte a olhar.
Coloque uma rota de anfitrião no cliente
Suponha que a interface se chama home-wg e que o router LAN está em 192.168.1.1. O NetworkManager aceita uma rota cuja gateway é esse router e cujo comprimento de prefixo cobre os 32 bits completos, e o kernel prefere-a porque o prefixo mais longo ganha.
nmcli connection modify home-wg +ipv4.routes "198.51.100.20/32 192.168.1.1"
nmcli connection up home-wg
ip route get 198.51.100.20
A gateway tem de ser alcançável sem o túnel; apontar o salto seguinte para o endereço do túnel frustra o propósito, porque o pacote voltaria a entrar na interface que está a tentar evitar. Depois de a ligação voltar a subir, ip route get para a exceção deverá imprimir a gateway LAN, e o mesmo comando para um resolvedor público deverá continuar a imprimir o dispositivo do túnel.
Um perfil wg-quick não tem campo de rotas, por isso a mesma exceção vive numa linha PostUp que acrescenta a rota de anfitrião à tabela principal com a interface LAN como seu dispositivo. Baixe e volte a subir a interface depois de editar, porque uma interface em execução nunca relê o seu ficheiro. As regras fwmark que o wg-quick instala guiam apenas os seus próprios pacotes encapsulados, por isso o tráfego normal do navegador continua a seguir a tabela principal e encontra o seu /32.
O kill switch é a próxima coisa que o bloqueia
Uma política de firewall que só admite tráfego na interface do túnel rejeitará a exceção mesmo quando a rota está exatamente certa. Leia as regras por trás do interruptor em vez de confiar no interruptor, porque as que implementam um kill switch costumam estar limitadas a um nome de interface.
O que quer é uma permissão estreita para a interface física e esse único destino, colocada antes do descarte, enquanto a política predefinida fica intocada. Pausar o kill switch por completo prova o ponto, mas também deixa a máquina exposta enquanto se esquece de o voltar a ligar.
Teste as duas direções em separado. Um pedido ao endereço da exceção deverá ter sucesso, enquanto um pedido a um site não relacionado continua a sair pelo túnel. Se ambos tiverem sucesso mas o segundo indicar o endereço de casa, é a ordem das regras da firewall que está errada, não a rota.
O DNS decide a que endereço o navegador liga
Quando o nome é resolvido dentro do túnel, o resolvedor do fornecedor pode responder com um endereço diferente do que o local deu. A sua rota aplica-se então a um endereço que o navegador nunca contacta, e a página carrega pelo túnel como se nada tivesse mudado. Esta falha parece uma exceção quebrada mesmo quando a tabela de encaminhamento está correta.
Envie também as consultas desse nome pelo resolvedor local, ou ignore os nomes por completo e teste o endereço diretamente. Separar o endereço deixando o DNS dentro do túnel é a versão meio acabada mais comum desta configuração, e também a mais difícil de notar, porque o site continua a funcionar, só não como pretendia.
A mesma exceção no router, uma vez, para cada dispositivo
Com o túnel a correr no router, a rota de anfitrião pertence à tabela de encaminhamento por políticas do router e aponta para a gateway WAN em vez da LAN. Cada dispositivo atrás herda a exceção, o que conta para uma box de streaming ou um portátil de trabalho cujas definições de rede não pode alterar.
Deixe o túnel como saída predefinida para todos os outros clientes e depois verifique a partir de uma máquina cliente, não da consola do router. Carregue o site da exceção e um segundo site na mesma sessão do navegador e compare os endereços de saída; se o segundo ainda mostrar o túnel, a tabela de políticas está a fazer o que pediu.
Anote o endereço, a data e o motivo nas notas do router. Uma exceção construída em torno de um endereço que depois se muda torna-se uma avaria que ninguém consegue explicar dentro de um ano, e a correção parece sempre um mistério até alguém encontrar a nota antiga.