Package-Cache-Proxy für verschiedene Linux-Distros bauen

Datum

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.

Autor
Kategorien Linux, Proxy

PRTG Map