{"id":356,"date":"2020-11-06T10:39:19","date_gmt":"2020-11-06T09:39:19","guid":{"rendered":"http:\/\/www.digiliv.de\/?p=356"},"modified":"2023-09-09T00:15:54","modified_gmt":"2023-09-08T22:15:54","slug":"dhcp-fehler-beim-systemstart-update-pid-file-anlegen","status":"publish","type":"post","link":"http:\/\/www.digiliv.de\/index.php\/2020\/11\/06\/dhcp-fehler-beim-systemstart-update-pid-file-anlegen\/","title":{"rendered":"DHCP: Fehler beim Systemstart\/Update (pid-File anlegen)"},"content":{"rendered":"<p>Mein urspr\u00fcnglicher Ansatz war die manuelle \u00c4nderung des Konfigurationsfiles, allerdings wird das schnell ein Fass ohne Boden und es ist g\u00fcnstiger und weit weniger fehleranf\u00e4llig den eigentlichen Bock zu suchen.<br \/>\nLetztlich beruht der &#8216;Fehler&#8217; unter Ubuntu darauf, dass der IP V6-Daemon nicht konfiguriert, aber auch nicht deaktiviert ist. Ein einfaches Deaktivieren des IP V6-Daemons mittels<\/p>\n<p>sudo systemctl disable isc-dhcp-server6<\/p>\n<p>bebebt das Problem und das Verzeichnis \/run\/dhcp-server bleibt korrekt erhalten<\/p>\n<p>(Vielen Dank an Wolfgang Scherer f\u00fcr den Hinweis!)<\/p>\n<p>&nbsp;<\/p>\n<p>Hier nun trotzdem noch die Anleitung zum Editieren der Konfigurationsdatei:<\/p>\n<p>Der DHCP-Daemon versucht beim Start sein PID-File in das Verzeichnis \/run\/dhcp-server zu legen. Bei Ubuntu wird genau dieses Verzeichnis beim Reboot oder bei Updates immer wieder gel\u00f6scht. Das Resultat ist, dass systemctl status isc-dhcp-server dann zwar best\u00e4tigt, dass der Dienst l\u00e4uft, aber kein pid-File anlegen konnte. Auch Webmin zeigt dann nur noch den Button &#8216;Server starten&#8217; und ein Anwenden von \u00c4nderungen ist nicht mehr m\u00f6glich.<\/p>\n<p>Man k\u00f6nnte die Konfiguration in \/etc\/default\/isc-dhcp-server anpassen, jedoch f\u00fchrt das nicht zum Erfolg, da die Einstellung im Start-Skript hardcoded ist und die Konfiguration gar nicht gelesen wird. Die einfachste und sicherste \u00c4nderung ist, das pid-File in \/run zu legen, da dieses Verzeichnis immer vorhanden ist und auch die Rechte schon passend gesetzt sind.<\/p>\n<p>Das anzupassende Config-File ist \/lib\/systemd\/system\/isc-dhcp-server.service f\u00fcr IP-V4 und \/lib\/systemd\/system\/isc-dhcp-server6.service f\u00fcr IP-V6. Da hier nur IP V4 aktiv ist, stelle ich nur die Anpassungen f\u00fcr diesen Teil dar.<\/p>\n<pre style=\"padding-left: 40px;\">sudo -i\r\nnano \/lib\/systemd\/system\/isc-dhcp-server.service\r\n\r\n\r\n[Unit] \r\nDescription=ISC DHCP IPv4 server \r\nDocumentation=man:dhcpd(8) \r\nWants=network-online.target \r\nAfter=network-online.target \r\nAfter=time-sync.target \r\nConditionPathExists=\/etc\/default\/isc-dhcp-server \r\nConditionPathExists=|\/etc\/ltsp\/dhcpd.conf \r\nConditionPathExists=|\/etc\/dhcp\/dhcpd.conf \r\n\r\n[Service] \r\nEnvironmentFile=\/etc\/default\/isc-dhcp-server \r\nRuntimeDirectory=dhcp-server \r\n# The leases files need to be root:dhcpd even when dropping privileges \r\nExecStart=\/bin\/sh -ec '\\ \r\n\u00a0\u00a0\u00a0CONFIG_FILE=\/etc\/dhcp\/dhcpd.conf; \\ \r\n\u00a0\u00a0\u00a0if [ -f \/etc\/ltsp\/dhcpd.conf ]; then CONFIG_FILE=\/etc\/ltsp\/dhcpd.conf; fi; \\ \r\n\u00a0\u00a0\u00a0[ -e \/var\/lib\/dhcp\/dhcpd.leases ] || touch \/var\/lib\/dhcp\/dhcpd.leases; \\ \r\n\u00a0\u00a0\u00a0chown root:dhcpd \/var\/lib\/dhcp \/var\/lib\/dhcp\/dhcpd.leases; \\ \r\n\u00a0\u00a0\u00a0chmod 775 \/var\/lib\/dhcp ; chmod 664 \/var\/lib\/dhcp\/dhcpd.leases; \\ \r\n\u00a0\u00a0\u00a0<strong><span style=\"color: #339966;\">exec dhcpd -user dhcpd -group dhcpd -f -4 -pf \/run\/dhcpd.pid -cf $CONFIG_FILE $INTERFACES'<\/span><\/strong> \r\n\r\n[Install] \r\nWantedBy=multi-user.target\r\n\r\n<\/pre>\n<p>Mit sudo -i wechselt man in den root-Kontext und ruft dann mit nano die Konfigurationsdatei auf. Die gr\u00fcn hervorgehobene Zeile muss angepasst werden, da sie \u00fcber den Parameter -pf den Pfad zum pid-File festlegt.<br \/>\nEs gibt zwar die Variable $DHCPD_PID, die die Einstellung aus \/etc\/default\/isc-dhcp-server lesen w\u00fcrde, es funktioniert nur nicht &#8230;.<\/p>\n<p>Wenn die Datei angepasst und gespeichert wurde, m\u00fcssen noch folgende Befehle eingegeben werden:<\/p>\n<pre style=\"padding-left: 40px;\">systemctl daemon-reload\r\nsystemctl restart isc-dhcp-server\r\nsystemctl status isc-dhcp-server<\/pre>\n<p>systemctl status sollte jetzt zeigen, dass der DHCP-Server aktiv ist und auch den neuen Pfad zum pid-File best\u00e4tigen.<\/p>\n<pre style=\"padding-left: 40px;\">root@dhcp3:\/lib\/systemd\/system# systemctl status isc-dhcp-server \u00a0\r\n\u25cf isc-dhcp-server.service - ISC DHCP IPv4 server \r\n\u00a0\u00a0\u00a0\u00a0Loaded: loaded (\/lib\/systemd\/system\/isc-dhcp-server.service; enabled; vendor preset: enabled) \r\n\u00a0\u00a0\u00a0\u00a0Active: active (running) since Fri 2020-11-06 09:35:09 CET; 59min ago \r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Docs: man:dhcpd(8) \r\n\u00a0\u00a0Main PID: 631 (dhcpd) \r\n\u00a0\u00a0\u00a0\u00a0\u00a0Tasks: 4 (limit: 4620) \r\n\u00a0\u00a0\u00a0\u00a0Memory: 7.6M \r\n\u00a0\u00a0\u00a0\u00a0CGroup: \/system.slice\/isc-dhcp-server.service \r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u2514\u2500631 dhcpd -user dhcpd -group dhcpd -f -4 <strong><span style=\"color: #339966;\">-pf \/run\/dhcpd.pid<\/span><\/strong> -cf \/etc\/dhcp\/dhcpd.conf\r\n\r\n<\/pre>\n<p>Der dargestellte Workaround funktioniert bisher sicher und ohne Fehler.<\/p>\n<p>Es bleibt die Anpassung des Pfades zum PID-File in den Webmin-Einstellungen zum DHCP-Server.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mein urspr\u00fcnglicher Ansatz war die manuelle \u00c4nderung des Konfigurationsfiles, allerdings wird das schnell ein Fass ohne Boden und es ist g\u00fcnstiger und weit weniger fehleranf\u00e4llig den eigentlichen Bock zu suchen. Letztlich beruht der &#8216;Fehler&#8217; unter Ubuntu darauf, dass der IP V6-Daemon nicht konfiguriert, aber auch nicht deaktiviert ist. Ein einfaches Deaktivieren des IP V6-Daemons mittels [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":316,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45,32,4],"tags":[46,48,29],"class_list":["post-356","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dienste","category-linux","category-netzwerk","tag-dhcp","tag-isc-dhcp-server","tag-linux"],"_links":{"self":[{"href":"http:\/\/www.digiliv.de\/index.php\/wp-json\/wp\/v2\/posts\/356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.digiliv.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.digiliv.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.digiliv.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.digiliv.de\/index.php\/wp-json\/wp\/v2\/comments?post=356"}],"version-history":[{"count":3,"href":"http:\/\/www.digiliv.de\/index.php\/wp-json\/wp\/v2\/posts\/356\/revisions"}],"predecessor-version":[{"id":779,"href":"http:\/\/www.digiliv.de\/index.php\/wp-json\/wp\/v2\/posts\/356\/revisions\/779"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.digiliv.de\/index.php\/wp-json\/wp\/v2\/media\/316"}],"wp:attachment":[{"href":"http:\/\/www.digiliv.de\/index.php\/wp-json\/wp\/v2\/media?parent=356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.digiliv.de\/index.php\/wp-json\/wp\/v2\/categories?post=356"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.digiliv.de\/index.php\/wp-json\/wp\/v2\/tags?post=356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}