isc-dhcp-server: IP immer nach MAC zuordnen

Gemeinsam ins Internet mit Firewall und Proxy.
Antworten
reox
Beiträge: 2529
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von reox » 13.11.2022 16:37:42

Ich habe einen Debianisc-dhcp-server mit Standard-Konfiguration am laufen. Der soll Clients eine IP zuordnen und zwar immer die selbe, wenn die selbe MAC nachfragt. Welche genau ist mir egal, hauptsache es ist immer so - also ich brauche keine Host konfiguration mit fixed-address.
Ich hatte nämlich gestern das Problem, das ein Host plötzlich eine andere IP bekommen hat, obwohl der mit der selben NIC dran hängt. Mein Verdacht war, dass der Client entschieden hat einen anderen Client Identifier zu senden.

Mir scheint, die Konfiguration dazu ist:
man dhcpd.conf hat geschrieben:The duplicates keyword

allow duplicates;
deny duplicates;

Host declarations can match client messages based on the DHCP Client Identifier option or based on the client's network hardware type and MAC address. If the MAC address is used, the host declaration will match any client with that MAC address - even clients with
different client identifiers. This doesn't normally happen, but is possible when one computer has more than one operating system installed on it - for example, Microsoft Windows and NetBSD or Linux.

The duplicates flag tells the DHCP server that if a request is received from a client that matches the MAC address of a host declaration, any other leases matching that MAC address should be discarded by the server, even if the UID is not the same. This is a violation of the DHCP protocol, but can prevent clients whose client identifiers change regularly from holding many leases at the same time. By default, duplicates are allowed.
richtig? dH wenn ich in einem subnet scope deny duplicates schreibe, sollte ich dieses Problem nicht mehr haben und Clients immer nur anhand ihrer MAC am DHCP identifiziert werden?
Oder gibt es noch eine weitere Option die zu beachten wäre?

Sprich, mein subnet sollte dann so ausschauen:

Code: Alles auswählen

subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.100 192.168.0.200;
    option domain-name-servers 192.168.0.1;
    option routers 192.168.0.1;
    default-lease-time 7200;
    max-lease-time 14400;
    deny duplicates;
}

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von heisenberg » 13.11.2022 17:12:40

Soweit ich weiss, gibt es keine Angabe, mit der man IP-Adressen generell immer statisch zuweist. Das normalerweise sowiese mehr oder weniger so getan, weil der Client grundsätzlich immer nach der Adresse fragt, die er bereits hat(te).

Andere Methode ist, dass man einzelne Geräte mittels "host" Eintrag im entsprechenden Subnet mit statischer Adresse einträgt, z. B. so:

Code: Alles auswählen

subnet 192.168.1.0 netmask 255.255.255.0 {

	# clients dynamisch zugewiesener ip
        pool {
          range 192.168.1.10 - 192.168.1.100;
        }

        # clients mit statisch zugewiesner ip
        host hostname.my-localdomain.zz {
                hardware ethernet 00:22:10:11:11:86;
                fixed-address 192.168.1.50; 
                option host-name "hostname.my-local_domain.zz"; 
                }
                
}

reox
Beiträge: 2529
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von reox » 13.11.2022 17:21:07

Mhh also ich hatte es so verstanden, dass der isc-dhcp-server immer versucht die selbe IP zu vergeben, auch wenn der Client nicht explizit fragt. Deshalb verstand ich die option duplicates so, dass damit sichergestellt wird, dass ein Client nur anhand seiner MAC identifiziert wird.

Zumindest fürs erste interpretiere ich diesen Satz in der manpage so:
man dhcpd.conf hat geschrieben: When the DHCP server allocates a new address for a client (remember, this only happens if the client has sent a DHCPDISCOVER), it first looks to see if the client already has a valid lease on an IP address, or if there is an old IP address the client had before that
hasn't yet been reassigned. In that case, the server will take that address and check it to see if the client is still permitted to use it. If the client is no longer permitted to use it, the lease is freed if the server thought it was still in use - the fact that
the client has sent a DHCPDISCOVER proves to the server that the client is no longer using the lease.
Ich mag nicht für jeden client einen hostblock erstellen - darum gehts mir eigentlich :D

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von heisenberg » 13.11.2022 18:00:09

Na dann probiere es doch mal aus und berichte.

Man könnte auch ein kleines Script schreiben, dass die MAC-Adressen aus dem DHCPD-Log fischt und daraus Hostblöcke erstellt und anschließend den DHCPD neu startet.

reox
Beiträge: 2529
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von reox » 13.11.2022 18:46:45

Ja gute frage wie man das testet...
Mittels

Code: Alles auswählen

