DHCP

Aus wiki.archlinux.de

Per DHCP (Dynamic Host Configuration Protocol) ist es möglich, IP-Adressen mit Hilfe eines Servers dynamisch zuzuweisen. Zusätzlich zu den IP-Adressen können dem Client auch noch weitere Netzinformationen wie Nameserver, Gateway, etc. zugewiesen werden.

DHCP wurde entwickelt, um große Netze mit häufig wechselnder Topologie (Beispielsweise ein Rechner/Netzwerk-Pool an einer Universität, wo häufig verschiedene Rechner in Betrieb sind) zu verwalten. Zudem wird im privaten Umfeld meist DHCP benutzt, wenn man nur einen Computer hat, um ins Internet gehen zu können – Im Modem/Router befindet sich dann auch meist ein DHCP-Server.

Konfiguration

Um unter Arch DHCP zu benutzen, reicht es, den entsprechenden Service für das entsprechende Netzwerk-Interface zu aktivieren und zu starten.

systemctl enable dhcpcd@eth0
systemctl start dhcpcd@eth0

Wobei hier eth0 als Beispiel dient. Mit dem ersten Befehl wird der dhcpd-Service für den automatischen Start markiert, und der zweite Befehl startet diesen Service, ohne, dass man einen System-Neustart ausführen muss.

Verwendung

Beim nächsten Start wird das Interface nun also mittels DHCP konfiguriert. Man kann das Interface aber auch manuell konfigurieren.

dhcpcd eth0
eth0: dhcpcd 4.0.4 starting
eth0: broadcasting for a lease
eth0: offered 192.168.6.64 from 192.168.6.249
eth0: checking 192.168.6.64 is available on attached networks
eth0: acknowledged 192.168.6.64 from 192.168.6.249
eth0: leased 192.168.6.64 for 691200 seconds

In diesem Fall wurde ein DHCP-Server mit der IP 192.168.6.249 gefunden. Der DHCP-Server hat dem Client die IP 192.168.6.64 angeboten. Der Client prüft daraufhin, ob diese IP in dem Netzwerk überhaupt verfügbar ist, und akzeptiert die IP dann. Zudem wird die Information ausgegeben, dass die IP nun für 691200 Sekunden (= 8 Tage) zugewiesen wurde. Dies ist eine Einstellung auf dem DHCP-Server.

ip a show zeigt neben generellen Informationen zum Interface auch an, was per DHCP sonst noch kam. So sind dort neben der IP natürlich auch die Broadcast-Adresse und die Netzmaske zu sehen, die resolv.conf gibt zudem Aufschluss über die verwendeten Nameserver.

ip a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:21:9b:13:c4:13 brd ff:ff:ff:ff:ff:ff
    inet 192.168.6.64/24 brd 192.168.6.255 scope global eth0
    inet6 fe80::221:9bff:fe13:c413/64 scope link 
       valid_lft forever preferred_lft forever
cat /etc/resolv.conf
# Generated by dhcpcd from eth0
# /etc/resolv.conf.head can replace this line
search domain.lokal
nameserver 192.168.6.254
# /etc/resolv.conf.tail can replace this line

Natürlich sind alle Angaben hier nur exemplarisch, und hängen vom DHCP-Server ab, von dem man ein DHCP-Angebot auf seine Anfrage bekommt.

DNS-Server festlegen

Der DNS-Server wird in der resolv.conf festgelegt. Diese Datei wird beim Ausführen von dhcpcd überschrieben. Will man einen anderen, als den von dhcpcd automatisch ermittelten, DNS Server verwenden, muss man verhindern, dass die resolv.conf überschrieben wird. Dazu muss man dhcpcd mit der Option -C resolv.conf aufrufen.

dhcpcd -C resolv.conf eth0

Damit dies auch beim automatischen Start funktioniert, muss die entsprechende Option in die /etc/conf.d/dhcpcd eingetragen werden.

DHCPCD_ARGS="-C resolv.conf"

Alternativ kann man den gewünschten DNS-Server auch in /etc/resolv.conf.head eintragen. Der Inhalt dieser Datei wird beim Ausführen von dhcpcd am Anfang der resolv.conf eingefügt.

DHCP-Server aufsetzen

Selbst einen DHCP-Server aufsetzen zu wollen, kann verschiedene Gründe haben. Hauptsächlich wird man das vermutlich wollen, weil man mehrere Rechner hat, und diese nicht manuell konfigurieren will. Man benötigt zum Aufsetzen eines DHCP-Servers natürlich einen Computer, auf dem dieser Server laufen soll, zudem benötigt man ein Serverprogramm.

Im „extra“-Repository befinden sich mehrere Programme, mittels derer man einen DHCP-Server aufsetzen kann.

  • dhcp ist das eigentliche Serverprogramm
  • dnsmasq ist ein kombinierter DNS/DHCP-Server
  • bind ist ein umfangreiches DNS-Serverprogramm
  • dhclient ist ein Standalone-Programm für DHCP-Anfragen
  • dhcpcd ist der „client daemon“ für DHCP

Es gibt im Netz unzählige Anleitungen, um einen DHCP-Server aufzusetzen und zu konfigurieren. Da dies trotz vieler anders lautender Behauptungen nicht ganz trivial ist, und eine Fehlkonfiguration zudem sogar ein Sicherheitsrisiko darstellen kann, sei hier noch mal darauf verwiesen, dass man nur einen DHCP-Server selbst einrichten sollte, wenn man es wirklich benötigt, und bereits Erfahrung im Umgang mit Linux und Wissen im Bereich der Netzwerkadministration hat. Für den durchschnittlichen Heimanwender reichen die DNS-Lösungen, die mit den meisten Modems/Routern kommen, völlig aus.

Siehe auch

  • dhcpd – Aufsetzen eines DHCP-Servers

Weblinks