Calculadora de MTU do WireGuard
O túnel liga e responde ao ping, mas as páginas travam? Introduza o maior payload de ping sem fragmentação que passa, ou escolha o seu tipo de ligação, e obtenha a MTU para o wg0.conf, os comandos para a aplicar e a escada de pings para a verificar. Tudo corre no seu navegador.
Corre inteiramente no seu navegador. Nada do que escreve sai da página.
Exemplo: ping -M do -s 1472 IP_PUBLICO_SERVIDOR responde, por isso escreve 1472. Se falhar, siga a escada nos comandos de teste abaixo e introduza o maior tamanho que passa.
Resultado
O seu caminho transporta pacotes completos de 1500 bytes: o 1420 predefinido serve. Se as transferências grandes continuarem a travar, a causa está noutro lado (encaminhamento, masquerade, AllowedIPs). Pode mesmo assim escrever MTU = 1420 explicitamente.
[Interface]
PrivateKey = <client private key>
Address = 10.66.66.2/32
MTU = 1420
[Peer]
PublicKey = <server public key>
Endpoint = SERVER_PUBLIC_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
# 1. Adicione a linha MTU em [Interface] no /etc/wireguard/wg0.conf e reinicie o túnel
sudo wg-quick down wg0 && sudo wg-quick up wg0
# 2. Ou altere-a a quente sem reiniciar (perde-se no próximo wg-quick down)
sudo ip link set dev wg0 mtu 1420
ip link show wg0 | grep -o 'mtu [0-9]*'
# Escada de pings para o IP PÚBLICO do servidor, fora do túnel: comece de cima, o primeiro tamanho que responde é o seu payload
# Um tamanho que falha mostra 'message too long', 'needs to be fragmented' ou nenhuma resposta
ping -M do -s 1472 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1464 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1452 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1444 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1400 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1372 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1300 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1252 -c 3 SERVER_PUBLIC_IP
# Verificação através do túnel, para o IP de túnel do servidor: tem de responder com a nova MTU
ping -M do -s 1392 -c 3 10.66.66.1
# payload = MTU menos 28; se falhar, baixe mais a MTU
Metade dos problemas de MTU é o caminho, não a configuração
NAT duplo, o router de casa e um túnel empilhado sobre outro túnel roubam todos bytes ao seu caminho. Um VPS com um IPv4 público limpo é um único salto numa ligação de 1500 bytes, onde o 1420 predefinido funciona sem mais. O VPS de entrada da Contabo inclui um endereço IPv4 público e acesso root completo.
Ligação de afiliado: podemos receber uma comissão, sem custo extra para si. A calculadora continua gratuita e não depende disso.
De onde vêm os números
O WireGuard embrulha cada um dos seus pacotes num datagrama UDP. O invólucro tem um tamanho fixo, por isso a MTU do túnel é simplesmente a MTU do caminho menos esse invólucro. É exatamente o que o wg-quick faz quando nenhuma MTU é indicada: pega na MTU da rota para o endpoint e subtrai 80, daí o conhecido 1420 numa ligação de 1500 bytes.
| Cabeçalho | Bytes |
|---|---|
| Cabeçalho IPv4 exterior | 20 |
| Cabeçalho IPv6 exterior | 40 |
| Cabeçalho UDP | 8 |
| Cabeçalho de dados do WireGuard (tipo, índice, contador) | 16 |
| Etiqueta de autenticação Poly1305 | 16 |
| Total sobre IPv4 / sobre IPv6 | 60 / 80 |
| Ping: cabeçalhos IPv4 + ICMP à volta do payload | 28 |
Um payload de ping de 1472 bytes viaja portanto num pacote de 1500 bytes. Se 1472 passa com a flag de não fragmentar, a MTU do seu caminho é 1500 e o 1420 predefinido serve. Se só 1400 passa, a MTU do caminho é 1428 e o WireGuard não deve enviar mais de 1348 sobre IPv6. A calculadora subtrai 80, salvo se indicar que a ligação exterior é só IPv4: nesse caso bastam 60.
Valores típicos quando não consegue medir
Um valor medido ganha sempre a uma tabela. Estas referências servem quando não pode executar o ping, por exemplo num telemóvel ou numa rede que não controla.
| Tipo de ligação | MTU do caminho | MTU do WireGuard |
|---|---|---|
| Ethernet, fibra, cabo | 1500 | 1420 (predefinido) |
| ADSL/VDSL com PPPoE | 1492 | 1412 |
| Móvel, 5G, CGNAT | variável | 1280 (recurso) |
| Túnel dentro de outra VPN | reduzido duas vezes | 1280 (recurso) |
| Mínimo garantido do IPv6 | 1280 | 1280 |