Im transparenten Modus werden die folgenden iptable-Regeln verwendet, um den Datenverkehr zu Squid umzuleiten.
iptables -I PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 3128
Meines Wissens ändert REDIRECT die Ziel-IP-Adresse in die IP der lokalen Schnittstelle.
Wenn der Datenverkehr Squid erreicht, woher weiß Squid, wohin er weitergeleitet werden muss, da sich die Ziel-IP jetzt geändert hat?
Antwort1
Sie haben Recht REDIRECT
, dass Squid mit die ursprünglich vorgesehene Ziel-IP nicht sehen kann. Stattdessen löst es den vom Client im Host:
HTTP-Header bereitgestellten Host auf, was bei HTTP 1.1 obligatorisch ist.
Antwort2
Das ist dem Gateway sehr ähnlich.
Wenn der Client-Host nicht weiß, wo sich der Ziel-Host befindet, sendet er das Paket an das Standard-Gateway. Und das Gateway bestimmt, wohin das Paket gesendet werden soll.
src
Transparente Proxys machen dasselbe. Alle Pakete an xxx.xxx.xxx.xxx:80 werden an Port 3128 umgeleitet , statt an den im Paketheader angegebenen Port. Squid analysiert das Paket und seine Header – dst
und die entsprechenden Ports – und übermittelt das Paket dann wie ein Gateway oder sendet sofort eine Antwort, wenn es zuvor zwischengespeichert wurde.
Die Hauptidee besteht darin, dass der Zielport in jedem Paket gespeichert wird, während das Paket während der Übertragung an die verschiedenen Hosts/Ports weitergeleitet werden kann.