Einführung

DHCP steht für Dynamic Host Configuration Protocol. Mit einem DHCP-Server kann man Clients in einem Netzwerk automatisch eine IP-Konfiguration zuweisen. Somit muss man bei den Clients nicht manuell eine IP-Konfiguration vornehmen. Meistens wird über den DHCP-Server die IP-Adresse des Clients, die Subnetzmaske vom Netzwerk, der Default-Gateway und der zu verwendende DNS-Server verteilt.

Installation

Unter Debian heisst das Paket vom DHCP-Server isc-dhcp-server (früher dhcp3-server). Installiert wird es folgendermassen:

$ s u d o a p t i t u d e i n s t a l l i s c - d h c p - s e r v e r

Nach der Installation ist der DHCP-Server noch nicht aktiv. Dieser muss zuerst konfiguriert werden.

Konfiguration

Das Konfigurationsfile vom DHCP-Server befindet sich nach der Installation im Verzeichnis /etc/dhcp und heisst dhcpd.conf.

Meine Konfiguration vom DHCP-Server ist relativ simpel und sieht folgendermassen aus:

########################################################################
#
# /etc/dhcp/dhcpd.conf
# Konfigurationsfile vom DHCP-Server (isc-dhcp-server)
#
# 2011-08-28; Emanuel Duss; Erste Version
#
########################################################################

########################################################################
# DHCP-Server
########################################################################
# Authoritative = Aktiv (Sendet DHCPNAK)
authoritative;
# Logging
log-facility local7;
# Lease-Time (86400 = 1 Tag)
default-lease-time 86400;
max-lease-time 86400;

########################################################################
# Globale Optionen
########################################################################
# Domain
option domain-name "duss.xy";
# DNS-Server
option domain-name-servers 10.0.0.20;
# NTP-Server
option ntp-servers 10.0.0.20;

########################################################################
# Subnetz
########################################################################
# Subnetz 10.0.0.0/24
subnet 10.0.0.0 netmask 255.255.255.0 {
  # Range
  range 10.0.0.100 10.0.0.200;
  # Default-Gateway
  option routers 10.0.0.1;
}

########################################################################
# Hosts
########################################################################
# Statische Adressen
host eris {
  hardware ethernet 58:94:6B:E9:FD:78;
  fixed-address 10.0.0.23;
}
# EOF

Authoritative bedeutet, dass der DHCP-Server Clients im Netzwerk konfigurieren darf. Die Konfiguration ist ein Tag lang gültig. Dann muss der Client erneut eine Konfiguration anfordern. Meldungen schreibt der Daemon ins syslog ( /var/log/messages). Die Clients bekommen die Domain duss.xy. Als DNS-Server wird 10.0.0.20 an die Clients verteilt. Aus dem Netz 10.0.0.0/24 können IP-Adressen aus dem Bereich 10.0.0.100 bis 10.0.0.200 verteilt werden. Um in andere Netze zu gelangen, wird der Default-Gateway 10.0.0.1 verteilt. Der Host eris mit der angegebenen MAC-Adresse bekommt immer dieselbe IP-Adresse 10.0.0.23 zugewiesen.

Kontrolle auf dem Server

Folgende Meldungen schreib der Syslog-Daemon ins File /var/log/messages:

$ A A A A u u u u s g g g g u d 3 3 3 3 o 0 0 0 0 t 2 2 2 2 a 3 3 3 3 i : : : : l 4 4 4 4 9 9 9 9 - : : : : f 3 3 3 3 1 2 2 2 v d d d d a e e e e r b b b b / i i i i l a a a a o n n n n g / d d d d m h h h h e c c c c s p p p p s d d d d a : : : : g e D D D D s H H H H C C C C | P P P P D O R A g I F E C r S F Q K e C E U p O R E o V S n d E o T h R n 1 c f 0 p f 1 o . d r 0 r 0 o . . m 0 1 0 . 0 . 0 0 . 1 0 . 0 0 : 1 . 8 1 0 0 5 8 . t : 1 o a t 0 f o 8 0 : 0 d 0 ( : d 0 1 1 : : 0 5 4 1 . : f 5 0 a : : . f a a 0 : b f . d : 2 d v d 0 : i d ) 4 a : f 4 f : e f r a t : o b h a m 0 b ( 0 c ( 0 h c : a h 1 o a 5 s o : ) s a ) f v : i v d a i d a : e 4 t e f h t : 0 h a 0 b ( c h a o s ) v i a e t h 0

