Você tem os sintomas de um problema na MTU : algumas conexões TCP congelam, de forma mais ou menos reproduzível para um determinado comando ou URL, mas sem um padrão geral facilmente discernível. Um sintoma revelador é que as sessões interativas do ssh funcionam bem, mas as transferências de arquivos quase sempre falham. Além disso, o pppoe é o portador número um do problema da MTU para usuários domésticos. Então eu prescrevo um cheque MTU.
O que é isso?
O m aximum t ransmission u nit é o tamanho máximo de um pacote através de uma ligação de rede. A MTU varia de meio de transporte para meio de transporte, por exemplo, Ethernet com fio e Wi-Fi (802.11) têm MTUs diferentes, e os links ATM (que compõem a maior parte da infraestrutura de longa distância) possuem, cada um, seu próprio MTU.
O PPPOE é um protocolo encapsulado, o que significa que cada pacote consiste em alguns bytes de cabeçalho seguidos pelo pacote subjacente - diminuindo o tamanho máximo do pacote pelo tamanho do cabeçalho.
O IP permite que os roteadores fragmentem pacotes se detectarem que são muito grandes para o próximo salto, mas isso nem sempre funciona. Em teoria, o MTU adequado deve ser descobertoautomaticamente , mas isso também nem sempre funciona. Em particular, o Google sugere que o Network Manager nem sempre atue adequadamente nas informações da MTU obtidas com a 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ê possui tracepath
os iputils do Linux , execute tracepath 8.8.8.8
o MTU para ver o caminho para o servidor DNS do Google. Se sua versão do traceroute
tiver uma --mtu
opção, execute traceroute -n --mtu 8.8.8.8
. Consulte Descubra o MTU entre mim e o IP de destino para obter 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 respondam a eles, por exemplo ping -c 1 -s 42 8.8.8.8
(no Linux; em outros sistemas, consulte a documentação do seu ping
comando). 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 será entregue. 1464 é um valor máximo típico se a parte limitante da infraestrutura for a sua rede Ethernet local. Se você tiver sorte, quando enviar um pacote muito grande, verá uma mensagem como Frag needed and DF set (mtu = 1492)
. Se você não tiver sorte, continue experimentando o valor até encontrar o valor máximo e adicione 28 ( -s
especifica o tamanho da carga útil e há 28 bytes de cabeçalhos além disso). Veja tambémComo 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 única vez (Linux): execute
ifconfig eth0 mtu 1454
- Permanentemente (Debian e derivados como o Ubuntu, se não estiver usando o Network Manager): Editar
/etc/network/interfaces
. Logo após a entrada para sua interface de rede (após a iface eth0 …
diretiva), adicione uma linha com pre-up ifconfig $IFACE mtu 1454
. Como alternativa, se o seu endereço IP for estático, você poderá adicionar o mtu 1454
parâmetro à iface eth0 inet static
diretiva.
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 executável mundialmente ( chmod a+rx
):
#!/bin/sh
ifconfig $IFACE mtu 1454
Mais recursos