Header Ads

Error Squid connection reset by peer

En el post No forward-proxy ports configured vimos cómo este error (que en realidad no es un error sino un cambió en la configuración del proxy -web caché- Squid) afectó a muchos servidores, ya que a partir de Squid3x es obligatorio incluir un puerto de escucha en modo "normal" (3128 por default) sin importar que nuestro proxy esté en modo transparente.
Ahora se nos presenta otro error: "squid (104) Connection reset by peer", más confuso que el anterior, ya que muchos foros lo atribuyen a que el sitio web que se intenta solicitar esta caído, y que debemos acceder "más tarde", sin embargo el "más tarde" nunca llega.
Los logs (/var/log/squid3/access.log) no aportan mucho y más bien se inclinan hacia esta tesis:
1447945883.741  18874 192.168.1.160 TCP_MISS_ABORTED/000 0 GET http://www.nuevaeps.com.co/Afiliados/Citas.aspx - HIER_DIRECT/ -
Al igual que en en el post anterior, este error es de vieja data (y afecta sin importar el modo en que esté configurado). La razón del por qué ocurre es extensa y tendríamos que dedicarle varios posts. Entonces intentaremos resumirla y si quiere profundizar en el tema, visite la wiki de Squid.
Por lo general (no siempre), este error (en dependencia del escenario) se produce porque la cabecera de la petición del navegador (del terminal local) en ocasiones contiene información errada u obsoleta, que es malinterpretada por el proxy (o por el sitio web que pretendemos acceder) y el proxy devuelve el error. Este problema también está relacionado con el uso indiscriminado de la caché. Los navegadores tienen cache, el proxy, el dns, el proveedor de servicios, también. En resumen, todo el mundo "cachea" y a veces esto trae como consecuencia que nuestro proxy no funcione adecuadamente.
Solución
Sin importar cómo tenga configurado su proxy (transparente o no), para evitar este error y otros similares (y de paso el problema de la caché), lo más recomendable es que ingrese a su archivo de configuración (/etc/squid3/squid.conf) y agregue o modifique los siguientes parámetros:
Directiva "forwarded_for"
Esta directiva es la mayor responsable de este error. Normalmente sirve para ocultar las peticiones de la red local hacia el proxy (y de ahí a internet, siempre que esté centralizada la red), y muchos la colocan en posición "off", sin embargo no es lo más recomendable. Lo mejor en este caso es eliminar completamente el header "X-Forwarded-For" de la siguiente manera:
forwarded_for deleted
Para mayor información, consulte los parámetros.
Modificaciones opcionales
Se recomienda hacer algunos ajustes "finos" adicionales a su squid para minimizar los problemas derivados de la caché, que el "refresh_pattern" trabaje correctamente y que las peticiones de terminales locales estén bien configuradas.
httpd_suppress_version_string on
via off
También puede utilizar la directiva "ignore-cc", para ignorar las peticiones de la "Cache-Control headers". Ejemplo:
http_port IP_DEL_PROXY:PUERTO ignore-cc
Importante
Tenga presente que el uso de estas directivas pueden generar una violación en las especificaciones http; ejemplo: WARNING: HTTP requires the use of Via
Con la tecnología de Blogger.