Wenn man viele Systeme verwaltet, welche die gleiche Linux-Distro (z.B. Ubuntu, CentOS, etc.) verwenden, kann es sinnvoll sein ein System im lokalen Netz zu haben welches die Pakete bei der ersten Anfrage einmal herunterlädt und sie dann anschließend, für weitere Anfragen von anderen Systemen, zwischenspeichert. Das senkt den Traffic ins Internet, da die Pakete nur noch einmal heruntergeladen werden müssen.
squid Proxy
Was squid
ist und was es macht habe ich bereits in dem Artikel Squid-Proxy installieren und konfigurieren beschrieben.
Dieser lässt sich auch wunderbar zum cachen (zwischenspeichern) von Betriebssystempaketen verwenden.
Hierfür fügt man folgende Zeilen in die /etc/squid/squid.conf
ein:
# Der Cache soll auf der Platte abgelegt werden
memory_cache_mode disk
# Die kleinste Objektgröße
minimum_object_size 0 MB
# Die größte Objektgröße
maximum_object_size 128 MB
# Ort des Cache mit Angabe von Größe und Blockgröße
cache_dir ufs /var/spool/squid 2048 16 64
refresh_pattern -i .deb$ 0 90% 99999 override-expire override-lastmod reload-into-ims ignore-no-cache refresh-ims
refresh_pattern -i .rpm$ 0 90% 99999 override-expire override-lastmod reload-into-ims ignore-no-cache refresh-ims
Was die einzelnen Parameter von refresh_pattern
bedeuten kann man Hier nachlesen: www.squid-cache.org
Sofern der Zugang externer Clients auf den Port 3128 (oder welcher auch immer konfiguriert ist) gegeben ist, fügt man bei Linux-Systemen welche apt
als Paketmanager benutzen folgendes in die /etc/apt/apt.conf.d/80http_proxy
:
Acquire::http::Proxy "http://<ServerIP>:3128";
Auf CentOS fügt man folgende Zeile in die /etc/yum.conf
:
proxy=http://<ServerIP>:3128
Sofern eine Authentifizierung am squid-Proxy notwendig ist müssen noch folgende Zeilen hinzugefügt werden:
proxy_username=<Benutzer>
proxy_password=<Passwort>
apt-cacher-ng
Bei Debian (ab Jessie) und Ubuntu findet sich in den Repos das Paket apt-cacher-ng
, welches Pakete für diverse Linux-Distros zwischenspeichert.
$ apt-cache policy apt-cacher-ng
apt-cacher-ng:
Installiert: 3.1-1build1
Installationskandidat: 3.1-1build1
Versionstabelle:
*** 3.1-1build1 500
500 http://de.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
100 /var/lib/dpkg/status
apt install apt-cacher-ng
$ systemctl status apt-cacher-ng.service
● apt-cacher-ng.service - Apt-Cacher NG software download proxy
Loaded: loaded (/lib/systemd/system/apt-cacher-ng.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-10-03 00:45:42 CEST; 18min ago
Main PID: 4339 (apt-cacher-ng)
Tasks: 4 (limit: 2319)
CGroup: /system.slice/apt-cacher-ng.service
└─4339 /usr/sbin/apt-cacher-ng SocketPath=/run/apt-cacher-ng/socket -c /etc/apt-cacher-ng ForeGround=1
Okt 03 00:45:42 ubuntu02 systemd[1]: Starting Apt-Cacher NG software download proxy...
Okt 03 00:45:42 ubuntu02 systemd[1]: Started Apt-Cacher NG software download proxy.
Okt 03 00:45:42 ubuntu02 apt-cacher-ng[4339]: WARNING: No configuration was read from file:sfnet_mirrors
Der Dienst lauscht bei der Standard-Konfiguration auf Port 3142.
Auf den entsprechenden (debian-based) Clients fügt man folgende Zeile in die /etc/apt/apt.conf.d/90apt-proxy
:
Acquire::http::Proxy "http://<ServerIP>:3142";
Im Verzeichnis /etc/apt-cacher-ng/
finden sich die entsprechenden Konfigurationsdateien. Dort können z.B. zu bevorzugende Adressen von Mirrors eingetragen werden oder auch die Benutzer-Authentifizierung für den Caching-Dienst.
Die eigentliche Konfigurationsdatei ist die /etc/apt-cacher-ng/acng.conf
. Hier kann z.B. das Log- oder auch Cache-Verzeichnis und auch der Port festgelegt werden.
apt-cacher-ng
besitzt auch eine „maintenance“, welche sich unter http://<ServerIP>:3142/acng-report.html
findet und in der Standardeinstellung aktiviert ist. Hier finden sich unter anderem eine Statistik:
Aber auch weitere Optionen wie zum Beispiel Import, Guided precaching (Mirroring) oder auch File Type Pattern Tracing.