Unbound DNS update von DHCP

Post Reply
Veti
Posts: 369
Joined: November 22nd, 2009, 9:26 am

Unbound DNS update von DHCP

Post by Veti » November 13th, 2018, 11:34 am

Hi

Ich hab ein problem das die /etc/unbound/dhcp-leases.conf nicht aktualisiert wird.

Wenn ein neuer client sich per dhcp anmeldet erscheint dieser eintrag nicht in der datei.

erst nach einem /etc/init.d/dhcp reload ist der eintrag vorhanden.

Wie soll /usr/sbin/unbound-dhcp-leases-bridge mitbekommen das es einen neuen DHCP client gibt?
Ein signal.SIGHUP : bridge.update_dhcp_leases, ist registiert, aber wie wird dieser automatisch angetriggert?

Veti
Posts: 369
Joined: November 22nd, 2009, 9:26 am

Re: Unbound DNS update von DHCP

Post by Veti » November 20th, 2018, 11:00 am

keiner eine idee?

Die alternative Enable DNS Update (RFC2136) funktioniert so wie ich es sehe nicht mit unbound für die lokale domain.

Wenn ich das aktiviere wird die unbound-dhcp-leases-bridge nicht gestartet, aber die lokale DHCP auflösung funktioniert gar nicht.

User avatar
Arne.F
Core Developer
Core Developer
Posts: 8522
Joined: May 7th, 2006, 8:57 am
Location: BS <-> NDH
Contact:

Re: Unbound DNS update von DHCP

Post by Arne.F » November 20th, 2018, 4:10 pm

Ein signal.SIGHUP : bridge.update_dhcp_leases, ist registiert, aber wie wird dieser automatisch angetriggert?
Nein der HUP wird nicht automatisch getriggert. HUP ist das HangUP Signal. Damit beendet sich die Bridge.

Die DHCP lease Bridge registriert normalerweise auch inotify Signale für das Lease-File und die Fixed-Leases die dann die Ubound conf Dateien neu schreiben und die leases in den laufenden unbound übernehmen wenn sich eines dieser Files ändert.
Arne

Support the project on the donation!

Image

Image

Image
PS: I will not answer support questions via email and ignore IPFire related messages on my non IPFire.org mail addresses.

Veti
Posts: 369
Joined: November 22nd, 2009, 9:26 am

Re: Unbound DNS update von DHCP

Post by Veti » November 21st, 2018, 4:47 pm

Hier ist ein Testlauf

Es gibt zu dem client keinen Eintrag in
-rw-r--r-- 1 root root 1511 Nov 20 23:33 /etc/unbound/dhcp-leases.conf
und
-rw-r--r-- 1 root root 23597 Nov 21 17:38 /var/state/dhcp/dhcpd.leases

Ich schalte das Gerät ein.
Im log finde ich den DHCP request
Nov 21 17:42:25 ipfire dhcpd: DHCPACK on 192.168.2.191 to XX:XX:XX:XX:XX (maestro) via blue0

Das lease file ist aktualisiert:
-rw-r--r-- 1 root root 24240 Nov 21 17:42 /var/state/dhcp/dhcpd.leases
Mit dem Passenden eintrag:
ease 192.168.2.191 {
starts 3 2018/11/21 16:42:25;
ends 3 2018/11/21 17:42:25;
cltt 3 2018/11/21 16:42:25;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet XX:XX:XX:XX:XX;
uid "\001\276|MMRN";
client-hostname "maestro";
}

Die unbound lease ist nicht aktualisert
-rw-r--r-- 1 root root 1511 Nov 20 23:33 /etc/unbound/dhcp-leases.conf

kann es sein das die inotify nicht funktioniert?

nach einem neustart des DHCP ist der Eintrag da.
-rw-r--r-- 1 root root 1761 Nov 21 17:47 /etc/unbound/dhcp-leases.conf
local-data: "maestro.localdomain 60 IN A 192.168.2.191"
local-data: "191.2.168.192.in-addr.arpa 60 IN PTR maestro.localdomain"

Veti
Posts: 369
Joined: November 22nd, 2009, 9:26 am

Re: Unbound DNS update von DHCP

Post by Veti » November 21st, 2018, 7:06 pm

hmm nach dem neustart werden neue dhcp addressen sofort hinzugefügt.

ich hab mal erweiterte debug infos hinzugefügt und monitore das mal über einen längeren zeitpunkt

Veti
Posts: 369
Joined: November 22nd, 2009, 9:26 am

Re: Unbound DNS update von DHCP

Post by Veti » November 21st, 2018, 7:40 pm

Ok anscheinend wird der inotify nach einer zeit invalid

Code: Select all