Daran sieht man, dass die vier DHCP-Message-Types DHCPDISCOVER, DHCPOFFER, DHCPREQUEST und DHCPACK verschickt wurden.

Die selben vier Nachrichten sieht man auch mit dem Netzwerk-Sniffer tcpdump:

$ t l 2 2 2 2 c i 3 3 3 3 s p s : : : : u d t 4 4 4 4 d u e 9 9 9 9 o m n : : : : p i 3 3 3 3 t : n 1 2 2 2 c g . . . . p v 9 0 0 0 d e o 2 0 1 3 u r n 1 0 0 8 m b 8 1 1 3 p o e 4 4 2 9 s t 5 3 3 8 - e h n 0 I I I I o , P P P P p u o t l 0 1 0 1 r p i . 0 . 0 t u n 0 . 0 . t k . 0 . 0 6 - 0 . 0 . 7 s t . 0 . 0 u y 0 . 0 . - p p . 2 . 2 i p e 6 0 6 0 r 8 . 8 . e e E 6 6 t s N > 7 > 7 h s 1 0 e 0 2 > 2 > d M 5 5 , B 5 1 5 1 . 0 . 0 u ( 2 . 2 . s E 5 0 5 0 e t 5 . 5 . h . 0 . 0 e 2 . 2 . r 5 1 5 1 n 5 0 5 0 o e . 8 . 8 r t 2 . 2 . ) 5 6 5 6 , 5 8 5 8 . : . : c 6 6 a 7 B 7 B f p : O : O o t O O r u B T B T r O P O P f e O / O / u T D T D l s P H P H l i / C / C z D P D P p e H , H , r C C o 6 P R P R t 5 , e , e o 5 p p c 3 R l R l o 5 e y e y l q , q , b u u d y e l e l e t s e s e c e t n t n o s g g d f t f t e r h r h o o m 3 m 3 0 0 0 0 0 0 0 0 : : 1 1 5 5 : : a a f f : : d d d d : : 4 4 f f : : a a b b , , l l e e n n g g t t h h 3 3 2 3 3 5

Was jedoch wirklich im DHCP-Protokoll steckt, zeigt das Tool dhcpdump. Dieses stellt die DHCP-Nachrichten schön leserlich dar.

