Squid DEB Proxy

Verwendetes System: Ubuntu 16.04

Dieser ersetzt den Apt-cacher-NG vollwertig. Damit sind auch lässtige Updateprobleme behoben. Auch ist gibt es einen Client der per Multcast den Squid dynamisch automatisch einbindet.

apt install squid-deb-proxy -y

Hierbei wird auch der normale Squidproxy mit installiert. Diesen brauchen wir auf jeden Fall mal nicht.

systemctl disable squid.service

Hier wird es entwas kniffliger. Im Gegesatz zum Apt-cacher muss im Squid wirklich jede Quelle die gecacht werden soll eingetragen werden. ACLs für Netze können auf ALL gesetzt oder die gewünschten Netze per IPV4/IPV6 angegeben werden. Der Ort des Caches kann frei gewählt werden. Hier auf einem eigenen gzip-9 komprimierten ZFS-Dataset.

nano /etc/squid-deb-proxy/allowed-networks-src.acl
...
all
...

Mit nur diesem einen Eintrag sind alle Netze zum Proxy zugänglich.

nano /etc/squid-deb-proxy/squid-deb-proxy.conf
...
cache_dir aufs  /home/squid-deb-proxy 40000 16 256
...
# we need a big cache, some debs are huge
maximum_object_size 1024 MB
...

Die Objektgröße bezieht sich auf die DEB-Pakete. Setzt man das auf 1024 so wird der Download über diesen Wert pro Paket nicht gecacht. Setzt sein Cachdir extern muss man das Appamor mitteilen. Z.B:

nano  /etc/apparmor.d/usr.sbin.squid
# squid-deb-proxy
...
/mnt/NFS4-fqdn/home/squid-deb-proxy/ r,
/mnt/NFS4-fqdn/home/squid-deb-proxy/** rwk,
...

Danach Apparmor und Squid neu starten.

Die Datei je nach Quellen/Wunsch anpassen. /etc/squid-deb-proxy/mirror-dstdomain.acl.d/10-default In dieser Datei werden alle weiteren Mirrors angelegt. Weiteres sind auch noch diese Dateien vorhanden, und auch schon default mit ACL's befüllt, werden aber nicht manuell verändet.

/etc/squid-deb-proxy/autogenerated/mirror-dstdomain.acl
/etc/squid-deb-proxy/mirror-dstdomain.acl
10-default
# /etc/squid-deb-proxy/mirror-dstdomain.acl.d/10-default
# 
# network destinations that are allowed by this cache
 
.archive.ubuntu.com 
ports.ubuntu.com 
security.ubuntu.com
ddebs.ubuntu.com
mirrors.ubuntu.com
 
#official third party repositories
.archive.canonical.com
.extras.ubuntu.com
 
# default changelogs location, this includes changelogs and the meta-release
# file that has information about new ubuntu versions
changelogs.ubuntu.com
 
 
# osit.cc
.puppetlabs.com
.styrion.at
.steampowered.com
.mkvtoolnix.download
.iteas.at
.freerdp.com
.launchpad.net
.google.com
.virtualbox.org
.kde.org
.teamviewer.com
.skype.com
.debian.org
.proxmox.com
.download.opensuse.org
.liveusb.info
.tuxedocomputers.com
.leaseweb.net
.ocf.berkeley.edu
.packages.graylog2.org
 
.mirror.umd.edu
.mirrors.syringanetworks.net
.mirrors.gigenet.com
.mirror.web-ster.com
.raspbian.phirephly.design
.fortinet.com
.api.snapcraft.io
.signal.org
.cloudfront.net
.software-univention.de
.nightly.odoo.com
.onlyoffice.com
.cinelerra-gg.org
 
packages.grafana.com
packages.microsoft.com
www.benno-mailarchiv.de
repository.spotify.com

Zum Schluss den Dienst noch neu Starten:

systemctl restart squid-deb-proxy.service

Wer bereits den Apt-cacher im Einsatz hat, möchte sich natürlich so wenig Arbeit wie möglich antun. Hierfür genügt es den Port des Proxys in der Datei /etc/squid-deb-proxy/squid-deb-proxy.conf zu ändern.

...
# default to a different port than stock squid
http_port 3142
...

Betreibt man den Proxy auf UCS muss man noch die Firewallports öffnen:

ucr set  security/packetfilter/tcp/3142/all=ACCEPT
service univention-firewall restart

Statisch per:

echo 'Acquire::http { Proxy "http://hostname.local:3142"; };' | sudo tee /etc/apt/apt.conf.d/01proxy

Automatische Anbindung per Multicast (Avahi):

apt install squid-deb-proxy-client -y

Diese Methode ist natürlich für Mobile Geräte optimal und funktioniert wunderbar.