IPv4/DHCP/Server: Unterschied zwischen den Versionen

Aus Foxwiki
Robertquies (Diskussion | Beiträge)
K Textersetzung - „  “ durch „ “
 
(98 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=DHCP (Dynamic Host Configuration Protocol)=
= Allgemein =
 
*DHCP (Dynamic Host Configuration Protocol)
==Allgemein==
*Erweiterung des Bootstrap-Protokolls (BOOTP)
*Hintergrundprozess (Dienst/Daemon)
*RFC 2131
*Transport durch UDP
*Transport durch UDP
*Standard-Ports:
*Standard-Ports:
**IPv4: 67 (Server) 68 (Client)
**IPv4:67 (Server) 68 (Client)
**IPv6: 547 (Server) 546 (Client)
**IPv6: 547 (Server) 546 (Client)


==Aufgabe==
= Aufgabe =
*Clients automatisch in ein bestehendes Netz einbinden,
*Clients automatisch in ein bestehendes Netz einbinden
*Übermittlung der Konfigurationsparameter...
*Übermittlung der Netzwerkeinstellungen:
**IP-Adresse,
**IP-Adressen
**Netzmaske,
**Rechnername
**Gateway, Router ins nächst höhere Netz,
**Netzmaske
**Rechnername,
**Broadcast-Adresse
**Broadcast-Adresse,
**Gateway  
**Boot-Image für plattenlose Workstations,
**DNS-Nameserver
**NetBIOS Nameserver und Name Server (DNS)
**NetBIOS Nameserver
**Time- und NTP-Server, die für die Synchronisierung der Uhrzeit zuständig sind,
**Boot-Image für plattenlose Workstations  
 
**Time- und NTP-Server, die für die Synchronisierung der Uhrzeit zuständig sind
==Betriebsmodi==
 
*dynamische Zuordnung:
::*automatische Zuordnung mit Lease-Time
:::Lease-Time: Festlegung wie lange eine IP-Adresse an Client „verliehen“ wird, bevor Client eine „Verlängerung“ beantragen muss
::*bei „Nicht-Verlängerung“ wird IP-Adresse frei und neu vergeben
 
*automatische Zuordnung:
::*am DHCP-Server wird ein Bereich (range) von IP-Adressen definiert.
::*IP-Adressen werden automatisch an die MAC-Adressen von neuen DHCP-Clients zugewiesen und keinem anderen Host mehr zugewiesen
::*Zuweisungen sind permanent (siehe /var/lib/dhcpd.leases)
::*Neue Clients erhalten keine IP-Adresse, wenn Adressbereich vergeben, auch wenn IP-Adressen nicht aktiv genutzt werden
 
*statische Zuordnung:
::*IP-Adressen werden MAC-Adressen fest zugeordnet; wichtig bei Port-Weiterleitungen oder wenn DHCP-Client Server-Dienste zur Verfügung stellt
::*kein „einfaches“ Einbinden von neuen Clients
 
==Ablauf==
 
 
 
 
[[Datei: DHCP.png|1200px|thumb|DHCP Ablauf|center]]
 
#DHCP-DISCOVER: Client sucht per Broadcast nach DHCP-Server
#DHCP-OFFER: DHCP-Server bietet Client per Unicast Konfigurationsparameter der Schnittstelle an
#DHCP-REQUEST: Client fordert angebotene Konfigurationsparameter bei DHCP-Server an (z.B. Mietanfrage)
#DHCP-ACK: DHCP-Server sendet Konfigurationsparameter an Client
 
 
*DHCP-NAK: Ablehnung einer DHCPREQUEST-Anforderung durch den DHCP-Server.
*DHCP-DECLINE: Ablehnung durch den Client, da die IP-Adresse schon verwendet wird.
*DHCP-RELEASE: Der Client gibt die eigene Konfiguration frei, damit die Parameter wieder für andere Clients zur Verfügung stehen.
*DHCP-INFORM: Anfrage eines Clients nach weiteren Konfigurationsparametern, z. B. weil der Client eine statische IP-Adresse besitzt.
 
 
DHCP-Refresh (nur bei dynamischer Zuordnung)


DHCPACK-Nachricht
= Betriebsmodi =
IP-Adresse,"lease time" und zwei Fristen: Die "Renewal-Time" T1 und die "Rebinding-Time" T2.
*T1 1/2 von T2
*T2 7/8 der Lease-Time


Nach Ablauf T1 versucht der Client, seine Lease-Time zu verlängern.
== Manuelle Zuordnung ==


*DHCPREQUESTs per Unicast an bisherigen Server
*In diesem Modus (statisches DHCP) werden am DHCP-Server die IP-Adressen bestimmten MAC-Adressen fest zugeordnet
**Erfolgt DHCP-ACK: Client erhält bisherige Konfiguration mit frischer Lease-Time
*Die Adressen werden der MAC-Adresse auf unbestimmte Zeit zugeteilt
**Erfolgt kein DHCP-ACK: Client nutzt Konfiguration ohne Einschränkungen weiter
*Der Nachteil kann darin liegen, dass sich keine zusätzlichen Clients in das Netz einbinden können, da die Adressen fest vergeben sind


Nach Ablauf von T2 sendet Client DHCPREQUESTs per Broadcast an irgendeinen anderen DHCP-Server
== Automatische Zuordnung ==
*Am DHCP-Server wird ein Bereich (range) von IP-Adressen definiert
*IP-Adressen werden automatisch an die MAC-Adressen von neuen DHCP-Clients zugewiesen und keinem anderen Host mehr zugewiesen
*Neue Clients erhalten keine IP-Adresse, wenn Adressbereich vergeben ist


Läuft die Lease-Time ab so verfällt die Konfiguration und Client beginnt erneut mit eunem DHCP-DISCOVER.
== Dynamische Zuordnung ==
*Automatische Zuordnung aber mit Lease-Time: Festlegung wie lange eine IP-Adresse an Client „verliehen“ wird, bevor Client eine „Verlängerung“ beantragen muss
*Bei „Nicht-Verlängerung“ wird IP-Adresse frei und neu vergeben
*DHCP-Server vergibt auch von der MAC-Adresse abhängige IP-Adressen, d. h. ein Client bekommt hier selbst nach längerer Netzwerkabstinenz und Ablauf der Lease-Time die gleiche IP-Adresse wie zuvor (es sei denn natürlich, diese ist inzwischen schon anderweitig vergeben)


Sind alle IP-Adressen bereits vergeben, sendet Server ein DHCP-NAK (DHCP-Not Acknowledged).
= Installation =
 
# apt install isc-dhcp-server
Zum Beispiel:
 
Lease-Time = 100s => "Renewal-Time" T1 = 50s und "Rebinding-Time" T2 = 87,5s
 
==Einrichtung unter Linux/Debian am Beispiel "isc-dhcp-server"==
 
====Installation====
 
<pre>root@router0230:~# apt install isc-dhcp-server</pre>
 
====Konfiguration====


= Konfiguration =
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd.conf


*Lease-Time in Sekunden
== Lease-Time ==
 
in Sekunden
<pre>default-lease-time 600;
default-lease-time 600;
max-lease-time 7200;</pre>
max-lease-time 7200;
 
*Subnet-Blöcke
 
<pre>subnet 10.30.30.0 netmask 255.255.255.0</pre>
 
*Range
 
<pre>range 10.30.30.10 10.30.30.99;</pre>


*Options
== Range ==
range 10.2.0.10 10.2.0.100;


<pre>option subnet-mask 255.255.255.0;
== Options ==
      option domain-name-servers 10.0.0.3, 10.0.0.4;
option subnet-mask 255.255.0.0;
      option domain-name "raum102.itw";
option domain-name-servers 10.10.0.4;
      option domain-search "raum102.itw";
option domain-name "raum102.itw";
      option routers 10.30.30.1;
option domain-search "raum102.itw";
      option broadcast-address 10.30.30.255;</pre>
option routers 10.2.0.1;


== Subnet-Blöcke ==
subnet 10.2.0.0 netmask 255.255.0.0


= Dienssteuerung =
Nach der Änderung der Konfiguration, muss die dhcpd.conf erneut eingelesen werden.
Nach der Änderung der Konfiguration, muss die dhcpd.conf erneut eingelesen werden.


<pre>root@router0230:~# systemctl restart isc-dhcp-server.service</pre>
# systemctl restart isc-dhcp-server.service
 


= DHCP-Client =
Damit Änderungen bei bereits aktivem Client wirksam werden, muss dieser sie neu anfordern.
Damit Änderungen bei bereits aktivem Client wirksam werden, muss dieser sie neu anfordern.


== Konfiguration verwerfen ==
# dhclient -r


Bisherige Konfiguration verwerfen.
== Neue Konfiguration anfordern ==
<pre>root@router0230:~# dhclient -r</pre>
# dhclient


Neue Konfiguration anfordern.
=== DHCP release mit verbose ===
<pre>root@router0230:~# dhclient</pre>
'''# dhclient -v -r'''
[sudo] Passwort für user:     
Killed old client process
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/enp2s0/74:27:ea:e1:db:32
Sending on  LPF/enp2s0/74:27:ea:e1:db:32
Sending on  Socket/fallback
DHCPRELEASE of 10.20.1.110 on enp2s0 to 10.20.0.1 port 67 (xid=0x1f86c144)


====Fehlerauslesung====
=== Ausführliche Ausgabe von dhclient ===
'''# dhclient -v'''
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/enp2s0/74:27:ea:e1:db:32
Sending on  LPF/enp2s0/74:27:ea:e1:db:32
Sending on  Socket/fallback
DHCPDISCOVER on enp2s0 to 255.255.255.255 port 67 interval 3 (xid=0xac531335)
DHCPOFFER of 10.20.1.13 from 10.20.1.1
DHCPREQUEST for 10.20.1.13 on enp2s0 to 255.255.255.255 port 67 (xid=0x351353ac)
DHCPACK of 10.20.1.13 from 10.20.1.1 (xid=0xac531335)
cmp: EOF on /tmp/tmp.JBuNGXT4Zg which is empty
bound to 10.20.1.13 -- renewal in 5933 seconds.


/var/log/syslog
== Konfigurationsdatei ==
/etc/dhcp/dhclient.conf


<pre>root@router0230:~# cat /var/log/syslog | grep "dhcp"</pre>
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;


Erst Ordner /var/lib/dhcpd erzeugen.
= Fehleranalyse =
 
# cat /var/log/syslog | grep "dhcp"
<pre>root@router0230:~# touch /var/lib/dhcpd</pre>
 
Dann Datei dhcpd.leases.
 
<pre>root@router0230:~# touch /var/lib/dhcpd/dhcpd.leases</pre>
 
Danach wird diese Datei erst beschrieben und kann ausgelesen werden.
 
<pre>root@router0230:~# cat /var/lib/dhcpd/dhcpd.leases</pre>
 
 
 
Konfigurationsdatei auf Server


=Konfigurationsdatei=
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd.conf


<pre>dhcpd.conf
log-facility local7;
#
# Sample configuration file for ISC dhcpd
subnet 10.2.0.0 netmask 255.255.0.0 {
#
range 10.2.0.10 10.2.0.100;
 
option subnet-mask 255.255.0.0;
# option definitions common to all supported networks...
option domain-name-servers 10.10.0.4;
#option domain-name "example.org";
option domain-name "raum102.itw";
#option domain-name-servers ns1.example.org, ns2.example.org;
option domain-search "raum102.itw";
 
option routers 10.2.0.1;
#default-lease-time 600;
default-lease-time 600;
#max-lease-time 7200;
max-lease-time 7200;
 
}
# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
#ddns-update-style none;
 
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
 
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
   
   
#No service will be given on this subnet, but declaring it helps the
  host user {
# DHCP server to understand the network topology.
 
#subnet 10.152.187.0 netmask 255.255.255.0 {
#}
 
# This is a very basic subnet declaration.
 
#subnet 10.254.239.0 netmask 255.255.255.224 {
# range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}
 
# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.
 
#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}
 
# A slightly different configuration for an internal subnet.
subnet 10.30.30.0 netmask 255.255.255.0 {
      range 10.30.30.10 10.30.30.99;
      option subnet-mask 255.255.255.0;
      option domain-name-servers 10.0.0.3, 10.0.0.4;
      option domain-name "raum102.itw";
      option domain-search "raum102.itw";
      option routers 10.30.30.1;
      option broadcast-address 10.30.30.255;
      default-lease-time 600;
      max-lease-time 7200;
host user {
   hardware ethernet 00:1d:7d:c8:de:bd;
   hardware ethernet 00:1d:7d:c8:de:bd;
   fixed-address 10.30.30.5;
   fixed-address 10.2.0.50;
   option host-name "user";
   option host-name "user";
}
  }
host robert {
  hardware ethernet 74:27:ea:e1:b2:b4;
  fixed-address 10.30.30.6;
  option host-name "robert";
}
host meik {
  hardware ethernet 74:27:ea:cc:fe:a0;
  fixed-address 10.30.30.7;
  option host-name "meik";
}
host ufuk {
  hardware ethernet 74:27:ea:e1:ba:b1;
  fixed-address 10.30.30.8;
  option host-name "ufuk";
}
host tanja {
  hardware ethernet 74:27:ea:e1:b1:e4;
  fixed-address 10.30.30.9;
  option host-name "tanja";
}
}
# Hosts which require special configuration options can be listed in
# host statements.  If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.
#host passacaglia {
# hardware ethernet 0:0:c0:5d:bd:95;
#  filename "vmunix.passacaglia";
#  server-name "toccata.example.com";
#}


# Fixed IP addresses can also be specified for hosts.  These addresses
= DORA: (Discover Offer Request ACK) =
# should not also be listed as being available for dynamic assignment.
[[Datei:DORA Aufbau.png]]
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.  Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.example.com;
#}


# You can declare a class of clients and then do address allocation
# DHCP-DISCOVER: Client sucht per Broadcast nach DHCP-Server
# based on that.  The example below shows a case where all clients
# DHCP-OFFER: DHCP-Server bietet Client per Unicast Konfigurationsparameter der Schnittstelle an
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# DHCP-REQUEST: Client fordert angebotene Konfigurationsparameter bei DHCP-Server an (z.&nbsp;B.&nbsp;Mietanfrage)
# other clients get addresses on the 10.0.29/24 subnet.
# DHCP-ACK: DHCP-Server sendet Konfigurationsparameter an Client


#class "foo" {
#  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
#}


#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of "foo";
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of "foo";
#    range 10.0.29.10 10.0.29.230;
#  }
#}
</pre>


*DHCP-NAK: Ablehnung einer DHCP-REQUEST-Anforderung durch den DHCP-Server.
*DHCP-DECLINE: Ablehnung durch den Client, da die IP-Adresse schon verwendet wird.
*DHCP-RELEASE: Der Client gibt die eigene Konfiguration frei, damit die Parameter wieder für andere Clients zur Verfügung stehen.
*DHCP-INFORM: Anfrage eines Clients nach weiteren Konfigurationsparametern, z.&nbsp;B.&nbsp;weil der Client eine statische IP-Adresse besitzt.
*DHCP-Refresh (nur bei dynamischer Zuordnung) DHCP-ACK-Nachricht<br>


Konfigurationsdatei auf Client
= Lease Time =
 
IP-Adresse,"lease time" und zwei Fristen: Die "Renewal-Time" T1 und die "Rebinding-Time" T2.
/etc/dhcp/dhclient.conf
*T1 1/2 der Lease-Time
 
*T2 7/8 der Lease-Time
<pre># Configuration file for /sbin/dhclient.
== Beispiel ==
#
*Lease-Time = 100s => "Renewal-Time" T1 = 50s und "Rebinding-Time" T2 = 87,5s
# This is a sample configuration file for dhclient. See dhclient.conf's
*Nach Ablauf T1 versucht der Client, seine Lease-Time zu verlängern.
#      man page for more information about the syntax of this file
*DHCP-REQUESTs per Unicast an bisherigen Server
#      and a more comprehensive list of the parameters understood by
**Erfolgt DHCP-ACK: Client erhält bisherige Konfiguration mit frischer Lease-Time
#      dhclient.
**Erfolgt kein DHCP-ACK: Client nutzt Konfiguration ohne Einschränkungen weiter
#
*Nach Ablauf von T2 sendet Client DHCPREQUESTs per Broadcast an irgendeinen anderen DHCP-Server
# Normally, if the DHCP server provides reasonable information and does
*Läuft die Lease-Time ab so verfällt die Konfiguration und Client beginnt erneut mit eunem DHCP-DISCOVER.
#      not leave anything out (like the domain name, for example), then
*Sind alle IP-Adressen bereits vergeben, sendet Server ein DHCP-NAK (DHCP-Not Acknowledged).
#      few changes must be made to this file, if any.
#
 
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
 
send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, domain-search, host-name,
        dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
        netbios-name-servers, netbios-scope, interface-mtu,
        rfc3442-classless-static-routes, ntp-servers;


#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
= Ablaufverfolgung =
#send dhcp-lease-time 3600;
[[Datei:Wireshark Screenshot.png]]
#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;
#require subnet-mask, domain-name-servers;
#timeout 60;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
#script "/sbin/dhclient-script";
#media "-link0 -link1 -link2", "link0 link1";
#reject 192.33.137.209;


#alias {
= DHCP-Relay =
#  interface "eth0";
* Ist eine Funktion, um DHCP über Netzwerkgrenzen (Broadcastdomäne) hinaus nutzen zu können
#  fixed-address 192.5.5.213;
* Damit wird die Notwendigkeit der Bereitstellung eines DHCP-Servers in jedem Subnetz, in dem sich DHCP-Clients befinden, vermieden
#  option subnet-mask 255.255.255.255;
* Die DHCP-Relay-Funktion wird meist durch den Router selbst erbracht
#}
* DHCP-Relay ist notwendig, um die Broadcasts weiterzuleiten. Bitte auf alle interfaces Aktivieren.


#lease {
= Links =
#  interface "eth0";
== Quellen ==
# fixed-address 192.33.137.200;
# https://de.wikipedia.org/wiki/DHCP
# medium "link0 link1";
# https://kb.isc.org/docs/isc-dhcp-41-manual-pages-dhcpdconf
#  option host-name "andare.swiftmedia.com";
# https://wiki.ubuntuusers.de/ISC-DHCPD/
#  option subnet-mask 255.255.255.0;
# https://wiki.debian.org/de/DHCP_Server
#  option broadcast-address 192.33.137.255;
#  option routers 192.33.137.250;
#  option domain-name-servers 127.0.0.1;
# renew 2 2000/1/12 00:00:01;
#  rebind 2 2000/1/12 00:00:01;
# expire 2 2000/1/12 00:00:01;
#}</pre>


===Quellen===
== Weiterführend ==
=== DHCP Failover ===
# https://www.tech-island.com/tutorials/dhcp-failover-linux
# https://kb.isc.org/docs/aa-00502


[https://de.wikipedia.org/wiki/DHCP wikipedia.org]
[[Kategorie:IPv4]]
[https://kb.isc.org/docs/isc-dhcp-41-manual-pages-dhcpdconf isc.org]
[https://wiki.ubuntuusers.de/ISC-DHCPD/ ubuntuusers.de]
[https://wiki.debian.org/de/DHCP_Server wiki.debian.org]

Aktuelle Version vom 28. Mai 2023, 11:03 Uhr

Allgemein

  • DHCP (Dynamic Host Configuration Protocol)
  • Transport durch UDP
  • Standard-Ports:
    • IPv4:67 (Server) 68 (Client)
    • IPv6: 547 (Server) 546 (Client)

Aufgabe

  • Clients automatisch in ein bestehendes Netz einbinden
  • Übermittlung der Netzwerkeinstellungen:
    • IP-Adressen
    • Rechnername
    • Netzmaske
    • Broadcast-Adresse
    • Gateway
    • DNS-Nameserver
    • NetBIOS Nameserver
    • Boot-Image für plattenlose Workstations
    • Time- und NTP-Server, die für die Synchronisierung der Uhrzeit zuständig sind

Betriebsmodi

Manuelle Zuordnung

  • In diesem Modus (statisches DHCP) werden am DHCP-Server die IP-Adressen bestimmten MAC-Adressen fest zugeordnet
  • Die Adressen werden der MAC-Adresse auf unbestimmte Zeit zugeteilt
  • Der Nachteil kann darin liegen, dass sich keine zusätzlichen Clients in das Netz einbinden können, da die Adressen fest vergeben sind

Automatische Zuordnung

  • Am DHCP-Server wird ein Bereich (range) von IP-Adressen definiert
  • IP-Adressen werden automatisch an die MAC-Adressen von neuen DHCP-Clients zugewiesen und keinem anderen Host mehr zugewiesen
  • Neue Clients erhalten keine IP-Adresse, wenn Adressbereich vergeben ist

Dynamische Zuordnung

  • Automatische Zuordnung aber mit Lease-Time: Festlegung wie lange eine IP-Adresse an Client „verliehen“ wird, bevor Client eine „Verlängerung“ beantragen muss
  • Bei „Nicht-Verlängerung“ wird IP-Adresse frei und neu vergeben
  • DHCP-Server vergibt auch von der MAC-Adresse abhängige IP-Adressen, d. h. ein Client bekommt hier selbst nach längerer Netzwerkabstinenz und Ablauf der Lease-Time die gleiche IP-Adresse wie zuvor (es sei denn natürlich, diese ist inzwischen schon anderweitig vergeben)

Installation

# apt install isc-dhcp-server

Konfiguration

/etc/dhcp/dhcpd.conf

Lease-Time

in Sekunden

default-lease-time 600;
max-lease-time 7200;

Range

range 10.2.0.10 10.2.0.100;

Options

option subnet-mask 255.255.0.0;
option domain-name-servers 10.10.0.4;
option domain-name "raum102.itw";
option domain-search "raum102.itw";
option routers 10.2.0.1;

Subnet-Blöcke

subnet 10.2.0.0 netmask 255.255.0.0

Dienssteuerung

Nach der Änderung der Konfiguration, muss die dhcpd.conf erneut eingelesen werden.

# systemctl restart isc-dhcp-server.service

DHCP-Client

Damit Änderungen bei bereits aktivem Client wirksam werden, muss dieser sie neu anfordern.

Konfiguration verwerfen

# dhclient -r

Neue Konfiguration anfordern

# dhclient

DHCP release mit verbose

# dhclient -v -r
[sudo] Passwort für user:       
Killed old client process
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp2s0/74:27:ea:e1:db:32
Sending on   LPF/enp2s0/74:27:ea:e1:db:32
Sending on   Socket/fallback
DHCPRELEASE of 10.20.1.110 on enp2s0 to 10.20.0.1 port 67 (xid=0x1f86c144)

Ausführliche Ausgabe von dhclient

# dhclient -v
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/enp2s0/74:27:ea:e1:db:32
Sending on   LPF/enp2s0/74:27:ea:e1:db:32
Sending on   Socket/fallback
DHCPDISCOVER on enp2s0 to 255.255.255.255 port 67 interval 3 (xid=0xac531335)
DHCPOFFER of 10.20.1.13 from 10.20.1.1
DHCPREQUEST for 10.20.1.13 on enp2s0 to 255.255.255.255 port 67 (xid=0x351353ac)
DHCPACK of 10.20.1.13 from 10.20.1.1 (xid=0xac531335)
cmp: EOF on /tmp/tmp.JBuNGXT4Zg which is empty
bound to 10.20.1.13 -- renewal in 5933 seconds.

Konfigurationsdatei

/etc/dhcp/dhclient.conf

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

send host-name = gethostname();

request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;

Fehleranalyse

# cat /var/log/syslog | grep "dhcp"

Konfigurationsdatei

/etc/dhcp/dhcpd.conf

log-facility local7;

subnet 10.2.0.0 netmask 255.255.0.0 {
range 10.2.0.10 10.2.0.100;
option subnet-mask 255.255.0.0;
option domain-name-servers 10.10.0.4;
option domain-name "raum102.itw";
option domain-search "raum102.itw";
option routers 10.2.0.1;
default-lease-time 600;
max-lease-time 7200;
}

host user {
 hardware ethernet 00:1d:7d:c8:de:bd;
 fixed-address 10.2.0.50;
 option host-name "user";
}

DORA: (Discover Offer Request ACK)

  1. DHCP-DISCOVER: Client sucht per Broadcast nach DHCP-Server
  2. DHCP-OFFER: DHCP-Server bietet Client per Unicast Konfigurationsparameter der Schnittstelle an
  3. DHCP-REQUEST: Client fordert angebotene Konfigurationsparameter bei DHCP-Server an (z. B. Mietanfrage)
  4. DHCP-ACK: DHCP-Server sendet Konfigurationsparameter an Client


  • DHCP-NAK: Ablehnung einer DHCP-REQUEST-Anforderung durch den DHCP-Server.
  • DHCP-DECLINE: Ablehnung durch den Client, da die IP-Adresse schon verwendet wird.
  • DHCP-RELEASE: Der Client gibt die eigene Konfiguration frei, damit die Parameter wieder für andere Clients zur Verfügung stehen.
  • DHCP-INFORM: Anfrage eines Clients nach weiteren Konfigurationsparametern, z. B. weil der Client eine statische IP-Adresse besitzt.
  • DHCP-Refresh (nur bei dynamischer Zuordnung) DHCP-ACK-Nachricht

Lease Time

IP-Adresse,"lease time" und zwei Fristen: Die "Renewal-Time" T1 und die "Rebinding-Time" T2.

  • T1 1/2 der Lease-Time
  • T2 7/8 der Lease-Time

Beispiel

  • Lease-Time = 100s => "Renewal-Time" T1 = 50s und "Rebinding-Time" T2 = 87,5s
  • Nach Ablauf T1 versucht der Client, seine Lease-Time zu verlängern.
  • DHCP-REQUESTs per Unicast an bisherigen Server
    • Erfolgt DHCP-ACK: Client erhält bisherige Konfiguration mit frischer Lease-Time
    • Erfolgt kein DHCP-ACK: Client nutzt Konfiguration ohne Einschränkungen weiter
  • Nach Ablauf von T2 sendet Client DHCPREQUESTs per Broadcast an irgendeinen anderen DHCP-Server
  • Läuft die Lease-Time ab so verfällt die Konfiguration und Client beginnt erneut mit eunem DHCP-DISCOVER.
  • Sind alle IP-Adressen bereits vergeben, sendet Server ein DHCP-NAK (DHCP-Not Acknowledged).

Ablaufverfolgung

DHCP-Relay

  • Ist eine Funktion, um DHCP über Netzwerkgrenzen (Broadcastdomäne) hinaus nutzen zu können
  • Damit wird die Notwendigkeit der Bereitstellung eines DHCP-Servers in jedem Subnetz, in dem sich DHCP-Clients befinden, vermieden
  • Die DHCP-Relay-Funktion wird meist durch den Router selbst erbracht
  • DHCP-Relay ist notwendig, um die Broadcasts weiterzuleiten. Bitte auf alle interfaces Aktivieren.

Links

Quellen

  1. https://de.wikipedia.org/wiki/DHCP
  2. https://kb.isc.org/docs/isc-dhcp-41-manual-pages-dhcpdconf
  3. https://wiki.ubuntuusers.de/ISC-DHCPD/
  4. https://wiki.debian.org/de/DHCP_Server

Weiterführend

DHCP Failover

  1. https://www.tech-island.com/tutorials/dhcp-failover-linux
  2. https://kb.isc.org/docs/aa-00502