$ C Y S G C O O O O O C Y S G C O O O O O O O O O C Y S G C O O O O O O O C Y S G C O O O O O O O O O H F I I I I H S F P P P P P H F I I I I H S F P P P P P P P P P H F I I I I H S F P P P P P P P H F I I I I H S F P P P P P P P P P s T T H H S L A A A A A N N T T T T T T T H H S L A A A A A N N T T T T T T T T T T T H H S L A A A A A N N T T T T T T T T T H H S L A A A A A N N T T T T T T T T T u I Y L O X E A D D D D D A A I I I I I I Y L O X E A D D D D D A A I I I I I I I I I I Y L O X E A D D D D D A A I I I I I I I I Y L O X E A D D D D D A A I I I I I I I I I d M I O P E P I C G D D D D D M M O O O O O M I O P E P I C G D D D D D M M O O O O O O O O O M I O P E P I C G D D D D D M M O O O O O O O M I O P E P I C G D D D D D M M O O O O O O O O O o E P P E N S D S S R R R R R E E N N N N N E P P E N S D S S R R R R R E E N N N N N N N N N E P P E N S D S S R R R R R E E N N N N N N N E P P E N S D S S R R R R R E E N N N N N N N N N : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : d h 2 0 1 1 6 0 3 0 0 0 0 0 0 0 . . 2 1 2 1 6 0 3 0 0 0 1 0 0 0 . . 2 0 1 1 6 0 3 0 0 0 0 0 0 0 . . 2 1 2 1 6 0 3 0 0 0 1 0 0 0 . . c 0 . 9 . . . . 0 5 5 6 1 5 1 1 0 0 9 . 0 . . 0 5 5 5 1 5 5 0 . 9 . . . . 0 5 5 5 5 6 1 5 1 1 0 0 9 . 0 . . 0 5 5 5 1 5 5 p 1 0 ( ( a 0 0 0 0 : 3 7 0 2 5 2 3 1 1 2 2 4 5 5 5 5 1 1 . ( ( a 0 . 0 0 : 3 4 1 1 3 6 5 8 9 1 0 ( ( a 0 0 0 0 : 3 0 4 7 0 2 5 2 3 1 1 2 2 4 5 5 5 5 1 1 . ( ( a 0 . 0 0 : 3 4 1 1 3 6 5 8 9 d 1 . B E b . . . . 1 1 3 3 6 2 5 6 8 2 1 4 8 9 9 1 0 B E b . 0 . . 1 1 . B E b . . . . 1 1 3 3 6 2 5 6 8 2 1 4 8 9 9 1 0 B E b . 0 . . 1 u - 0 O t 2 0 0 0 0 5 ( ( ( ( ( - . O t 2 0 . 0 0 5 ( ( ( ( ( ( ( ( ( - 0 O t 2 0 0 0 0 5 ( ( ( ( ( ( ( - . O t 2 0 . 0 0 5 ( ( ( ( ( ( ( ( ( m 0 . O h 2 . . . . : ( ( ( ( ( ( ( ( ( ( ( ( ( ( 0 0 O h 2 . 0 . . : 0 . O h 2 . . . . : ( ( ( ( ( ( ( ( ( ( ( ( ( ( 0 0 O h 2 . 0 . . : p 8 0 T e 1 0 0 0 0 a 4 1 C S R D H D I B N I S T T D 8 . T e 1 0 . 0 0 a 8 0 T e 1 0 0 0 0 a 4 1 C S R D H D I B N I S T T D 8 . T e 1 0 . 0 0 a - P r 8 f 1 2 9 5 5 l t o N o o n r T P e 1 2 o - 2 P r 8 1 f 1 4 4 4 4 4 7 4 4 - P r 8 f 1 4 4 2 9 5 5 l t o N o o n r T P e 1 2 o - 2 P r 8 1 f 1 4 4 4 4 4 7 4 4 3 ( R n : ) ) ) ) ) a a u S s m t o P r ) ) m 3 0 R n 0 : ) ) ) ) ) ) ) ) ) 3 ( R n : ) ) ) ) ) ) ) a a u S s m t o P r ) ) m 3 0 R n 0 : ) ) ) ) ) ) ) ) ) - 0 0 E e d s t t t a e a a v a 0 E e 8 d 0 0 E e d s t t t a e a a v a 0 E e 8 d i : Q t d D M V H P s i e s i r d s d e i ( P t d D S I S R D D T T : Q t d D R S M V H P s i e s i r d s d e i ( P t d D S I S R D D T T 2 1 U ) : H a e o a l c r e n n f c e d r n 2 0 L ) : H e P u o N o 1 2 2 1 U ) : H e e a e o a l c r e n n f c e d r n 2 0 L ) : H e P u o N o 1 2 e 3 5 E 4 C x n s r e s r a n a a r r 3 : Y 4 C r b u S m 3 5 E 4 C q r x n s r e s r a n a a r r 3 : Y 4 C r b u S m t : : S f P i d t a s r ) v m a c s v e i S : 1 ) f P v a n t a : : S f P u v i d t a s r ) v m a c s v e i S : 1 ) f P v a n t a h 4 a T : m o m s o e e m e t e s d e 4 e : e d e e s i 4 a T : e e m o m s o e e m e t e s d e 4 e : e d e e s i 0 9 f ) a m u r n e u r ) e r s e a 9 : a m r d t r e n 9 f ) a m s r u r n e u r ) e r s e a 9 : a m r d t r e n : : b e m a t S t ) ) M a s n r : b b e r s r n : : b e t m a t S t ) ) M a s n r : b b e r s r n 3 d : s c m e t e T d ) l t c 3 : : s i e m v a 3 d : s i c m e t e T d ) l t c 3 : : s i e m v a 1 d 0 s D l e r a ) U d e i h 2 2 0 s d s a e m 2 d 0 s I d D l e r a ) U d e i h 2 2 0 s d s a e m . : 0 a H a t ) r a f ) . 7 0 a e s s r e . : 0 a P e H a t ) r a f ) . 7 0 a e s s r e 9 4 : g C s R i e s i 0 : : g n k 0 4 : g n C s R i e s i 0 : : g n k 2 f 0 e P s e c s e e 0 a 0 e t l 1 f 0 e a t P s e c s e e 3 a 0 e t l 2 : 0 q s t r 0 2 0 i e 0 : 0 d i q s t r 8 2 0 i e a : t m i u R ) i ) : : t f a a : t d f m i u R ) i ) : : t f a b 0 y e d e o m 9 0 y i s b 0 y r i e d e o m 9 0 y i s ) 0 p s e s u e 4 0 p e e ) 0 p e e s e s u e 4 0 p e e : e s n t t ) ) : e r t : e s r s n t t ) ) : e r t > 0 a t e 0 i > 0 s a t e 0 i 0 g i L ) > 0 m 0 g i L ) > 0 m 2 : e f i : e 2 : e f i : e 5 0 i s 1 0 5 0 i s 1 0 5 0 s e t 0 0 5 0 s e t 0 0 . : i r . : . : i r . : 2 0 z 0 0 2 0 z 0 0 5 0 e . 0 5 0 e . 0 5 : 0 : 5 : 0 : . 0 1 1 d c . 0 2 1 8 2 1 1 d 4 7 . 0 3 1 1 1 d c . 0 5 1 8 2 1 1 d 4 7 2 0 5 h h 1 0 0 6 5 0 0 u 3 5 2 0 0 0 5 h h 1 0 0 6 5 0 0 u 3 5 5 : ( 0 c a 1 0 : ( . 4 5 . . s 2 6 5 : ( . . 0 c a 1 0 : ( . 4 5 . . s 2 6 5 0 D 0 p o 8 0 D 0 0 . 0 0 s 0 0 5 0 D 0 0 0 p o 8 0 D 0 0 . 0 0 s 0 0 . 0 H c s ( 0 H . 0 2 . . . 0 0 . 0 H . . c s ( 0 H . 0 2 . . . 0 0 2 : C d S ( : C 0 5 0 0 x 2 : C 0 0 d S ( : C 0 5 0 0 x 5 0 P - u 0 0 P . ( 5 . . y ( ( 5 0 P . . - u 0 0 P . ( 5 . . y ( ( 5 0 D 5 b : 0 O 2 2 . 1 2 1 2 5 0 R 1 2 5 b : 0 A 2 2 . 1 2 1 2 : I . n 1 : F 0 4 2 0 2 1 : E 0 0 . n 1 : C 0 4 2 0 2 1 ( 0 S 2 e 5 0 F h 5 h h ( 0 Q 8 2 e 5 0 K h 5 h h f 0 C . t : 0 E ) 5 ) ) f 0 U . t : 0 ) ) 5 ) ) f O 1 a R . f E 1 a . : V 2 m f ) 0 : S 2 m f 0 f E : a : f T : a : f R L s d f ) L s d : ) i k d : i k d f n ) : f n ) : f u 4 f u 4 : x f : x f f - : f - : f 2 a f 2 a : . b : . b f 6 ) f 6 ) f . f . : 3 : 3 f 9 f 9 f - f - ) A ) A R R C C H H : : i i 6 6 8 8 6 6 : : G G e e n n u u i i n n e e I I n n t t e e l l

