Good to Know Database

CentOS 6: Proxy-Server mit Squid einrichten


Squid ist ein freier Proxy-Server welcher die Netzwerkprotokolle HTTP, HTTPS, FTP über HTTP und Gopher unterstützt. Die folgende Anleitung soll Ihnen zeigen, wie Sie unter CentOS 6 einen Proxy-Server mit Squid einrichten.

Das Beispielsystem hat die beiden Netzerkschnittstellen 192.168.10.1/24 (eth0) und 192.168.11.1/24 (eth1). Das Netzwerk 192.168.10.1/24 besitzt über einen Router Zugang zum Internet, wohingegen das Netzwerk 192.168.11.0/24 keinen direkten Internetzugriff besitzt. Die Firewall wird im folgenden Beispiel so konfiguriert, dass der TCP-Port 3128, welchen Squid standardmäßig verwendet, auf beiden Netzwerk-Schnittstellen geöffnet ist.

Bevor Sie mit der Konfiguration starten, sollten Sie überprüfen ob die Namensauflösung und der Zugriff auf das WWW auf dem zukünfigen Proxy-Server funktionieren.

Mit dem folgenden Befehl installieren Sie das RPM-Paket von Squid aus dem CentOS-Repository.

[root@centos6 ~]# yum install squid

Nachdem Sie Squid installiert haben, müssen Sie einige Änderungen an der Konfigurationsdatei /etc/squid/squid.conf vornehmen.

[root@centos6 ~]# vi /etc/squid/squid.conf

Wie Sie sehen, ist die Konfigurationsdatei sehr umfangreich aber gut dokumentiert. Ich will hier nur auf die wichtigsten Einstellungen kurz eingehen.

Die Standardkonfiguration des installierten RPM-Paketes erlaubt den Zugriff auf den Proxy aus allen privaten Netzwerken und dem localhost (127.0.0.1). Wenn Sie nicht allen Netzwerken den Zugriff erlauben wollen, müssen Sie den folgenden Abschnitt anpassen. In diesem Beispiel wurden alle vordefinierten Einträge mit einem Kommentarzeichen versehen und so deaktiviert.

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
#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

Definieren Sie wie folgt Ihre Adressbereiche in der Zugriffskontrollliste (Access Control Lists, kurz ACL) localnet.

acl localnet src 192.168.10.0/24
acl localnet src 192.168.11.0/24

Der folgende Abschnitt in der Konfigurationsdatei legt fest, auf welche Ports Squid den Zugriff erlauben soll. Wollen Sie den Clients in Ihrem Netzwerk nur den Zugriff auf HTTP, HTTPS und FTP erlauben, müssen Sie wie im folgenden Listing die nicht gewünschten Ports deaktivieren.

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

Damit der Zugriff aus den soeben definierten Adressbereichen und für localhost gewährt wird, müssen die folgenden Zeilen aktiviert sein.

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost

Durch die Option http_port können Sie den Port angeben, auf welchem Squid Anfragen von den Clients entgegennehmen soll. Standardmäßig lauscht Squid auf dem Port 3128 wobei viele Proxys den Port 8080 verwenden. Sollten Sie auch den Port 8080 verwenden wollen, ändern Sie die folgende Zeile entsprechend ab. Vergessen Sie jedoch nicht den gewählten Port in Ihrer Firewall zu öffnen.

# Squid normally listens to port 3128
http_port 3128

Der Proxy-Cache wird normalerweise unter /var/cache/squid angelegt. Sollten Sie eine eigene Partition für den Cache verwenden wollen, ändern Sie den Pfad entsprechend ab. Die Werte nach dem Pfad geben die maximale Größe des Verzeichnisses in MB (100MB), die Anzahl der First-Level (16) und Second-Level (256) Unterverzeichnisse an.

# Uncomment and adjust the following to add a disk cache directory.
cache_dir ufs /var/spool/squid 100 16 256

Nachdem Sie die nötigen Änderungen an der Konfigurationsdatei vorgenommen haben, erstellen Sie mit dem folgenden Befehl die Verzeichnisstruktur für den Squid-Cache.

[root@centos6 ~]# squid -z
2012/05/19 18:57:38| WARNING cache_mem is larger than total disk cache space!
2012/05/19 18:57:38| Creating Swap Directories
2012/05/19 18:57:38| /var/spool/squid exists
2012/05/19 18:57:38| Making directories in /var/spool/squid/00
2012/05/19 18:57:39| Making directories in /var/spool/squid/01
2012/05/19 18:57:39| Making directories in /var/spool/squid/02
2012/05/19 18:57:39| Making directories in /var/spool/squid/03
2012/05/19 18:57:39| Making directories in /var/spool/squid/04
2012/05/19 18:57:39| Making directories in /var/spool/squid/05
2012/05/19 18:57:39| Making directories in /var/spool/squid/06
2012/05/19 18:57:39| Making directories in /var/spool/squid/07
2012/05/19 18:57:39| Making directories in /var/spool/squid/08
2012/05/19 18:57:39| Making directories in /var/spool/squid/09
2012/05/19 18:57:39| Making directories in /var/spool/squid/0A
2012/05/19 18:57:39| Making directories in /var/spool/squid/0B
2012/05/19 18:57:39| Making directories in /var/spool/squid/0C
2012/05/19 18:57:39| Making directories in /var/spool/squid/0D
2012/05/19 18:57:39| Making directories in /var/spool/squid/0E
2012/05/19 18:57:39| Making directories in /var/spool/squid/0F

