Solución para problemas de red en Ubuntu Fedora CentOS y otros sistemas Linux - solo se puede acceder a Baidu
Primero permítanme presentarles la información de contexto sobre este problema.
Un paquete TCP típico tiene un campo de ventana con un tamaño máximo de ventana de 64 KB. En los primeros días del desarrollo de Internet, la mayoría de los sistemas no tenían la capacidad de procesar datos mayores que esto, por lo que este tamaño era suficiente, pero para las aplicaciones de ancho de banda actuales, ya es demasiado pequeño.
Para resolver este problema, en 1992 se propuso una solución llamada escalado de ventana, que proporciona una opción adicional de ampliación de ventana TCP que contiene un factor de escala de 8 bits. El valor de esta opción especifica qué tan grande debe ser la ventana, y se implementa deslizando varios bits del valor del tamaño de la ventana. Por ejemplo, si el factor de escala se establece en 5, el tamaño de la ventana debería desplazarse 5 bits o multiplicarse por 32.
La opción de escalado de ventana aumenta la definición de ventana TCP de 16 bits a 32 bits. Esto no se logra modificando el encabezado TCP, que todavía usa 16 bits, sino definiendo una opción que realiza una operación de escalado sobre los 16 bits.
En los kernels 2.6.16 y anteriores, el factor de escala predeterminado era 0, por lo que no se aumentaba el tamaño de la ventana. En el kernel 2.6.17, el factor de escala se estableció en 7. Idealmente, esto no debería causar problemas. Pero en la práctica, algunos routers “defectuosos” reescriben la opción TCP de escalado de ventana, estableciendo el factor de escala en 0, pero sin cambiar la capacidad de procesamiento real de la opción.
Esencialmente, esto significa que algunos sitios web no serán accesibles desde sistemas que usan kernel 2.6.17 y superior. Desde la perspectiva de los desarrolladores del kernel, considerarían que esos routers están defectuosos y necesitan ser reemplazados. En realidad, estos routers pueden seguir utilizándose durante muchos años antes de ser reparados o reemplazados.
Una forma de resolver este problema es reconfigurar la opción de escalado de ventana del kernel de Linux. Aunque esto no reparará los routers defectuosos, si está afectado por problemas de escalado de ventana, este método le permitirá conectarse a sitios remotos.
La solución es editar el archivo /etc/sysctl.conf y agregar la siguiente línea:
net.ipv4.tcp_window_scaling = 0Elimine el # del principio
Esto deshabilitará completamente la función de escalado de ventana, lo que le permitirá conectarse a algunos sitios a los que anteriormente no podía acceder. Correcta o incorrectamente, los desarrolladores del kernel se niegan a revertir este cambio, por lo que usar esta opción le permite deshabilitar su propia función de escalado de ventana para volver a la configuración predeterminada anterior a 2.6.17, y también puede conectarse a esos sitios inaccesibles y convencerlos de que deberían buscar y reemplazar los routers defectuosos.