Você tem os sintomas de um problema MTU : algumas conexões TCP congelam, mais ou menos reprodutível para um determinado comando ou URL, mas sem um padrão geral facilmente discernível. Um sintoma revelador é que as sessões ssh interativas funcionam bem, mas as transferências de arquivos quase sempre falham. Além disso, pppoe é o principal responsável pelo problema de MTU para usuários domésticos. Então, eu prescrevo uma verificação de MTU.
O que é isso? O m aximum t ransmission u nit é o tamanho máximo de um pacote em um link de rede. O MTU varia de meio de transporte para meio de transporte, e. Ethernet com fio e Wi-Fi (802.11) têm MTUs diferentes e links ATM (que compõem a maior parte da infraestrutura de longa distância) cada um tem seu próprio MTU. O PPPOE é um protocolo encapsulado, o que significa que cada pacote consiste em alguns bytes de cabeçalho seguidos pelo subjacente pacote - por isso diminui o tamanho máximo do pacote pelo tamanho do cabeçalho. O IP permite que os roteadores fragmentem pacotes se detectarem que eles são grandes demais para o próximo salto, mas isso nem sempre trabalhos. Em teoria, o próprio MTU deve ser descoberto automaticamente , mas isso também nem sempre funciona. Em particular, o googling sugere que o Network Manager nem sempre atua adequadamente nas informações da MTU obtidas a partir da descoberta da MTU, mas não sei quais versões são afetadas ou quais são os casos de uso problemáticos.
Como medir isso.
Se você tem tracepath
do Linux iputils , execute tracepath 8.8.8.8
para ver o MTU sobre o caminho para o servidor DNS do Google.
Se a sua versão de traceroute
tiver uma opção --mtu
, execute traceroute -n --mtu 8.8.8.8
.
Veja Descubra o MTU entre mim e o IP de destino para mais opções.
Na falta de ferramentas automatizadas, você pode medir manualmente. Tente enviar pacotes de ping de um determinado tamanho para hosts externos que respondem a eles, por exemplo, ping -c 1 -s 42 8.8.8.8
(no Linux; em outros sistemas, procure a documentação do seu comando ping
). Seus pacotes devem passar por valores pequenos o suficiente de 42 (se 42 não funcionar, algo está bloqueando pings). Para valores maiores, o pacote não passará. 1464 é um valor máximo típico se a parte limitadora da infraestrutura for sua rede Ethernet local. Se tiver sorte, quando enviar um pacote muito grande, você verá uma mensagem como Frag needed and DF set (mtu = 1492)
. Se você não tiver sorte, continue experimentando o valor até encontrar o máximo e, em seguida, adicione 28 ( -s
especifica o tamanho da carga útil e há 28 bytes de cabeçalhos além disso).
Veja também Como otimizar sua conexão com a Internet usando MTU e RWIN nos fóruns do Ubuntu.
Como configurá-lo (substitua 1454 pelo MTU que você determinou e eth0
pelo nome da sua interface de rede)
- Como uma vez (Linux):
executar
ifconfig eth0 mtu 1454
- Permanentemente (Debian e derivados como o Ubuntu, se não estiver usando o Network Manager):
Edite
/etc/network/interfaces
. Logo após a entrada da sua interface de rede (após a diretivaiface eth0 …
), adicione uma linha compre-up ifconfig $IFACE mtu 1454
. Como alternativa, se o seu endereço IP for estático, você poderá adicionar o parâmetromtu 1454
à diretivaiface eth0 inet static
. -
Permanentemente (Debian e derivados como o Ubuntu, com ou sem o Network Manager): Crie um script chamado
/etc/network/if-pre-up.d/mtu
com o seguinte conteúdo e torne-o mundialmente executável (chmod a+rx
):#!/bin/sh ifconfig $IFACE mtu 1454
Outros recursos
- Como diagnosticar uma conexão confiável não confiável? (particularmente A resposta de Mike Pennington ) pode ser útil se o A abordagem simples de medida e limite descrita aqui não funciona.