nmap -e eth1.20 --script broadcast-dhcp-discover --script-args clientid=fazbaz
kann ich zwar einen request mit irgendeiner client ID senden, aber der allokiert die Adresse nicht, da er nach dem DHCPDISCOVER nur auf den OFFER wartet und dann abbricht.
Gibts da irgendwas sinnvolles zum testen?

reox
Beiträge: 2529
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von reox » 13.11.2022 19:22:03

Ok, das hier schaut brauchbar aus: https://github.com/saravana815/dhtest

Folgender test:

Code: Alles auswählen

dhtest  -i eth1.20 -m de:ad:c0:de:ca:fe -V
dhtest  -i eth1.20 -m de:ad:c0:de:ca:fe -V -c 61,str,helloworld
Lieferte mir beide male die selbe IP. Aber wenn ich dann einen anderen client identifier wähle bekomme ich eine neue :/

Also scheint das noch nicht zu klappen.

mat6937
Beiträge: 3372
Registriert: 09.12.2014 10:44:00

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von mat6937 » 13.11.2022 19:23:40

Was genau meinst Du mit "nicht allokieren" bzw. mit "abbrechen"?
reox hat geschrieben: ↑ zum Beitrag ↑
13.11.2022 18:46:45
... der allokiert die Adresse nicht, da er nach dem DHCPDISCOVER nur auf den OFFER wartet und dann abbricht.
Hier funktioniert der Test:

Code: Alles auswählen

:~ # nmap -e ue0 --script broadcast-dhcp-discover --script-args clientid=fazbaz
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-13 19:17 CET
Pre-scan script results:
| broadcast-dhcp-discover: 
|   Response 1 of 1: 
|     Interface: ue0
|     IP Offered: 192.168.178.46
|     DHCP Message Type: DHCPOFFER
|     Server Identifier: 192.168.178.1
|     IP Address Lease Time: 5d00h00m00s
|     Renewal Time Value: 2d12h00m00s
|     Rebinding Time Value: 4d09h00m00s
|     Subnet Mask: 255.255.255.0
|     Router: 192.168.178.1
|     Domain Name Server: 192.168.178.1
|     Domain Name: fritz.box
|     Broadcast Address: 192.168.178.255
|_    NTP Servers: 192.168.178.1
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 11.22 seconds
Wenn man zusätzlich:

Code: Alles auswählen

dhcpdump -i <Interface>
startet, kann man mehr sehen.
Debian 12.8 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce

reox
Beiträge: 2529
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von reox » 13.11.2022 19:29:00

mat6937 hat geschrieben: ↑ zum Beitrag ↑
13.11.2022 19:23:40
Was genau meinst Du mit "nicht allokieren" bzw. mit "abbrechen"?
Das Skript sendet einen DHCPDISCOVER und wartet dann auf ein DHCPOFFER. Danach müsste es aber einen DHCPREQUEST an den Server senden, der vom Server mit einem DHCPACK bestätigt wird, damit der Lease am Server eingetragen wird.
Der isc-dhcp-server verhält sich vorbildmäßig wenn kein DHCPREQUEST mehr kommt und erstellt (=allokiert) keinen lease, so dass ich schlecht testen kann ob ich später eine andere IP bekomme.
Das dhtest script macht aber den gesamten Handshake durch (und kann auch DHCPRELEASE) und erstellt somit wirklich eine lease am server.

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von heisenberg » 13.11.2022 21:10:51

reox hat geschrieben: ↑ zum Beitrag ↑
13.11.2022 16:37:42
man dhcpd.conf hat geschrieben:The duplicates keyword

allow duplicates;
deny duplicates;

Host declarations can match client messages based on the DHCP Client Identifier option or based on the client's network hardware type and MAC address. If the MAC address is used, the host declaration will match any client with that MAC address - even clients with
different client identifiers. This doesn't normally happen, but is possible when one computer has more than one operating system installed on it - for example, Microsoft Windows and NetBSD or Linux.

The duplicates flag tells the DHCP server that if a request is received from a client that matches the MAC address of a host declaration, any other leases matching that MAC address should be discarded by the server, even if the UID is not the same. This is a violation of the DHCP protocol, but can prevent clients whose client identifiers change regularly from holding many leases at the same time. By default, duplicates are allowed.
Da steht in beiden Absätzen drin, dass sich das auf Host declarations bezieht. Also das, was Du gerne vermeiden möchtest.

Benutzeravatar
schorsch_76
Beiträge: 2601
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von schorsch_76 » 13.11.2022 21:15:26

Setz die

default-lease-time 7200;
max-lease-time 14400;

Hoch. Das sind nur 2h bzw. 4h. Setz das ruhig auf ein Jahr oder so.

https://linux.die.net/man/8/dhcpd

