Notas Técnicas do zhaoJian

Solução para sistemas Linux como Ubuntu Fedora CentOS que só conseguem acessar alguns sites

Tecnologia ~2839 palavras · 8 min de leitura - visualizações

Primeiro, deixe-me apresentar o conhecimento de fundo deste problema.

Um pacote de dados TCP típico tem um campo de janela com tamanho máximo de 64KB. No início do desenvolvimento da Internet, a maioria dos sistemas não tinha capacidade para processar dados maiores que isso, então esse tamanho era suficiente, mas para as aplicações de largura de banda de acesso atuais, isso já é muito pequeno.

Para resolver esse problema, uma solução chamada escalonamento de janela foi proposta em 1992, que fornece uma opção adicional de expansão de janela TCP que contém um fator de escala de 8 bits. O valor desta opção especifica quão grande a janela deve ser, implementado deslizando alguns bits do valor do tamanho da janela. Por exemplo, se o fator de escala for definido como 5, o tamanho da janela deve ser deslocado 5 bits ou multiplicado por 32.

A opção de expansão de janela aumenta a definição de janela TCP de 16 bits para 32 bits. Isso não é implementado modificando o cabeçalho TCP, o cabeçalho TCP ainda usa 16 bits, mas é concluído definindo uma opção que expande os 16 bits.

Nos kernels 2.6.16 e anteriores, o fator de escala padrão era 0, então não havia aumento no tamanho da janela. No kernel 2.6.17, o fator de escala foi definido como 7. Idealmente, isso não deveria causar problemas. Mas na realidade, alguns roteadores “quebrados” reescrevem a opção TCP de escalonamento de janela — definindo o fator de escala como 0, mas a opção de capacidade de processamento real não muda.

Essencialmente, isso significa que alguns sites não poderão ser acessados por sistemas usando kernel 2.6.17 e superior. Do ponto de vista dos desenvolvedores do kernel, eles considerariam que esses roteadores estão quebrados e precisam ser substituídos. Na realidade, esses roteadores podem continuar em uso por muitos anos antes de serem reparados ou substituídos.

Uma maneira de resolver esse problema é redefinir a opção de escalonamento de janela do kernel Linux. Embora isso não conserte os roteadores quebrados, se você estiver sendo afetado pelo problema de escalonamento de janela, esse método pode permitir que seu sistema se conecte a sites remotos.

A solução é editar o arquivo /etc/sysctl.conf e adicionar a seguinte linha:

net.ipv4.tcp_window_scaling = 0

Remova o # na frente

Isso desabilitará completamente a funcionalidade de escalonamento de janela, o que permitirá que você se conecte a alguns sites que anteriormente não eram acessíveis. Certo ou errado, os desenvolvedores do kernel se recusam a reverter essa mudança, portanto, usar essa opção pode tanto desabilitar sua própria funcionalidade de escalonamento de janela para voltar às configurações padrão anteriores ao 2.6.17, quanto conectar-se a sites que não podiam ser alcançados e convencê-los de que devem procurar e substituir os roteadores quebrados.

Compartilhar:

Comentários