TIME=[2018-11-21 19:56:48.875432] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_MODIFY']
TIME=[2018-11-21 19:56:48.875631] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_OPEN']
TIME=[2018-11-21 19:56:48.875694] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_ACCESS']
TIME=[2018-11-21 19:56:48.879400] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_CLOSE_NOWRITE']
TIME=[2018-11-21 20:03:10.980936] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_MODIFY']
TIME=[2018-11-21 20:03:10.981042] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_OPEN']
TIME=[2018-11-21 20:03:10.981076] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_ACCESS']
TIME=[2018-11-21 20:03:10.984676] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_CLOSE_NOWRITE']
TIME=[2018-11-21 20:08:11.023593] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_MODIFY']
TIME=[2018-11-21 20:08:11.023838] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_OPEN']
TIME=[2018-11-21 20:08:11.023896] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_ACCESS']
TIME=[2018-11-21 20:08:11.027642] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_CLOSE_NOWRITE']
TIME=[2018-11-21 20:10:31.691904] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_MODIFY']
TIME=[2018-11-21 20:10:31.691948] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_OPEN']
TIME=[2018-11-21 20:10:31.691967] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_ACCESS']
TIME=[2018-11-21 20:10:31.691984] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_CLOSE_NOWRITE']
TIME=[2018-11-21 20:12:01.894794] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_MODIFY']
TIME=[2018-11-21 20:12:01.894896] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_OPEN']
TIME=[2018-11-21 20:12:01.894929] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_ACCESS']
TIME=[2018-11-21 20:12:01.898776] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_CLOSE_NOWRITE']
TIME=[2018-11-21 20:12:31.780438] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_MODIFY']
TIME=[2018-11-21 20:12:31.780678] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_OPEN']
TIME=[2018-11-21 20:12:31.780745] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_ACCESS']
TIME=[2018-11-21 20:12:31.784845] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_CLOSE_NOWRITE']
TIME=[2018-11-21 20:12:33.132044] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_MODIFY']
TIME=[2018-11-21 20:12:33.132220] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_OPEN']
TIME=[2018-11-21 20:12:33.132355] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_ACCESS']
TIME=[2018-11-21 20:12:33.132498] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_ACCESS']
TIME=[2018-11-21 20:12:33.136666] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_CLOSE_NOWRITE']
TIME=[2018-11-21 20:15:48.591370] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_MODIFY']
TIME=[2018-11-21 20:15:48.591654] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_OPEN']
TIME=[2018-11-21 20:15:48.591712] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_ACCESS']
TIME=[2018-11-21 20:15:48.595232] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_CLOSE_WRITE']
TIME=[2018-11-21 20:15:48.598537] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_ATTRIB']
TIME=[2018-11-21 20:15:48.598579] PATH=[/var/state/dhcp/dhcpd.leases] FILENAME=[] EVENT_TYPES=['IN_CLOSE_NOWRITE']
Aus var /log/messages um 20:15

Code: Select all

Nov 21 20:15:48 ipfire dhcpd: Wrote 0 deleted host decls to leases file.
Nov 21 20:15:48 ipfire dhcpd: Wrote 0 new dynamic host decls to leases file.
Nov 21 20:15:48 ipfire dhcpd: Wrote 68 leases to leases file.
Danach gibt es keine inotify events mehr obwohl die datei geändert wird (kein event für 20:33)
-rw-r--r-- 1 root root 20573 Nov 21 20:33 /var/state/dhcp/dhcpd.leases

Veti
Posts: 369
Joined: November 22nd, 2009, 9:26 am

Re: Unbound DNS update von DHCP

Post by Veti » November 21st, 2018, 9:22 pm

ok was dhcp mach ist es erstellt ein neues File und verschiebt es nach dhcpd.leases

Code: Select all

TIME=[2018-11-21 22:16:23.502046] PATH=[/var/state/dhcp/] FILENAME=[dhcpd.leases.1542834983] EVENT_TYPES=['IN_CREATE']
TIME=[2018-11-21 22:16:23.502087] PATH=[/var/state/dhcp/] FILENAME=[dhcpd.leases.1542834983] EVENT_TYPES=['IN_OPEN']
TIME=[2018-11-21 22:16:23.502106] PATH=[/var/state/dhcp/] FILENAME=[dhcpd.leases] EVENT_TYPES=['IN_CLOSE_WRITE']
TIME=[2018-11-21 22:16:23.502123] PATH=[/var/state/dhcp/] FILENAME=[dhcpd.leases.1542834983] EVENT_TYPES=['IN_MODIFY']
TIME=[2018-11-21 22:16:23.502875] PATH=[/var/state/dhcp/] FILENAME=[dhcpd.leases~] EVENT_TYPES=['IN_DELETE']
TIME=[2018-11-21 22:16:23.502911] PATH=[/var/state/dhcp/] FILENAME=[dhcpd.leases~] EVENT_TYPES=['IN_CREATE']
TIME=[2018-11-21 22:16:23.502928] PATH=[/var/state/dhcp/] FILENAME=[dhcpd.leases.1542834983] EVENT_TYPES=['IN_MOVED_FROM']
TIME=[2018-11-21 22:16:23.502945] PATH=[/var/state/dhcp/] FILENAME=[dhcpd.leases] EVENT_TYPES=['IN_MOVED_TO']
TIME=[2018-11-21 22:16:23.504336] PATH=[/var/state/dhcp/] FILENAME=[dhcpd.leases] EVENT_TYPES=['IN_CLOSE_NOWRITE']
Das führt dazu das der originale inotify ungültig wird.

Die Library sagt auch
inotify functionality is available from the Linux kernel and allows you to register one or more directories for watching.

Ggf muss der Code umgeschrieben werden mit verzeichniss monitoring anstelle von file monitoring

DJ-Melo
Posts: 678
Joined: July 8th, 2014, 7:12 am

Re: Unbound DNS update von DHCP

Post by DJ-Melo » April 7th, 2019, 7:46 am

Ähnliches Problem wurde hier festgestellt wie wurde es den vom TE gelöst?

Gruß

Veti
Posts: 369
Joined: November 22nd, 2009, 9:26 am

Re: Unbound DNS update von DHCP

Post by Veti » April 9th, 2019, 7:23 am

bis jetzt nicht.
mein workaround

in /usr/sbin/unbound-dhcp-leases-bridge

den inhalt ab zeile 82 durch dies ersetzen

i = inotify.adapters.Inotify([
#self.leases_file,
"/var/state/dhcp/",
self.fix_leases_file,
self.hosts_file,
])

DJ-Melo
Posts: 678
Joined: July 8th, 2014, 7:12 am

Re: Unbound DNS update von DHCP

Post by DJ-Melo » April 9th, 2019, 7:26 am

danke

Post Reply