Proxy-Einstellungen und Web-Proxies können an der FHS u.a. für folgende Zwecke verwendet werden:
Für beide Zwecke wird ein Web-Server benötigt, um *.pac-Dateien an die Browser auszuliefern.
Der Web-Proxy wird benötigt, um PCs mit interner bzw. Public-IP mit Updates zu versorgen.
Squid kann unter Linux betrieben werden, die Fakultät ET lässt diesen Dienst auf einer vom RZ bereitgestellten virtuellen Maschine mitlaufen. Die Installation von squid erfolgte über das Paketmanagement.
Vor der Verwendung muss squid konfiguriert werden, insbesondere:
Diese Angaben werden in /etc/squid/squid.conf konfiguriert. Die Konfiguration von squid ist u.a. in http://selflinux.org/selflinux/html/squid.html erläutert, diese Webseite diente auch als Ausgangspunkt für die Erstellung unserer squid.conf-Datei.
Zur Zugriffssteuerung werden zunächst acl-Objekte definiert. Enthält eine Regel mehrere Angaben (z.B. mehrere Quell-IP-Adressen oder mehrere Zieldomänen), so werden die Informationen oder-verknüpft.
Die Zeilen
acl mylocalnet src 192.168.101.0/24 # in-house public IP address acl pcpool src 192.0.2.101/32 192.0.2.102/32 192.0.2.103/32 acl pcpool src 192.0.2.104/32 192.0.2.105/32 192.0.2.106/32 acl pcpool src 192.0.2.107/32 192.0.2.108/32 192.0.2.109/32 acl pcpool src 192.0.2.110/32 192.0.2.221/32 192.0.2.222/32 acl pcpool src 192.0.2.223/32 192.0.2.224/32 192.0.2.225/32 acl pcpool src 192.0.2.226/32 192.0.2.227/32 192.0.2.228/32 acl pcpool src 192.0.2.229/32 192.0.2.230/32 192.0.2.231/32 acl pcpool src 192.0.2.232/32 192.0.2.233/32 192.0.2.234/32
geben vor, dass die bestimmte Quell-Adressen (Client-Adressen) über die ACLs „mylocalnet“ bzw. „pcpool“ angesprochen werden können.
Die ACL „pcpool“ wird hier nicht benutzt, diese Beispielregel soll lediglich verdeutlichen, wie mehrere einzelne IP-Adressen angegeben werden können.
Weitere acl-Objekte werden erstellt für Zieldomänen (d.h. Hostnamen, von denen Webinhalte abgerufen werden):
acl ms1 dstdomain .windowsupdate.com .microsoft.com .microsoft.nsatc.net acl ms1 dstdomain .microsoft.de acl msdnaa dstdomain .msdnaa.net .e-academy.com e5.onthehub.com acl fhs dstdomain .fh-schmalkalden.de
Die mit einem Punkt beginnenden Domänennamen lassen sowohl Hostnamen in der angegebenen Domäne als auch in Subdomänen zu.
Nach den acl-Objekten werden http_access-Objekte definiert, diese sollten nach dem Kommentar „INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS“ eingefügt werden:
http_access allow mylocalnet ms1 http_access allow mylocalnet msdnaa http_access allow mylocalnet fhs
Die Informationen in diesen Regeln werden und-verknüft. So sagt beispielsweise die erste Regel: „Wenn der Client eine IP-Adresse der ACL mylocalnet hat und Inhalte von einem in Regel ms1 konfigurierten Host abrufen möchte, dann gestatte dies.“.
Die http_access-Regeln werden in der aufgeführten Reihenfolge abgearbeitet. Die erste zutreffende Regel greift, die nachfolgenden Regeln werden dann nicht mehr betrachtet.
Die eingefügten Regeln müssen also vor der bereits vorhandenen letzten Regel
http_access deny all
eingefügt werden.
Die Konfigurationsoption „cache_dir“ legt fest, wo squid den Cache für die Webinhalte anlegt und wie groß der Cache ist:
cache_dir aufs /var/spool/squid 500 16 64
Im Beispiel werden maximal 500MB Plattenplatz verwendet, maximal 64MB werden im Hauptspeicher gehalten.
Unser squid läuft auf einer virtuellen Maschine und dient nur zum Windows-Update (bzw. sonstigen Betriebssystem-Update). Für diesen Zweck sollte die Cache-Größe und die Verwendung einer virtuellen Maschine ausreichen.
Web-Caching zur Erhöhung der Performance und ohne Eingrenzung der Web-Adressen würde höhere Cache-Größen erfordern und wegen schnellerer Schreibzugriffe auch richtige (d.h. nicht-virtualisierte) Hardware mit schnellen Festplatten.
Die Port-Nummer wird mit „http_port“ festgelegt:
http_port 3128
Es müssen Zugriffe aus dem Netz 192.168.101.0/24 auf den lokalen Port 3128 dauerhaft zugelassen werden. Dazu werden die Kommandos
iptables -L -n iptables -I INPUT 24 -p tcp -m state --state NEW -m tcp --dport 3128 -s 192.168.101.0/24 -j ACCEPT /etc/init.d/iptables save iptables -L -n
ausgeführt. Der Zahlenwert 24 für die Nummer der Regel muss korrigiert werden. Dieser Zahlenwert gibt an, vor welcher Regel die neue Regel eingefügt wird. Die Zählung beginnt mit 1.
Mit
/etc/init.d/squid start
wird squid gestartet.
Mit
chkconfig --level=2345 squid on
wird der Daemon automatisch gestartet (beim Hochfahren) und beendet (beim Herunterfahren).
Auf einem Webserver wird eine Datei update.pac bereitgestellt:
function FindProxyForURL(url, host) { return "PROXY 192.0.2.33:3128; DIRECT"; }
Der Rückgabewert gibt die IP-Adresse und die Portnummer des squid-Servers an.
Die Datei wird auf einem Web-Server so bereitgestellt, dass sie mit der URL http://server.fakultaet.fh-schmalkalden.de/proxy-config/update.pac abgerufen werden kann.
Der Webserver server.fakultaet.fh-schmalkalden.de muss so konfiguriert werden, dass die Dateiendung *.pac mit dem Mime-Typ „application/x-ns-proxy-autoconfig“ verknüpft ist. Dies wurde in der Datei /etc/mime.types eingerichtet. Anschließend Web-Server neu starten.
Mit gpedit.msc wird
konfiguriert:
Unter
wird Proxy-Einstellungen pro Computer vornehmen (anstelle von pro Benutzer) aktiviert.
Eine Datei „pcpool.pac“ wird erstellt.
var direct = "DIRECT"; var deny = "PROXY 127.0.0.1:9"; function FindProxyForURL(url, host) { var back = ""; back = deny; url = url.toLowerCase(); host = host.toLowerCase(); // Webseiten innerhalb der FHS if(dnsDomainIs(host, ".fh-schmalkalden.de")) { back = direct; } // Webseiten innerhalb der Fakultaet else if(isInNet(host, "192.0.2.0", "255.255.255.0")) { back = direct; } // Webseiten lokal auf PC else if(isInNet(host, "127.0.0.0", "255.0.0.0")) { back = direct; } // Dateien lokal auf PC (z.B. Online-Hilfen...) else if(shExpMatch(url, "file:*")) { back = direct; } else if(shExpMatch(url, "about:*")) { back = direct; } // Windows-Update, Microsoft Update else if(dnsDomainIs(host, ".microsoft.com")) { back = direct; } else if(dnsDomainIs(host, ".microsoft.nsatc.net")) { back = direct; } else if(dnsDomainIs(host, ".microsoft.de")) { back = direct; } // MSDN-AA else if(dnsDomainIs(host, ".e-academy.com")) { back = direct; } else if(dnsDomainIs(host, "e5.onthehub.com")) { back = direct; } // Aktivierung, Lizensierung, Online-Hilfen else if(dnsDomainIs(host, ".ni.com")) { back = direct; } else if(dnsDomainIs(host, ".mathworks.com")) { back = direct; } else if(dnsDomainIs(host, ".mathworks.de")) { back = direct; } return back; }
Diese Datei wird auf einem Webserver so bereitgestellt, dass sie als http://server.fakultaet.fh-schmalkalden.de/proxy-config/pcpool.pac abgerufen werden kann.
Der Webserver server.fakultaet.fh-schmalkalden.de muss so konfiguriert werden, dass die Dateiendung *.pac mit dem Mime-Typ „application/x-ns-proxy-autoconfig“ verknüpft ist. Dies wurde in der Datei /etc/mime.types eingerichtet. Anschließend Web-Server neu starten.
Die Funktion FindProxyForURL() gibt im Normalfall „127.0.0.1:9“ zurück. Damit sucht der IE auf dem lokalen PC auf TCP-Port 9 nach einem Proxy-Server. Es muss eine freie, nicht benutzte Port-Nummer ausgewählt werden. Da keine Verbindung zum angegebenen Proxy-Server hergestellt werden kann und eine Direktverbindung nicht gestattet wurde, werden die Webinhalte nicht abgerufen.
Lediglich für Server in ausgewählten Domänen wird „DIRECT“ zurückgegeben, damit wird dem IE eine direkte Verbindung erlaubt.
Mit gpedit.msc wird
konfiguriert:
Unter
wird Proxy-Einstellungen pro Computer vornehmen (anstelle von pro Benutzer) aktiviert.