Die DHCP-Message-Types bedeuten folgendes:

  • DHCPDISCOVER: Der Client sendet per Broadcast eine Anfrage ins Netzwerk und fragt nach einer IP-Konfiguration. Dabei sagt er dem Server, wie er heisst und welche Parameter er annehmen kann. Unter der Parameter-Liste ist z. B. die Subnetzmaske, der DNS-Server, der Default-Gateway oder die Domain zu finden.
  • DHCPOFFER: Der Server antwortet mit einem Konfigurations-Angebot.
  • DHCPREQUEST: Falls das Angebot dem Client passt, fordert er die gewünschten Parameter an.
  • DHCPACK: Falls alles funktioniert hat, bestätigt der DHCP-Server die Konfiguration.

Kontrolle auf dem Client

Der Client hat die IP-Adresse 10.0.0.108 mit der Subnetzmaske 255.255.255.0 zugewiesen bekommen. Das sehen wir mit ifconfig -a wlan0:

$ w l i a f n c 0 o n f i g L i i U R T c R - i n n P X X o X a n e e l k t t B p p l b w 6 R a a i y l e a O c c s t a n d a A k k i e n c d d D e e o s 0 a r d C t t n : p : r A s s s 1 : 1 : S : : : 6 E 0 T 1 1 0 9 t . f 6 2 2 h 0 e R 2 1 t 9 e . 8 U x r 0 0 N e e q ( n . : N r r u 1 e 1 : I r r e 6 t 0 2 N o o u . 8 1 G r r e 5 5 s s l H : M : : e K W B a U 0 0 n b a c f L : ) d a f T d d 1 d s f I r r 0 r t : C o o 0 T : f A p p 0 X 0 1 e S p p 0 0 d T e e b : . d d d y 1 0 : : : t 5 . 4 M 0 0 e : 0 f T s A . a U : F 2 b : v v 1 : 5 / 1 e e 9 D 5 6 5 r r 6 D 4 0 r r 0 : 0 u u 7 4 M S n n F a c s s ( : s o M : : 1 A k p e 0 0 9 B : e t . 2 : r f c 1 5 L i r a 5 i c a r K . n : m r b 2 k 1 e i ) 5 : e 5 0 r . : 2 0 5 5 . 0

