VPNSmith
Ferramenta grátis - split tunneling WireGuard

Calculadora AllowedIPs do WireGuard

O WireGuard não tem uma opção «excluir»: para encaminhar tudo menos a sua LAN ou um endereço, o AllowedIPs tem de listar todas as outras redes. Indique o que o túnel deve transportar e o que deve deixar de fora, e obtenha a linha AllowedIPs exata, um bloco [Peer] pronto a colar e os comandos para verificar as rotas. Tudo é calculado no seu navegador.

Funciona inteiramente no seu navegador. Nada do que escreve sai da página.

Normalmente 0.0.0.0/0, ::/0 (tudo). Para um túnel que só chega a uma rede remota, indique essa rede, por exemplo 10.0.0.0/24. Separe as entradas com vírgulas, espaços ou quebras de linha.

A sua LAN, faixas privadas ou endereços isolados (um IP sozinho vale /32 ou /128).

Volta a ser adicionado depois das exclusões. Coloque aqui a sub-rede do seu túnel WireGuard se cair numa faixa excluída.

Um endereço IP, não um nome de host. É excluído como endereço único, o que evita o loop de roteamento no Linux.

Comandos de teste de rotas para
  • No Linux com wg-quick, uma lista sem /0 que cobre o IP público do servidor envia os pacotes cifrados para o túnel. Indique acima o IP do servidor para o excluir.

Resultado

24
IPv4: prefixos
1
IPv6: prefixos
99.99%
do espaço IPv4 no túnel
AllowedIPs = 0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.168.0.0/24, 192.168.2.0/23, 192.168.4.0/22, 192.168.8.0/21, 192.168.16.0/20, 192.168.32.0/19, 192.168.64.0/18, 192.168.128.0/17, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 224.0.0.0/3, ::/0
peer.conf
[Peer]
PublicKey = <server public key>
Endpoint = SERVER_PUBLIC_IP:51820
AllowedIPs = 0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.168.0.0/24, 192.168.2.0/23, 192.168.4.0/22, 192.168.8.0/21, 192.168.16.0/20, 192.168.32.0/19, 192.168.64.0/18, 192.168.128.0/17, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 224.0.0.0/3, ::/0
PersistentKeepalive = 25
verify-routes.sh
# O que o peer captura, tal como está carregado no kernel
sudo wg show wg0 allowed-ips

# Um endereço excluído: NÃO deve usar a interface WireGuard
ip route get 192.168.1.10

# Um endereço no túnel: deve usar a interface WireGuard
ip route get 1.1.1.1

O split tunneling é preciso num servidor que controla

No seu próprio servidor WireGuard decide cada faixa que passa por ele, o endereço do endpoint nunca muda e excluí-lo é uma linha. O VPS de entrada da Contabo inclui um endereço IPv4 público e acesso root completo.

Link de afiliado: podemos receber uma comissão, sem custo extra para si. A calculadora continua gratuita e não depende disso.

Ver o VPS da Contabo

Porque uma única exclusão vira duas dúzias de linhas

O AllowedIPs faz dois trabalhos ao mesmo tempo: é a lista de destinos que o cliente envia para o túnel e a lista de endereços de origem que aceita do peer. Ambas se escrevem em blocos CIDR, e um bloco CIDR é sempre uma faixa de tamanho potência de dois, alinhada pelo seu próprio tamanho. Retirar um /24 de todo o espaço IPv4 deixa, portanto, um bloco por cada bit entre /0 e /24: 24 prefixos. Não é um defeito do resultado, é a resposta exata mais curta.

Tudo menos 192.168.1.0/24, com o IPv6 ainda inteiro no túnel:

AllowedIPs = 0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.168.0.0/24, 192.168.2.0/23, 192.168.4.0/22, 192.168.8.0/21, 192.168.16.0/20, 192.168.32.0/19, 192.168.64.0/18, 192.168.128.0/17, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 224.0.0.0/3, ::/0