Code: Alles auswählen

Lease Lengths
DHCP leases can be assigned almost any length from zero seconds to infinity. What lease length makes sense for any given subnet, or for any given installation, will vary depending on the kinds of hosts being served.

For example, in an office environment where systems are added from time to time and removed from time to time, but move relatively infrequently, it might make sense to allow lease times of a month of more. In a final test environment on a manufacturing floor, it may make more sense to assign a maximum lease length of 30 minutes - enough time to go through a simple test procedure on a network appliance before packaging it up for delivery.

It is possible to specify two lease lengths: the default length that will be assigned if a client doesn't ask for any particular lease length, and a maximum lease length. These are specified as clauses to the subnet command:

    subnet 239.252.197.0 netmask 255.255.255.0 {
      range 239.252.197.10 239.252.197.107;
      default-lease-time 600;
      max-lease-time 7200;
    }

This particular subnet declaration specifies a default lease time of 600 seconds (ten minutes), and a maximum lease time of 7200 seconds (two hours). Other common values would be 86400 (one day), 604800 (one week) and 2592000 (30 days).

Each subnet need not have the same lease--in the case of an office environment and a manufacturing environment served by the same DHCP server, it might make sense to have widely disparate values for default and maximum lease times on each subnet. 

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von heisenberg » 13.11.2022 21:23:51

Mein Verdacht war, dass der Client entschieden hat einen anderen Client Identifier zu senden.
Das könnte man nochmal mit einem tcpdump testen, ob das so ist? Oder mit dem (evtl. loglevel-erhöhten) dhcd-log?

Benutzeravatar
oln
Beiträge: 539
Registriert: 05.01.2021 09:41:24

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von oln » 14.11.2022 09:22:20

Moin,
heisenberg hat geschrieben: ↑ zum Beitrag ↑
13.11.2022 17:12:40
Soweit ich weiss, gibt es keine Angabe, mit der man IP-Adressen generell immer statisch zuweist.
das stimmt so nicht.
Wenn du einen Client anhand der MAC eine IP zuordnen möchtest, dann geht das so:

Code: Alles auswählen

host namedenduwillst {
  hardware ethernet <hierdieMAC>;
  fixed-address 192.168.1.200;
  option host-name "namedenduwillst";
}
Gruß Ole
AbuseIPDB

reox
Beiträge: 2529
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von reox » 14.11.2022 09:39:45

heisenberg hat geschrieben: ↑ zum Beitrag ↑
13.11.2022 21:23:51
Mein Verdacht war, dass der Client entschieden hat einen anderen Client Identifier zu senden.
Das könnte man nochmal mit einem tcpdump testen, ob das so ist? Oder mit dem (evtl. loglevel-erhöhten) dhcd-log?
Das Gerät ist so ein Shelly Teil und ich hab es resetten müssen. Ich hab dann die Lease Table angeschaut und da hatte er eine andere ID. Ich mag es grad nicht reproduzieren - hätte aber noch ein Gerät zum testen im Schrank... Jedenfalls sieht man es auch in /var/lib/dhcp/dhcpd.leases
oln hat geschrieben: ↑ zum Beitrag ↑
14.11.2022 09:22:20
Wenn du einen Client anhand der MAC eine IP zuordnen möchtest, dann geht das so:
Das wurde ja schon eingangs erwähnt. Ist das wirklich die einzige Möglichkeit? Falls ja, bleibt mir wirlich nur die leases zu parsen und einen hostblock zu erstellen.
schorsch_76 hat geschrieben: ↑ zum Beitrag ↑
13.11.2022 21:15:26
Hoch. Das sind nur 2h bzw. 4h. Setz das ruhig auf ein Jahr oder so.
Das macht keinen Unterschied: Wenn ein Client mit einer neuen Client ID kommt und eine IP haben will, bekommt er auch mit einer hohen Lease time eine neue.
Ich würde das auch generell nicht zu hoch setzen, weil ich sonst Änderungen nicht sinnvoll im Netz verteilen kann (sollte sowas mal der Fall sein müssen)
heisenberg hat geschrieben: ↑ zum Beitrag ↑
13.11.2022 21:10:51
Da steht in beiden Absätzen drin, dass sich das auf Host declarations bezieht. Also das, was Du gerne vermeiden möchtest.
Aha! Ok, das hatte ich wohl nicht ganz richtig verstanden - jetzt macht das Sinn. Also gibts tatsächlich keine Variante wie man das dem server konfigurieren kann? Ich hab die manpage zwar nur überflogen aber mir wäre da sonst nichts anderes aufgefallen...

michaa7
Beiträge: 4927
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von michaa7 » 14.11.2022 14:06:14

