Yippie! <Skalpmode>…
Ach Mensch Leute, muß denn das sein?
Nov 23 17:49:51 gw06 dhcpd: No memory for /var/lib/dhcp/dhcpd.leases (724771929 bytes) root@gw06:~# ls -lah /var/lib/dhcp/dhcpd.leases -rw-r--r-- 1 root root 692M Nov 23 17:49 /var/lib/dhcp/dhcpd.leases
Klar, 700 MB passen schlecht in 1 GB Hauptspeicher …
Was war passiert? Im Müritzer Freifunknetz gab es Berichte, daß an (einem) bestimmten Knoten Endgeräte keine IPv4-Adressen per DHCP bekämen. Also mal draufgeschaut, wenig Anfragen gesehen und den Dienst einfach mal durchgestartet. Ergebnis siehe oben.
Auch auf gw05 hatten sich schon 400 MB an »leases« angesammelt, auf unserem zentralen DHCP-Server für Freifunk im Kreis Gütersloh gar schon 1,8 GB. WTF!?
Offensichtlich klappt irgendwas nicht mit dem stündlichen, vom isc-dhcp-server selbst durchgeführten, Ausmisten des »leases«-Files. Und in der Tat:
root@s3:~# grep dhcpd: /var/log/syslog | grep "Can't create" Nov 23 07:21:02 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 08:21:03 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 09:21:04 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 10:21:05 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 11:21:06 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 12:21:07 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 13:21:08 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 14:21:09 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 15:21:10 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 16:21:12 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 17:21:14 s3 dhcpd: Can't create new lease file: Permission denied
Es stellte sich raus, das dies ein laaaange bekanntes Problem mit isc-dhcp-server und AppArmor ist, an dem schon lange rumgedoktort wurde, eine endgültige Lösung aber steht auch Ende 2015 noch aus :-(
Tolle Wurst. Immerhin, bei einem Neustart liest isc-dhcp-server das »leases«-File auch neu ein und mistet es aus; solange denn die Datei ins RAM paßt …
Da unsere VMs nur über 1 GB RAM verfügen, das »leases«-File in Gütersloh aber wichtig ist, mußte also erstmal Swap her:
root@s3:~# dd if=/dev/zero of=/swap.file bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 52.0638 s, 41.2 MB/s
root@s3:~# mkswap /swap.file
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=68b2d918-32a2-43fe-b331-c7b691eba01c
root@s3:~# swapon /swap.file
root@s3:~# swapon -s
Filename Type Size Used Priority
/swap.file file 2097148 0 -1
root@s3:~# free
total used free shared buffers cached
Mem: 1017856 947276 70580 428 35432 673908
-/+ buffers/cache: 237936 779920
Swap: 2097148 0 2097148
root@s3:~# service isc-dhcp-server stop ; service isc-dhcp-server start
Hat immerhin nur ca. 4 Minuten gedauert, bei entweder 90+% CPU (1 ›vCore‹) oder 90+% IOWAIT …
Nov 23 18:39:20 s3 dhcpd: Wrote 4056 leases to leases file.
Danach konnte aber endlich der Interims-Fix angewandt werden:
root@s3:~# apt-get -y install acl ; service isc-dhcp-server stop ; setfacl -dm u:dhcpd:rwx /var/lib/dhcp ; setfacl -m u:dhcpd:rwx /var/lib/dhcp ; service isc-dhcp-server start
Und dies entsprechend auch auf gw05 und gw06. Über erweiterte Dateiattribute darf nun User/Gruppe dhcpd in /var/lib/dhcp Dateien bearbeiten, auch wenn sie root gehörten:
root@gw05:~# ls -lah /var/lib/dhcp/ total 1.4M drwxrwxr-x+ 2 root root 4.0K Nov 23 23:57 . drwxr-xr-x 49 root root 4.0K Aug 30 01:42 .. -rw-r--r-- 1 root root 0 Apr 16 2014 dhclient.leases -rw-rw-r--+ 1 dhcpd dhcpd 607K Nov 24 00:35 dhcpd.leases -rw-rw-r--+ 1 dhcpd dhcpd 718K Nov 23 23:57 dhcpd.leases~ root@s3:~# grep dhcpd: /var/log/syslog | grep "Can't create" Nov 23 07:21:02 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 08:21:03 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 09:21:04 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 10:21:05 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 11:21:06 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 12:21:07 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 13:21:08 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 14:21:09 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 15:21:10 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 16:21:12 s3 dhcpd: Can't create new lease file: Permission denied Nov 23 17:21:14 s3 dhcpd: Can't create new lease file: Permission denied root@s3:~# ls -lah /var/lib/dhcp/ total 5.4M drwxrwxr-x+ 2 root root 4.0K Nov 23 22:40 . drwxr-xr-x 50 root root 4.0K Oct 20 21:58 .. -rw-r--r-- 1 root root 512 Sep 1 22:49 dhclient.eth0.leases -rw-r--r-- 1 root root 0 Mar 5 2015 dhclient.leases -rw-rw-r--+ 1 dhcpd dhcpd 2.3M Nov 23 23:23 dhcpd.leases -rw-rw-r--+ 1 dhcpd dhcpd 3.1M Nov 23 22:40 dhcpd.leases~
Dank an die, die diesen Workaround ersonnen haben. Dennoch sollte alleine die Bearbeitungszeit des gemeldeten Bugs den Verantworlichen seinen Skalp kosten. Hrmpft. Zweieinhalb Jahre … Seufz. </Skalpmode>
