IPv4/DHCP/Server: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
= <big> Allgemein </big> =
= Allgemein =
*DHCP (Dynamic Host Configuration Protocol)
*DHCP (Dynamic Host Configuration Protocol)
*Transport durch UDP
*Transport durch UDP
Zeile 6: Zeile 6:
**IPv6: 547 (Server) 546 (Client)
**IPv6: 547 (Server) 546 (Client)


= <big> Aufgabe </big> =
= Aufgabe =
 
*Clients automatisch in ein bestehendes Netz einbinden
*Clients automatisch in ein bestehendes Netz einbinden
*Übermittlung der Netzwerkeinstellungen:
*Übermittlung der Netzwerkeinstellungen:
Zeile 20: Zeile 19:
**Time- und NTP-Server, die für die Synchronisierung der Uhrzeit zuständig sind
**Time- und NTP-Server, die für die Synchronisierung der Uhrzeit zuständig sind


= <big>Betriebsmodi</big> =
= Betriebsmodi =


<big> '''Manuelle Zuordnung''' </big>
== Manuelle Zuordnung ==


*In diesem Modus (statisches DHCP) werden am DHCP-Server die IP-Adressen bestimmten MAC-Adressen fest zugeordnet
*In diesem Modus (statisches DHCP) werden am DHCP-Server die IP-Adressen bestimmten MAC-Adressen fest zugeordnet
Zeile 28: Zeile 27:
*Der Nachteil kann darin liegen, dass sich keine zusätzlichen Clients in das Netz einbinden können, da die Adressen fest vergeben sind
*Der Nachteil kann darin liegen, dass sich keine zusätzlichen Clients in das Netz einbinden können, da die Adressen fest vergeben sind


<big> '''Automatische Zuordnung''' </big>
== Automatische Zuordnung ==
*Am DHCP-Server wird ein Bereich (range) von IP-Adressen definiert
*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
*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
*Neue Clients erhalten keine IP-Adresse, wenn Adressbereich vergeben ist


<big> '''Dynamische Zuordnung''' </big>
== 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
*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
*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)
*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)


= <big>Installation</big> =
= Installation =
<pre>root@router:~# apt install isc-dhcp-server</pre>
root@router:~# apt install isc-dhcp-server
 
= <big>Konfiguration</big> =


= Konfiguration =
'''Datei:'''<code>/etc/dhcp/dhcpd.conf</code>
'''Datei:'''<code>/etc/dhcp/dhcpd.conf</code>
*<big>'''Lease-Time in Sekunden'''</big>
*'''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


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


*<big> '''Range''' </big>
=== Range ===
 
  range 10.2.0.10 10.2.0.100;
  range 10.2.0.10 10.2.0.100;
*<big> '''Options''' </big>


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


*<big> '''Nach der Änderung der Konfiguration, muss die dhcpd.conf erneut eingelesen werden.''' </big>
Nach der Änderung der Konfiguration, muss die dhcpd.conf erneut eingelesen werden.


  root@router:~# systemctl restart isc-dhcp-server.service
  root@router:~# systemctl restart isc-dhcp-server.service


*<big> '''Damit Änderungen bei bereits aktivem Client wirksam werden, muss dieser sie neu anfordern.''' </big>
Damit Änderungen bei bereits aktivem Client wirksam werden, muss dieser sie neu anfordern.


*<big> '''Bisherige Konfiguration verwerfen.''' </big>
# Bisherige Konfiguration verwerfen.
  root@router:~# dhclient -r
  root@router:~# dhclient -r
*<big> '''Neue Konfiguration anfordern.''' </big>


# Neue Konfiguration anfordern.
  root@router:~# dhclient
  root@router:~# dhclient


= <big>Fehler Aufheben</big> =
= Fehleranalyse =
 
  # cat /var/log/syslog | grep "dhcp"
'''Datei:'''<code>/var/log/syslog</code>
 
  root@router:~# cat /var/log/syslog | grep "dhcp"
 
==<big>Konfigurationsdatei auf Server</big>==


=Konfigurationsdatei=
'''Datei:'''<code>/etc/dhcp/dhcpd.conf</code>
'''Datei:'''<code>/etc/dhcp/dhcpd.conf</code>
  dhcpd.conf
  dhcpd.conf
Zeile 99: Zeile 90:


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


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


= <big>Konfigurationsdatei auf Client</big> =
= Konfigurationsdatei auf Client =


'''Datei:'''<code>/etc/dhcp/dhclient.conf</code>
'''Datei:'''<code>/etc/dhcp/dhclient.conf</code>
Zeile 122: Zeile 113:
  #
  #
  # This is a sample configuration file for dhclient. See dhclient.conf's  
  # This is a sample configuration file for dhclient. See dhclient.conf's  
  #       man page for more information about the syntax of this file  
  # man page for more information about the syntax of this file  
  #       and a more comprehensive list of the parameters understood by  
  # and a more comprehensive list of the parameters understood by  
  #       dhclient.
  # dhclient.
  #
  #
  # Normally, if the DHCP server provides reasonable information and does
  # Normally, if the DHCP server provides reasonable information and does
  #       not leave anything out (like the domain name, for example), then
  # not leave anything out (like the domain name, for example), then
  #       few changes must be made to this file, if any.
  # few changes must be made to this file, if any.
  #
  #


Zeile 135: Zeile 126:
  send host-name = gethostname();
  send host-name = gethostname();
  request subnet-mask, broadcast-address, time-offset, routers,
  request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, domain-search, host-name,
domain-name, domain-name-servers, domain-search, host-name,
        dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
        netbios-name-servers, netbios-scope, interface-mtu,
netbios-name-servers, netbios-scope, interface-mtu,
        rfc3442-classless-static-routes, ntp-servers;
rfc3442-classless-static-routes, ntp-servers;


= Verbindungsaufbau =
= Verbindungsaufbau =

Version vom 8. August 2020, 19:04 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

root@router:~# apt install isc-dhcp-server

Konfiguration

Datei:/etc/dhcp/dhcpd.conf

  • Lease-Time in Sekunden
default-lease-time 600;
max-lease-time 7200;

Subnet-Blöcke

subnet 10.2.0.0 netmask 255.255.0.0

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;

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

root@router:~# systemctl restart isc-dhcp-server.service

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

  1. Bisherige Konfiguration verwerfen.
root@router:~# dhclient -r
  1. Neue Konfiguration anfordern.
root@router:~# dhclient

Fehleranalyse

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

Konfigurationsdatei

Datei:/etc/dhcp/dhcpd.conf

dhcpd.conf
#
# 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;
# A slightly different configuration for an internal subnet.
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";
#}

Konfigurationsdatei auf Client

Datei:/etc/dhcp/dhclient.conf

# Configuration file for /sbin/dhclient.
#
# This is a sample configuration file for dhclient. See dhclient.conf's 
# man page for more information about the syntax of this file 
# and a more comprehensive list of the parameters understood by 
# dhclient.
#
# Normally, if the DHCP server provides reasonable information and does
# not leave anything out (like the domain name, for example), then
# 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;

Verbindungsaufbau

  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 Ablauf

  • 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

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

Zum 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.
  • DHCPREQUESTs 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).
  • Die genaue Verbindung in Wireshark:
Datei:Wireshark Screenshot

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 ein notwendig, um die Broadcasts weiterzuleiten

Quellen

wikipedia.org isc.org ubuntuusers.de wiki.debian.org