Einen ersten Testlauf mit Squid können Sie mit dem folgenden Befehl starten. Dabei wird Squid noch nicht als Daemon gestartet und durch die Option -d 1 werden Ihnen Debugmeldungen angezeigt welche Ihnen bei eventuellen Problemen weiterhelfen können.

[root@centos6 ~]# squid -d 1 -N
2012/05/19 18:58:16| WARNING cache_mem is larger than total disk cache space!
2012/05/19 18:58:16| Starting Squid Cache version 3.1.10 for x86_64-redhat-linux-gnu...
2012/05/19 18:58:16| Process ID 3595
2012/05/19 18:58:16| With 1024 file descriptors available
2012/05/19 18:58:16| Initializing IP Cache...
2012/05/19 18:58:16| DNS Socket created at [::], FD 5
2012/05/19 18:58:16| DNS Socket created at 0.0.0.0, FD 6
2012/05/19 18:58:16| Adding domain home.lan from /etc/resolv.conf
2012/05/19 18:58:16| Adding nameserver 192.168.10.1 from /etc/resolv.conf
2012/05/19 18:58:16| Adding nameserver 192.168.10.2 from /etc/resolv.conf
2012/05/19 18:58:16| User-Agent logging is disabled.
2012/05/19 18:58:16| Referer logging is disabled.
2012/05/19 18:58:16| Unlinkd pipe opened on FD 11
2012/05/19 18:58:16| Local cache digest enabled; rebuild/rewrite every 3600/3600 sec
2012/05/19 18:58:16| Store logging disabled
2012/05/19 18:58:16| Swap maxSize 102400 + 262144 KB, estimated 28041 objects
2012/05/19 18:58:16| Target number of buckets: 1402
2012/05/19 18:58:16| Using 8192 Store buckets
2012/05/19 18:58:16| Max Mem  size: 262144 KB
2012/05/19 18:58:16| Max Swap size: 102400 KB
2012/05/19 18:58:16| Rebuilding storage in /var/spool/squid (DIRTY)
2012/05/19 18:58:16| Using Least Load store dir selection
2012/05/19 18:58:16| Set Current Directory to /var/spool/squid
2012/05/19 18:58:16| Loaded Icons.
2012/05/19 18:58:16| Accepting  HTTP connections at [::]:3128, FD 13.
2012/05/19 18:58:16| HTCP Disabled.
2012/05/19 18:58:16| Squid plugin modules loaded: 0
2012/05/19 18:58:16| Adaptation support is off.
2012/05/19 18:58:16| Ready to serve requests.
2012/05/19 18:58:16| Done scanning /var/spool/squid swaplog (0 entries)
2012/05/19 18:58:16| Finished rebuilding storage from disk.
2012/05/19 18:58:16|         0 Entries scanned
2012/05/19 18:58:16|         0 Invalid entries.
2012/05/19 18:58:16|         0 With invalid flags.
2012/05/19 18:58:16|         0 Objects loaded.
2012/05/19 18:58:16|         0 Objects expired.
2012/05/19 18:58:16|         0 Objects cancelled.
2012/05/19 18:58:16|         0 Duplicate URLs purged.
2012/05/19 18:58:16|         0 Swapfile clashes avoided.
2012/05/19 18:58:16|   Took 0.06 seconds (  0.00 objects/sec).
2012/05/19 18:58:16| Beginning Validation Procedure
2012/05/19 18:58:16|   Completed Validation Procedure
2012/05/19 18:58:16|   Validated 25 Entries
2012/05/19 18:58:16|   store_swap_size = 0
2012/05/19 18:58:17| storeLateRelease: released 0 objects

Sollten hier keine Fehlermeldungen angezeigt werden, können Sie Squid mit der Tastenkombination STRG+C beenden und anschließend als Daemon starten.

[root@centos6 ~]# service squid start

Damit Squid beim Start des Servers automatisch gestartet wird, rufen Sie noch den folgenden Befehl auf.

[root@centos6 ~]# chkconfig squid on

Bevor Sie die Clients konfigurieren müssen Sie noch den TCP-Port 3128 in der Firewall öffnen.

[root@centos6 ~]# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 3128 -j ACCEPT

Speichern Sie die erstellte Firewall-Regel mit dem folgenden Befehl dauerhaft in die /etc/sysconfig/iptables.

[root@centos6 ~]# service iptables save

Jetzt können Sie auf Ihren Clients den Proxy-Server in den Netzwerk- beziehungsweise Interneteinstellungen eintragen.

Wenn Sie Probleme mit Squid haben, sollten Sie die Logdateien auf mögliche Fehlermeldungen überprüfen.

[root@centos6 ~]# tail -f /var/log/squid/access.log /var/log/squid/cache.log /var/log/squid/squid.out

Weiterführende Tutorials

Squid: Lokalisierte Fehlermeldungen


Dieser Eintrag wurde am 19.05.2012 erstellt und zuletzt am 24.01.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_1616.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer