DHCP Server startet nicht

german
dhcp

#1

Hallo zusammen,

ich habe ein Problem mit einrichtung meines DHCP-Servers. Der Server ist ein frisch installiertes UCS-4.2. Auf der Maschine versuche ich “verzweifelt” den DHCP einzurichten.

Laut tcpdump kommen die anfragen an:
tcpdump -n -i any port 67 or port 68
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
16:23:26.155165 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 52:54:00:fc:12:a6, length 300
16:23:26.155172 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 52:54:00:fc:12:a6, length 300
16:23:26.155128 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 52:54:00:fc:12:a6, length 300
16:23:26.155252 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 52:54:00:fc:12:a6, length 300
16:23:26.155252 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 52:54:00:fc:12:a6, length 300
16:23:26.155252 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 52:54:00:fc:12:a6, length 300
16:23:26.155313 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 52:54:00:fc:12:a6, length 300

Wenn ich den Status des DHCP-Servers abfrage kommt diese Meldung:

service univention-dhcp status
● univention-dhcp.service - LSB: DHCP server
Loaded: loaded (/etc/init.d/univention-dhcp)
Active: failed (Result: exit-code) since Di 2017-06-13 16:15:37 CEST; 1s ago
Process: 10309 ExecStop=/etc/init.d/univention-dhcp stop (code=exited, status=0/SUCCESS)
Process: 12649 ExecStart=/etc/init.d/univention-dhcp start (code=exited, status=1/FAILURE)

Jun 13 16:15:37 daten systemd[1]: univention-dhcp.service: control process exited, code=exited status=1
Jun 13 16:15:37 daten systemd[1]: Failed to start LSB: DHCP server.
Jun 13 16:15:37 daten systemd[1]: Unit univention-dhcp.service entered failed state.
Jun 13 16:15:37 daten univention-dhcp[12649]: Configuration file errors encountered – exiting
Jun 13 16:15:37 daten univention-dhcp[12649]: If you think you have received this message due to a bug rather
Jun 13 16:15:37 daten univention-dhcp[12649]: than a configuration issue please read the section on submitting
Jun 13 16:15:37 daten univention-dhcp[12649]: bugs on either our web page at www.isc.org or in the README file
Jun 13 16:15:37 daten univention-dhcp[12649]: before submitting a bug. These pages explain the proper
Jun 13 16:15:37 daten univention-dhcp[12649]: process and the information we find helpful for debugging…
Jun 13 16:15:37 daten univention-dhcp[12649]: exiting.

Leider verläßt mich hier mein Wissen bezüglich UCS und DHCP. Meine Frage, welche Config-Files muss ich kontrollieren um diesen Fehler zu lösen bzw. welche Info werden benötigt um Lösungsansätze zu tätigen?

Gruß
Ingo


#2

Hallo Ingo,

schau mal im DHCP-Server in der WebUI. Standardmäßig ist kein DHCP-Pool eingerichtet. Den musst Du manuell eintragen. Siehe http://docs.software-univention.de/handbuch-4.2.html#module:dhcp:dhcp

Viele Grüße
Ulf


#3

Hallo Ulf,

danke für deinen Hinweis. Den DHCP-Pool hatte ich schon eingerichtet.
Mein Problem ist, dass ich den Dienst gar nicht starten kann. Und beim Versuch diese zu tun, bekomme ich folgende Fehlermeldung:

Job for univention-dhcp.service failed. See ‘systemctl status univention-dhcp.service’ and ‘journalctl -xn’ for details.

Wenn ich dann den Befehl “systemctl status univention-dhcp.service” ausführe, sieht die Fehlermeldung wei folgt aus:

univention-dhcp.service - LSB: DHCP server
Loaded: loaded (/etc/init.d/univention-dhcp)
Active: failed (Result: exit-code) since Mi 2017-06-14 08:35:43 CEST; 54s ago
Process: 10309 ExecStop=/etc/init.d/univention-dhcp stop (code=exited, status=0/SUCCESS)
Process: 24447 ExecStart=/etc/init.d/univention-dhcp start (code=exited, status=1/FAILURE)

