208.3 Squid als Caching-Proxy einrichten Gewichtung 2
208.3 Squid als Caching-Proxy einrichten
Kandidaten sollten einen Proxy-Server installieren und konfigurieren können, einschließlich Zugriffsregeln, Authentisierung und Ressourcenverbrauch.
Hauptwissensgebiete:
- Squid-3.x-Konfigurationsdateien, Begriffe und Hilfsprogramme
- Methoden zur Zugriffsbeschränkung
- Methoden zur Benutzerauthentisierung von Clients
- Anordnung und Inhalt von ACL in den Squid-Konfigurationsdateien
Dies ist eine auszugsweise Liste der verwendeten Dateien, Begriffe und Hilfsprogramme:
- squid.conf
- acl
- http_access
man pages und andere Dateien
Allgemein
Squid ist ein leistungsstarker Proxy-Caching-Server für Web-Clients. Squid unterstützt mehr als nur HTTP-Datenobjekte: Es unterstützt FTP- und Gopher-Objekte auch. Squid verarbeitet alle Anforderungen in einem einzigen, nicht blockierenden, E / A-gesteuerten Prozess. Squid hält Metadaten und wichtig Objekte im RAM zwischengespeichert. Squid cached DNS-Lookups, unterstützt nicht blockierende DNS-Lookups und unterstützt negatives caching fehlgeschlagener Requests. Squid unterstützt auch SSL, umfassende Zugriffskontrollen und vollständige Anforderungsprotokollierung. Mit dem Lightweight Internet Cache Protocol können Squid-Caches in einer Hierarchie oder einem Mesh angeordnet werden, um zusätzliche Bandbreiteneinsparungen zu erzielen.
Squid kann für eine Reihe von Dingen verwendet werden, einschließlich Bandbreiteneinsparung, Umgang mit Verkehrsspitzen und Zwischenspeichern von Sites, die gelegentlichem nicht verfügbar sind. Squid kann auch zum Loadbalacning verwendet werden. Grundsätzlich erhält der erste squid eine Anfrage von einem Browser, fungiert als Vermittler und leitet die Anfrage an den Server weiter. Squid speichert dann eine Kopie des Objekts. Falls Squid keine weitere Anfrage zu diesem Objekt bekommt, wird damit kein Vorteil erzielt. Wenn jedoch mehrere Clients das Objekt anfordern, bevor es aus dem Cache abläuft, wird squid die Transaktionen beschleunigen und Bandbreite sparen.
Squid besteht aus einem Hauptserverprogramm squid
, einem Domain Name System-Suchprogramm dnsserver
und einigen optionalen Programmen zum Umschreiben von Anforderungen und Durchführen der Authentifizierung sowie einiger Verwaltungs- und Client-Tools. Wenn der Squid startet, erscheint eine konfigurierbare Anzahl von dnsserver-Prozessen, von denen jeder einzelne eine blockierende DNS-Suche (Domain Name System) durchführen kann. Dies reduziert die Wartezeit des Cache auf DNS-Lookups.
Der absolute Pfad zur Konfigurationsdatei von squid lautet /etc/squid/squid.conf
(zumindest auf einem ubuntu 1804).
Optionen und Parameter
http_port
Diese Option legt fest, an welchen Ports der Squid auf Anfragen wartet. Standardmäßig ist dies Port 3128. Ein anderer häufig verwendeter Port ist Port 8080.cache_dir
Wird zum Konfigurieren bestimmter Speicherbereiche verwendet. Wenn Sie mehr als eine Festplatte für zwischengespeicherte Daten verwenden, benötigen Sie möglicherweise mehr als ein Einhängepunkt (z. B. / usr / local / squid / cache1 für die erste Festplatte, / usr / local / squid / cache2 für die zweite Festplatte). Mit squid können Sie mehr als eine cache_dir-Option in Ihrer Konfigurationsdatei haben. Diese Option kann vier Parameter haben. Beispiel :cache_dir /usr/local/squid/cache/ 100 16 256
. Die erste Option legt fest, in welchem Verzeichnis der Cache verwaltet werden soll. Die nächste Option ist ein Größenwert in Megabyte wo der Standardwert 100 Megabyte ist. squid speichert bis zu dieser Datenmenge im angegebenen Verzeichnis. Mit den nächsten beiden Optionen wird die Anzahl der Unterverzeichnisse (erste und zweite Ebene) festgelegt, die in diesem Verzeichnis erstellt werden sollen. squid schafft eine große Zahl Verzeichnisse und speichert jeweils nur wenige Dateien, um den Datenträgerzugriff zu beschleunigen (das Finden des richtigen Eintrags in einem Verzeichnis mit einer Million Dateien ist nicht effizient: Es ist besser, die Dateien in viele kleinere Dateigruppen aufzuteilen, also auf mehrere Verzeichisse).http_access, acl
: Die grundlegende Syntax der Option lautethttp_access allow | deny [!] aclname
. Wenn Sie den Zugriff auf ein internes Netzwerk erlauben und allen anderen Benutzern den Zugriff verweigern möchten, sehen Ihre Optionen möglicherweise so aus :acl home src 10.0.0.0/255.0.0.0 http_access allow home
In der ersten Zeile wird eine Zugriffssteuerungslistenklasse mit dem Namen “Home” für einen internen Netzwerkbereich von IP-Adressen eingerichtet. Der Zweite Zeile erlaubt den Zugriff auf diesen Bereich von IP-Adressen. Angenommen, es ist die letzte Zeile in der Zugriffsliste, werden alle anderen Clients abgelehnt. Siehe auch den Abschnitt über acl.
auth_param
Diese Option wird verwendet, um anzugeben, welches Programm als Authentifikator gestartet werden soll. Sie können den Namen des Programm und alle erforderlichen Parameter angeben.redirect_program, redirect_children
Dasredirect_program
wird verwendet, um anzugeben, welches Programm als Redirector gestartet werden soll. Die Optionredirect_children
gibt an, wie viele Prozesse gestartet werden müssen, um die Umleitung durchzuführen.
wichtige Kommandos
- überprüfen der Konfiguration:
squid -k check
- Neuladen der Konfiguration aus der
squid.conf
mit:
systemctl reload squid
# oder
squid -k reconfigure
# oder
kill -HUP $(cat /var/run/squid.pid)
- Aktivieren der Änderungen zu
cache_dir
:
squid -z
- Konfiguration parsen mit
squid -k parse
. Ein Beispiel:
root@ubuntu:/etc/squid# squid -k parse
2020/01/12 14:49:35| Startup: Initializing Authentication Schemes ...
2020/01/12 14:49:35| Startup: Initialized Authentication Scheme 'basic'
2020/01/12 14:49:35| Startup: Initialized Authentication Scheme 'digest'
2020/01/12 14:49:35| Startup: Initialized Authentication Scheme 'negotiate'
2020/01/12 14:49:35| Startup: Initialized Authentication Scheme 'ntlm'
2020/01/12 14:49:35| Startup: Initialized Authentication.
2020/01/12 14:49:35| Processing Configuration File: /etc/squid/squid.conf (depth 0)
2020/01/12 14:49:35| Processing: acl SSL_ports port 443
2020/01/12 14:49:35| Processing: acl Safe_ports port 80 # http
2020/01/12 14:49:35| Processing: acl Safe_ports port 21 # ftp
2020/01/12 14:49:35| Processing: acl Safe_ports port 443 # https
2020/01/12 14:49:35| Processing: acl Safe_ports port 70 # gopher
2020/01/12 14:49:35| Processing: acl Safe_ports port 210 # wais
2020/01/12 14:49:35| Processing: acl Safe_ports port 1025-65535 # unregistered ports
2020/01/12 14:49:35| Processing: acl Safe_ports port 280 # http-mgmt
2020/01/12 14:49:35| Processing: acl Safe_ports port 488 # gss-http
2020/01/12 14:49:35| Processing: acl Safe_ports port 591 # filemaker
2020/01/12 14:49:35| Processing: acl Safe_ports port 777 # multiling http
2020/01/12 14:49:35| Processing: acl CONNECT method CONNECT
2020/01/12 14:49:35| Processing: http_access deny !Safe_ports
2020/01/12 14:49:35| Processing: http_access deny CONNECT !SSL_ports
2020/01/12 14:49:35| Processing: http_access allow localhost manager
2020/01/12 14:49:35| Processing: http_access deny manager
2020/01/12 14:49:35| Processing: http_access allow localhost
2020/01/12 14:49:35| Processing: acl home src 10.0.0.0/8
2020/01/12 14:49:35| Processing: http_access allow home
2020/01/12 14:49:35| Processing: http_access deny all
2020/01/12 14:49:35| Processing: http_port 8081
2020/01/12 14:49:35| Processing: coredump_dir /var/spool/squid
2020/01/12 14:49:35| Processing: refresh_pattern ^ftp: 1440 20% 10080
2020/01/12 14:49:35| Processing: refresh_pattern ^gopher: 1440 0% 1440
2020/01/12 14:49:35| Processing: refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
2020/01/12 14:49:35| Processing: refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
2020/01/12 14:49:35| Processing: refresh_pattern . 0 20% 4320
Redirector
squid kann so konfiguriert werden, dass jede eingehende URL einen Redirector-Prozess durchläuft, der entweder eine neue URL oder eine leere Zeile zurückgibt. Ein Redirector ist ein externes Programm, z. ein Skript, das Sie selbst geschrieben haben. Somit handelt es sich um ein Redirector-Programm NICHT ein Standardteil des Squid-pakets. Einige Beispiele finden Sie jedoch im contrib / -Verzeichnis der Quelle Verteilung. Da jeder unterschiedliche Anforderungen hat, ist es Sache der einzelnen Administratoren, eine eigene Implementierung zu erstellen.
Ein Redirector ermöglicht es dem Administrator, die Websites zu steuern, auf die seine Benutzer zugreifen können. Es kann in Verbindung mit transparenten Proxys verwendet werden, die den Benutzern Ihres Netzwerks den Zugriff auf bestimmte Sites verweigern, z. Pornoseiten und dergleichen.
Das Redirector-Programm muss URLs (eine pro Zeile) in der Standardeingabe lesen und umgeschriebene URLs oder leere Zeilen in der Standardeingabe schreiben. Außerdem schreibt Squid nach der URL zusätzliche Informationen, anhand derer ein Redirector eine Entscheidung treffen kann. Die Eingabezeile besteht aus vier Feldern:
URL ip-address/fqdn ident method
Erläuterung:
URL
original aufgerufene URL des Clientip-address/fqdn
die IP-Adresse und der Domainname des Clients der den Request ausführtident
Das Ergebnis eines IDENT bzw. AUTH lookups der für den Client durchgeführt wurde, falls das überhaupt aktiv ist.method
das ist die für diesen Request verwendete HTTP-Methode