No Linux, o wg-quick já mantém utilizáveis as rotas da LAN diretamente ligada em modo túnel completo, graças à regra suppress_prefixlength 0. Uma exclusão explícita importa sobretudo no Android e no iOS, no Windows quando abdica do kill-switch para ter acesso local, em redes que não estão diretamente ligadas (uma segunda sub-rede atrás do router) e em endereços públicos que quer alcançar fora da VPN, como um banco que bloqueia saídas VPN.

Faixas que se costumam excluir

Exclua só o necessário: cada faixa deixada de fora é tráfego que sai do túnel sem proteção. Estas são as faixas reservadas padrão e o motivo para excluir cada uma.

FaixaO que éExcluir quando
192.168.1.0/24Uma LAN doméstica típica (confirme a sua)Precisa da impressora, do NAS ou do router enquanto está ligado
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16Todo o IPv4 privado RFC 1918Muda entre redes que não conhece de antemão
169.254.0.0/16IPv4 link-local (RFC 3927)Dispositivos autoatribuídos, ou o endereço de metadados cloud 169.254.169.254 numa VM
fc00::/7IPv6 unique local (RFC 4193)Os dispositivos da LAN também usam endereços IPv6 ULA
fe80::/10IPv6 link-local (RFC 4291)Raramente necessário: as rotas por interface já ganham
203.0.113.10/32Um endereço público (exemplo)Um serviço que recusa tráfego VPN, ou o IP do próprio servidor no Linux

Perguntas frequentes

Como excluo a minha rede local de um túnel WireGuard?
O AllowedIPs não tem sintaxe de exclusão, por isso escreve-se o complemento. Coloque 0.0.0.0/0, ::/0 no campo das redes incluídas e a sua LAN, por exemplo 192.168.1.0/24, no das exclusões: a calculadora devolve os blocos CIDR que cobrem todo o resto. Cole essa linha na secção [Peer] da configuração do cliente. No Android, a app oficial tem uma caixa «Exclude private IPs» que faz o mesmo para as faixas privadas.
Porque é que a linha AllowedIPs é tão longa?
Um bloco CIDR é uma faixa de tamanho potência de dois alinhada pelo seu tamanho, por isso abrir um buraco deixa um bloco por cada bit de diferença. Retirar um /24 de 0.0.0.0/0 dá 24 prefixos; retirar as três faixas RFC 1918 dá mais alguns. A lista parece longa, mas é exata, e o kernel trata-a sem custo mensurável.
Tenho de excluir o IP do próprio servidor WireGuard?
Com o wg-quick no Linux, sim, assim que a sua lista não for um simples 0.0.0.0/0. O wg-quick só aplica o roteamento por políticas, que protege o endpoint, às entradas /0; com qualquer outra lista as rotas vão para a tabela principal e, se cobrirem o endereço público do servidor, os pacotes cifrados são enviados para o próprio túnel. Indique o endpoint na calculadora: é excluído como endereço único. Nas outras plataformas também não custa nada.
Excluir uma faixa desativa o kill-switch no Windows?
Sim. O WireGuard para Windows só oferece «Block untunneled traffic (kill-switch)» quando o túnel tem um único peer cujo AllowedIPs contém 0.0.0.0/0 ou ::/0. Uma lista calculada sem /0 faz desaparecer essa opção. Decida o que pesa mais nesse dispositivo: o acesso local ou o bloqueio rígido de tudo o que sai do túnel.
Cliente ou servidor: onde vai este AllowedIPs?
Na secção [Peer] do cliente, onde decide o que o cliente envia para o túnel. No servidor, cada peer cliente guarda só o seu próprio endereço de túnel, por exemplo 10.66.66.2/32. Dois peers do servidor nunca devem partilhar uma faixa: o WireGuard atribui cada endereço a um único peer e o último configurado fica com ele.
O DNS continua a passar pelo túnel depois de excluir a LAN?
Não, se o seu servidor DNS estiver na faixa excluída. Um router em 192.168.1.1 usado como resolver passa a ser alcançado fora do túnel e cada consulta sai sem proteção. Defina DNS = na secção [Interface] para um endereço que fique dentro do túnel, como o IP de túnel do servidor ou um resolver público que a lista ainda encaminha.