Jun 14 08:35:43 daten systemd[1]: univention-dhcp.service: control process exited, code=exited status=1
Jun 14 08:35:43 daten systemd[1]: Failed to start LSB: DHCP server.
Jun 14 08:35:43 daten systemd[1]: Unit univention-dhcp.service entered failed state.
Jun 14 08:35:43 daten univention-dhcp[24447]: Configuration file errors encountered – exiting
Jun 14 08:35:43 daten univention-dhcp[24447]: If you think you have received this message due to a bug rather
Jun 14 08:35:43 daten univention-dhcp[24447]: than a configuration issue please read the section on submitting
Jun 14 08:35:43 daten univention-dhcp[24447]: bugs on either our web page at www.isc.org or in the README file
Jun 14 08:35:43 daten univention-dhcp[24447]: before submitting a bug. These pages explain the proper
Jun 14 08:35:43 daten univention-dhcp[24447]: process and the information we find helpful for debugging…
Jun 14 08:35:43 daten univention-dhcp[24447]: exiting.

Gruß Ingo


#4

In /etc/dhcp/dhcpd.conf sollte per default eine solche Zeile stehen:

# ldap-debug-file "/var/log/dhcp-ldap-startup.log";

Die kann man aktivieren und dann beim Start des DHCP-Servers hoffentlich besser nachvollziehen, was ihm an der Konfiguration nicht gefällt.


#5

Habe die besagte Zeile aktiviert. Leider ohne sichtbaren Erfolg.
Das Log-File ist nach einen neuen Startversuch leider leer.


#6

Die normale dhcpd.conf ist eigentlich ziemlich übersichtlich:

root@ucs-4128:~# cat /etc/dhcp/dhcpd.conf
# Warning: This file is auto-generated and might be overwritten by
#          univention-config-registry.
#          Please edit the following file(s) instead:
# Warnung: Diese Datei wurde automatisch generiert und kann durch
#          univention-config-registry überschrieben werden.
#          Bitte bearbeiten Sie an Stelle dessen die folgende(n) Datei(en):
#
#       /etc/univention/templates/files/etc/dhcp/dhcpd.conf
#

include "/etc/dhcp/univention.conf";
include "/etc/dhcp/local.conf";

option ldap-servers code 128 = array of ip-address;
option ldap-base code 129 = string;



ldap-server "ucs-4128.mydomain.intranet";
ldap-dhcp-server-cn "ucs-4128";
ldap-username "cn=ucs-4128,cn=dc,cn=computers,dc=mydomain,dc=intranet";
ldap-password-file "/etc/machine.secret";
ldap-port 7389;
ldap-base-dn "cn=dhcp,dc=mydomain,dc=intranet";
ldap-method dynamic;
# ldap-debug-file "/var/log/dhcp-ldap-startup.log";

# dynamic DNS: with external name server only!

Wenn auf diesem System ein “univention-ldapsearch” funktioniert, dürfte ldap-username und ldap-password nicht die Ursache sein. Das Tool benutzt das selbe Maschinenkonto.
In die Includes könnte man auch mal reinsehen. Auf meinem Testsystem sind sie leer.


#7

Hallo Zusammen,

bei mir besteht dasselbe Problem seit dem Update auf 4.2.1-errate99: Der DHCP-Server startet einfach nicht mehr:

  • DHCP-Pool eingerichtet
  • “univention-ldapsearch” funktioniert problemlos
  • /var/log/dhcp-ldap-startup.log bleibt leer.

Für mich ist das eine mittlere Katastrophe, da sich durch das Fehlen eines DHCP-Servers keiner meiner Radius-Clients mehr authentifizieren kann.

Meine /var/log/dhcpd.conf sieht wie folgt aus:

include "/etc/dhcp/univention.conf";
include "/etc/dhcp/local.conf";

option ldap-servers code 128 = array of ip-address;
option ldap-base code 129 = string;



ldap-server "<korrekter DNS-Eintrag des Servers>";
ldap-dhcp-server-cn "<korrekter DNS-Eintrag des Servers>";
ldap-username "cn=<korrekter DNS-Eintrag des Servers>,cn=dc,cn=computers,dc=<Domain>,dc=intranet";
ldap-password-file "/etc/machine.secret";
ldap-port 7389;
ldap-base-dn "cn=dhcp,dc=<Domain>,dc=intranet";
ldap-method dynamic;
ldap-debug-file "/var/log/dhcp-ldap-startup.log";

Ein systemctl status univention-dhcp.service bringt auch keine informationen, WAS an der Konfiguration nicht stimmen soll:

● univention-dhcp.service - LSB: DHCP server
   Loaded: loaded (/etc/init.d/univention-dhcp)
   Active: failed (Result: exit-code) since Mo 2017-07-24 11:37:08 CEST; 33min ago
  Process: 5251 ExecStart=/etc/init.d/univention-dhcp start (code=exited, status=1/FAILURE)

Jul 24 11:37:08 <Servername> systemd[1]: univention-dhcp.service: control process exited, code=exited status=1
Jul 24 11:37:08 <Servername> systemd[1]: Failed to start LSB: DHCP server.
Jul 24 11:37:08 <Servername> systemd[1]: Unit univention-dhcp.service entered failed state.
Jul 24 11:37:08 <Servername> univention-dhcp[5251]: Configuration file errors encountered -- exiting
Jul 24 11:37:08 <Servername> univention-dhcp[5251]: If you think you have received this message due to a bug rather
Jul 24 11:37:08 <Servername> univention-dhcp[5251]: than a configuration issue please read the section on submitting
Jul 24 11:37:08 <Servername> univention-dhcp[5251]: bugs on either our web page at www.isc.org or in the README file
Jul 24 11:37:08 <Servername> univention-dhcp[5251]: before submitting a bug.  These pages explain the proper
Jul 24 11:37:08 <Servername> univention-dhcp[5251]: process and the information we find helpful for debugging..
Jul 24 11:37:08 <Servername> univention-dhcp[5251]: exiting.
```

Ein `udm dhcp/subnet list --superordinate cn=<Domainname>.intranet,cn=dhcp,dc=<Domainname>,dc=intranet` bringt folgendes Ergebnis:

```
DN: cn=192.168.178.0,cn=<Domainname>.intranet,cn=dhcp,dc=<Domainname>,dc=intranet
  broadcastaddress: None
  subnet: 192.168.178.0
  subnetmask: 24
  univentionPolicyReference: cn=default-settings,cn=boot,cn=dhcp,cn=policies,dc=<Domainname>,dc=intranet
  univentionPolicyReference: cn=default-settings,cn=dns,cn=dhcp,cn=policies,dc=<Domainname>,dc=intranet
  univentionPolicyReference: cn=default-settings,cn=routing,cn=dhcp,cn=policies,dc=<Domainname>,dc=intranet

DN: cn=10.0.0.0,cn=<Domainname>.intranet,cn=dhcp,dc=<Domainname>,dc=intranet
  broadcastaddress: 10.0.0.255
  range: 10.0.50.1 10.0.55.254
  subnet: 10.0.0.0
  subnetmask: 16
  univentionPolicyReference: cn=dynamisch,cn=scope,cn=dhcp,cn=policies,dc=<Domainname>,dc=intranet
  univentionPolicyReference: cn=schnell,cn=leasetime,cn=dhcp,cn=policies,dc=<Domainname>,dc=intranet