In der Routing-Tabelle sieht man den Default-Gateway 10.0.0.1. Der Default-Gateway erkennt man immer an der Destination 0.0.0.0.

$ K D 0 1 e e . 0 n r s 0 . e n t . 0 t e i 0 . s l n . 0 t a 0 . a I t 0 t P i o - r n r o n u t i n g G 1 0 a 0 . t t . 0 a e 0 . b w . 0 l a 0 . e y . 0 1 G 0 2 e . 5 n 0 5 m . . a 0 2 s . 5 k 0 5 . 2 5 5 . 0 F U U l G a g s M S S 0 0 W 0 0 i n d o w i r t t 0 0 I w w f l l a a a c n n e 0 0

In der Datei /etc/resolv.conf sieht man die Domain ( duss.xy) und der DNS-Server ( 10.0.0.10):

$ # # d n # o a c G n m m / a e a a e e t n m i s t e e n e c / r s r / e a e d r t t r u e e c e v s r s / d e s o r r . 1 l e b x 0 v s y 8 y . . o . 0 c l d 8 . o v h . 0 n . c 8 . f c p . 1 . o c 8 0 t n d a f i f l r o c m a n w l r a e n p 0 l a c e t h i s l i n e

Es lohnt sich auch die Konfiguration vom DHCP-Client anzuschauen! Wird der DHCP-Client dhclient verwendet, befindet sich die Konfiguration unter /etc/dhcp/dhclient.conf (Debian) bzw. unter /etc/dhclient.conf (Arch Linux).