oln hat geschrieben: ↑ zum Beitrag ↑
14.11.2022 09:22:20
Moin,
heisenberg hat geschrieben: ↑ zum Beitrag ↑
13.11.2022 17:12:40
Soweit ich weiss, gibt es keine Angabe, mit der man IP-Adressen generell immer statisch zuweist.
das stimmt so nicht.
Wenn du einen Client anhand der MAC eine IP zuordnen möchtest, dann geht das so:

Code: Alles auswählen

host namedenduwillst {
  hardware ethernet <hierdieMAC>;
  fixed-address 192.168.1.200;
  option host-name "namedenduwillst";
}
Das funktioniert mit DHCP? D.h. der DHCP server sieht das und sagt: Ok, der will 192.168.1.200, also bekommt er sie (soweit es keinen Kollision gibt)?

In welche Datei wird das geschrieben?

EDIT: ok, dahin: /etc/dhcp/dhcpd.conf

OT:
Kann ich irgendwie Zugriff auf diese Datei auf einer *alten* Fritzbox erhalten?
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
MSfree
Beiträge: 11605
Registriert: 25.09.2007 19:59:30

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von MSfree » 14.11.2022 14:33:08

michaa7 hat geschrieben: ↑ zum Beitrag ↑
14.11.2022 14:06:14
D.h. der DHCP server sieht das und sagt: Ok, der will 192.168.1.200, also bekommt er sie
Nein. Der DHCP-Server sieht die MAC-Adresse und liefert dem Client daraufhin 192.168.1.200 aus, egal welche IP, der Client eigentlich will.
Kann ich irgendwie Zugriff auf diese Datei auf einer *alten* Fritzbox erhalten?
Die Fritte, wie die meisten anderen Plastikrouter auch, verwenden Debiandnsmasq, die Konfiguration ist also in anderen Dateien zu finden, zumindest nicht in dhcpd.conf.

mat6937
Beiträge: 3372
Registriert: 09.12.2014 10:44:00

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von mat6937 » 14.11.2022 16:07:24

michaa7 hat geschrieben: ↑ zum Beitrag ↑
14.11.2022 14:06:14
OT:
Kann ich irgendwie Zugriff auf diese Datei auf einer *alten* Fritzbox erhalten?
Wie alt ist die FritzBox?
Für eine 7270 geht das auch im Web-IF: https://avm.de/service/wissensdatenbank ... en-lassen/
Debian 12.8 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce

michaa7
Beiträge: 4927
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von michaa7 » 14.11.2022 16:43:43

mat6937 hat geschrieben: ↑ zum Beitrag ↑
14.11.2022 16:07:24
...
7270/201_Netzwerkgerat-immer-die-gleiche-IP-Adresse-von-FRITZ-Box-zuweisen-lassen/
Jain. Das weist immer die gleiche, aber erstmalig frei vergebene, somit nicht die von mir gewünschte IP zu ... wie dies mit dem Eintrag in die dhcp.config möglich wäre.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

michaa7
Beiträge: 4927
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von michaa7 » 14.11.2022 17:01:00

MSfree hat geschrieben: ↑ zum Beitrag ↑
14.11.2022 14:33:08
...
Die Fritte, wie die meisten anderen Plastikrouter auch, verwenden Debiandnsmasq, die Konfiguration ist also in anderen Dateien zu finden, zumindest nicht in dhcpd.conf.
Das wäre dann hier:
dhcp-host=xx:xx:xx:xx:xx:xx,Philips-Hue,192.168.0.15
Diese Anweisung in der dnsmasq.conf sorgt dafür, dass eine DHCP-Anfrage der Philips Hue Bridge mit der MAC-Adresse xx:xx:xx:xx:xx:xx von dnsmasq immer mit der IP 192.168.0.15 beantwortet und im DNS mit dem Namen Philips-Hue eingetragen wird.
Aber kommt man da ran?
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

mat6937
Beiträge: 3372
Registriert: 09.12.2014 10:44:00

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von mat6937 » 14.11.2022 18:04:07

michaa7 hat geschrieben: ↑ zum Beitrag ↑
14.11.2022 17:01:00
Aber kommt man da ran?
Wenn es eine private FritzBox ist und man dessen Firmware (mit z. B. Freetz oder gleichwertig) modifiziert, kommt man schon ran.
Debian 12.8 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce

reox
Beiträge: 2529
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: isc-dhcp-server: IP immer nach MAC zuordnen

Beitrag von reox » 14.11.2022 18:19:53

Also ich werd beim isc-dhcp-server bleiben :P

Gibts dazu noch Lösungsvorschläge oder funktioniert es so wie ich das gerne hätte einfach per-design nicht?

Antworten