```
(zur Erläuterung: 192.168.178.0 ist das Netz von eth0, an welchem unsere Internetverbindung hängt, 10.0.0.0 ist unser internes Netz an eth1, wobei unbekannte Clients die Adressen oberhalb von 10.0.50.0 bekommen und bekannte Clients Adressen der Form 10.0.[0,10,20,30,40].0 per festem DHCP-Eintrag im Service <Domain>.intranet letztlich machen wir via iptables ein NAT zwischen eth0 und eth1)

Kann hier jemand helfen?

Vielen Dank und beste Grüße,

ws.sideshow

#8

Haben Sie schon mal in diese Includes geschaut?
Ansonsten hab ich noch http://forge.univention.org/bugzilla/show_bug.cgi?id=45065 gefunden.


#9

Hallo,

vielen Dank für den schnellen Tipp!

Die includes waren zuvor mit drin, die beiden Dateien jedoch leer. Ich hatte Sie wegen der Fehlersuche auskommentiert:

Die Datei /var/log/univention/dhcp.log ist bei mir leer, ich vermute also, dass es sich nicht um den beschriebenen Bug handelt.

Aktuell habe ich den DHCP-Server starten können, indem ich die Konfiguration der Clients ausgelesen und “hart” (also ohne LDAP-Server) in die /etc/dhcp/dhcpd.conf geschrieben habe (siehe Bild). Da nur meine Acesspoints wegen des Radius-Servers stets dieselbe IP haben müssen, ist das für mich im Moment eine akzeptable Lösung.

Konfiguriert man den DHCP falsch, gibt er, falls KEIN LDAP verwendet wird, die entsprechende Stelle in der Konfiguraionsdatei aus:

Unter Verwendung des LDAPs in der Konfiguration tut er das nicht:

Gibt es eine Möglichkeit den “Übeltäter” zu finden, indem man sich trotz Verwendung eines LDAPs ausgeben lässt, welche Konfiguration dem DHCP-Server nicht gefällt?

Vielen Dank und beste Grüße,

ws.sideshow


#10

Der einzige mir bekannte Zweck von “ldap-debug-file” ist, die vom LDAP gelieferte Konfiguration in die angegebene Datei zu schreiben. Das scheint ja schon nicht zu funktionieren.
Funktioniert denn ein univention-ldapsearch -b cn=dhcp,dc=<Domain>,dc=intranet? Das würde dieselben Zugangsdaten wie die LDAP-Konfiguration des dhcpd benutzen.
Wenn ja fällt mir nur noch strace ein…


#11

Ja:


#12

Könnten Sie mir das etwas genauer beschreiben?

Danke und beste Grüße,

ws.sideshow


#13

Mit strace kann man sich entweder an einen bestehen Prozess (-p PID) hängen oder einfach einen Prozess starten und dann sehen, was dieser so treibt. Also Dateien öffnen und schließen, Dinge schreiben oder lesen usw. Das wird immer sehr viel Information, also schreibt man es besser gleich in eine Datei (-o /pfad/zur/datei).
Typischerweise erzeugen Startskripte erst die interessierenden Prozesse, dann muß man die Kinder extra mitnehmen (Option -f ).
In der man-page stehen noch mehr Optionen.

Auf meinem UCS 4.1 kann ich noch dieses ausführen

# strace -f -o /tmp/trace /etc/init.d/univention-dhcp restart
[ ok ] Restarting univention-dhcp: dhcpd.

… und anschließend /tmp/trace lesen
Mit Systemd habe ich das noch nicht machen müssen.

Meine präferierte Methode ist es, im Text nach den Fehlermeldungen zu suchen und dann nach oben weiterzumachen. Im besten Fall steht da, dass irgendwer irgendwas nicht darf, findet oder versteht. Was das im konkreten Fall sein kann, weiß ich allerdings nicht. Sonst würde ich auch nicht zu dieser Methode raten.


#14

Hallo

Ich hab das gleiche Problem… 4.2-2 errata203

univention-ldapsearch funtioniert aber in var/log/univention/dhcp.log finde ich mehrmals :

20.10.17 16:27:57.512  DEBUG_INIT
20.10.17 16:27:57.576  POLICY      ( ERROR   ) : Failed to get namingContexts: Can't contact LDAP server

#15

univention-ldapsearch benutzt den in /etc/ldap/ldap.conf definierten Server. Der vom DHCP benutzte müsste der in /etc/dhcp/dhcpd.conf (ldap-* settings) sein.


#16

Hmm

In dhcpd.conf steht folgendes :

option ldap-servers code 128 = array of ip-address;
option ldap-base code 129 = string;



ldap-server "ucs-3016.<domain>.intranet";
ldap-dhcp-server-cn "ucs-3016";
ldap-username "cn=ucs-3016,cn=dc,cn=computers,dc=<domain>,dc=intranet";
ldap-password-file "/etc/machine.secret";
ldap-port 7389;
ldap-base-dn "cn=dhcp,dc=<domain>,dc=intranet";
ldap-method dynamic;

Also absolut standard wenn ich das richtig überblicke.
Webmin sagt mir allerdings auch dass kein ldap-server läuft… und effektiv benutzt univention sldap
Wie kann ich dhcpd denn beibringen den richtigen server zu nehmen?


#17

Ich weiß mangels Kenntnis der Umgebung nicht, was der “richtige Server” hier wäre. EIn Vergleich mit der /etc/ldap/ldap.conf wäre jedoch sinnvoll.
Was passiert denn, wenn man den DHCP neu startet?
Das mit dem weiter oben erwähnten Bug beschriebene Problem lag ja wohl daran, dass der S4-basierte DNS (noch) nicht verfügbar war. “Failed to get namingContexts” sieht mir jedenfalls weiterhin danach aus.


#18

hmmm bind9 läuft und sovohl reverse als auch forward lookup zone sind gesetzt.

und die fehlermeldung ist ja : Can’t contact LDAP server
was passiert ist genau das was oben beschrieben ist, dhcpd startet nicht mit folgender fehlermeldung
in var/log/syslog

Oct 20 21:22:41 ucs-3016 dhcpd: 
Oct 20 21:22:41 ucs-3016 dhcpd: exiting.
Oct 20 21:22:46 ucs-3016 dhcpd: Configuration file errors encountered -- exiting
Oct 20 21:22:46 ucs-3016 dhcpd: 
Oct 20 21:22:46 ucs-3016 dhcpd: If you think you have received this message due to a bug rather
Oct 20 21:22:46 ucs-3016 dhcpd: than a configuration issue please read the section on submitting
Oct 20 21:22:46 ucs-3016 dhcpd: bugs on either our web page at www.isc.org or in the README file
Oct 20 21:22:46 ucs-3016 dhcpd: before submitting a bug.  These pages explain the proper
Oct 20 21:22:46 ucs-3016 dhcpd: process and the information we find helpful for debugging..
Oct 20 21:22:46 ucs-3016 dhcpd: 
Oct 20 21:22:46 ucs-3016 dhcpd: exiting.

hmm seltsam


#19

Das bedeutet noch nicht, dass das Backend funktioniert.

Dieselbe Meldung steht auch in der Bug-Beschreibung http://forge.univention.org/bugzilla/show_bug.cgi?id=45065#c0
Und zumindest dort wurde das nicht erreichbare DNS als unmittelbare Ursache ermittelt.
Der Hinweis auf die Konfigurationsfehler im Sylsog muß ja nicht wirklich zielführend sein. Er ist letztendlich nur eine Interpretation des Fehlerzustandes.


#20

Da funktioniert echt was nicht.
Ich hab die Ip-Adresse des servers geändert nach der installation von dhcp. vorher hat die fritzbox dhcp gemacht. aber nslookup gibt mir immer noch die alte adresse zurück obwohl die nirgends mehr steht. da sind irgenwelche caches noch unsauber.
das muss ich über wochenende mal evaluieren