Squid carga páginas web incorrectamente

Squid carga páginas web incorrectamente

Estoy intentando configurar mi servidor VPS para que funcione como un proxy HTTP simple. Instalé Squid 3.3.8 en CentOS 7.1.1503 y configuré la autenticación básica con ncsa_auth. Aunque todo el esquema parece estar funcionando y me estoy conectando exitosamente a mi proxy desde otra PC, ahora tengo problemas con la carga de la página web. Por ejemplo, cuando intento abrirhttp://espejos.liquidweb.com/, la página web no se carga correctamente, Firefox simplemente carga la mitad y luego veo el mensaje que dice "Transfiriendo datos desde liquidweb.com" por un tiempo. Luego desaparece sin ningún resultado: la página web todavía se muestra medio cargada. Investigué un poco sobre este problema, pero las únicas soluciones que pude encontrar estaban relacionadas con problemas de DNS. No parece ser un problema relacionado con el DNS y agregar dns_v4_first onla opción en mi configuración de Squid no produjo ningún resultado. Quiero señalar especialmente que este no es un problema relacionado con el sitio o el navegador, porque apareció en todos los navegadores en los que intenté abrir el sitio web, y deshabilitar el proxy en la configuración del navegador soluciona el problema de inmediato. Tampoco parece ser un problema relacionado con el ISP, ya que puedo descargar los archivos a través de este proxy con una velocidad promedio de ~50 Mbps. Mi squid.confcaptura de pantalla y la de la página web cargada incorrectamente se encuentran a continuación, ¡gracias de antemano por cualquier conjetura!

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic childred 5
auth_param basic realm liproxy
auth_param basic credentialsttl 2 hours

#acl localnet src 10.0.0.0/8    # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16    # RFC1918 possible internal network
#acl localnet src fc00::/7       # RFC 4193 local private network range
#acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
acl Safe_ports port 80          # http
#acl Safe_ports port 21         # ftp
acl Safe_ports port 443         # https
#acl Safe_ports port 70         # gopher
#acl Safe_ports port 210        # wais
#acl Safe_ports port 1025-65535     # unregistered ports
#acl Safe_ports port 280        # http-mgmt
#acl Safe_ports port 488        # gss-http
#acl Safe_ports port 591        # filemaker
#acl Safe_ports port 777        # multiling http
acl CONNECT method CONNECT

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost manager
http_access deny manager

#http_access deny to_localhost

acl ncsaauth proxy_auth REQUIRED
http_access allow ncsaauth
dns_v4_first on

http_access deny all

http_port 0.0.0.0:3128

#cache_dir ufs /var/spool/squid 100 16 256

coredump_dir /var/spool/squid

refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern .       0   20% 4320

etc/sysconfig/iptables

*filter

# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allows all outbound traffic
# You could modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

-A INPUT -p tcp --dport 3128 -j ACCEPT

# Allows SSH connections 
# The --dport number is the same as in /etc/ssh/sshd_config
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# Now you should read up on iptables rules and consider whether ssh access 
# for everyone is really desired. Most likely you will only allow access from certain IPs.

# Allow ping
#  note that blocking other types of icmp packets is considered a bad idea by some
#  remove -m icmp --icmp-type 8 from this line to allow all kinds of icmp:
#  https://security.stackexchange.com/questions/22711
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls (access via 'dmesg' command)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy:
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

ingrese la descripción de la imagen aquí

Respuesta1

Copiaste tu firewall desde algún lugar de Internet, pero aparentemente sin leerlo ni comprenderlo por completo.

Considere esta sección:

# Allow ping
#  note that blocking other types of icmp packets is considered a bad idea by some
#  remove -m icmp --icmp-type 8 from this line to allow all kinds of icmp:
#  https://security.stackexchange.com/questions/22711
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

Una de las razones por las que es "una mala idea" bloquear todo ICMP es que también está bloqueando cosas como las respuestas de Fragmentación Necesaria, que son necesarias para que funcione el descubrimiento de Path MTU. Y si eso no funciona, las páginas web se cuelgan, las descargas se bloquean, etc.

Para resolver el problema, debes eliminar exactamente lo que dice el comentario.


Mejor aún, deseche este firewall por completo y regrese al firewalldsistema que se incluyó con CentOS 7. Configurará un firewall adecuado sin todas estas trampas para los incautos.

información relacionada