¿Cómo entiende Squid la dirección IP de destino en modo transparente?

¿Cómo entiende Squid la dirección IP de destino en modo transparente?

En modo transparente, se utilizan las siguientes reglas de iptable para redirigir el tráfico a Squid.

iptables -I PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 3128

Según mi conocimiento, REDIRECT cambia la dirección IP de destino a la IP de la interfaz local.

Entonces, cuando el tráfico llega a Squid, ¿cómo llega Squid a dónde reenviarlo si la IP de destino ha cambiado ahora?

Respuesta1

Tiene razón en que con REDIRECTSquid no puede ver la IP de destino original; en su lugar, resolverá el host proporcionado por el cliente en el Host:encabezado HTTP, que es obligatorio en HTTP 1.1.

Respuesta2

Eso es muy similar a la puerta de enlace.

Cuando el host del cliente no sabe dónde reside el host de destino, envía el paquete a la puerta de enlace predeterminada. Y la puerta de enlace define dónde se debe enviar ese paquete.

El proxy transparente hace lo mismo. Todos los paquetes dirigidos a xxx.xxx.xxx.xxx:80 se desvían al puerto 3128 en lugar del puerto mencionado en el encabezado del paquete. Squid analiza el paquete y sus encabezados src, dsty los puertos correspondientes, y luego envía el paquete como lo hace la puerta de enlace, o envía inmediatamente una respuesta si se almacenó en caché antes.

La idea principal es que el puerto de destino se almacena dentro de cada paquete, mientras que el paquete se puede enrutar a los diferentes hosts/puertos en tránsito.

información relacionada