DHCP: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
SiD (Diskussion | Beiträge)
Boenki (Diskussion | Beiträge)
 
(14 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
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.
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 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.
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 ==
== Konfiguration ==
Um in Arch DHCP zu nutzen, muss man seine [[Rc.conf|rc.conf]]-Datei bearbeiten. Zuerst ermittelt man seine Netzwerk-Interfaces, dies geschieht entweder über „ifconfig -a“ oder „ls /sys/class/net/“.
Um unter Arch DHCP zu benutzen, reicht es, den entsprechenden Service für das entsprechende Netzwerk-Interface zu aktivieren und zu starten.


  user@host:~$ ls /sys/class/net/
  systemctl enable dhcpcd@eth0
  eth0 lo
  systemctl start dhcpcd@eth0


Am Beispiel ist zu sehen, dass zwei Interfaces verfügbar sind. Einmal „eth0“, und einmal „lo“. Letzteres sollte immer vorhanden sein, da es unter anderem auch für die systeminterne Kommunikation zwischen einigen Programmen verwendet wird. Um die Netzinformationen für das Interface „eth0“ zu beziehen, ändert also man den diesbezüglichen Eintrag in der „rc.conf“.
Wobei hier {{ic|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.
 
Im Abschnitt „NETWORKING“ in dieser Datei befindet sich vermutlich schon ein Eintrag für das Interface zusätzlich kann es auch sein, dass ein Gateway und eine Route definiert wurden. Dies könnte Beispielsweise so aussehen:
 
eth0="eth0 192.168.6.2 netmask 255.255.255.0 broadcast 192.168.6.255"
[…]
gateway="default gw 192.168.6.1"
ROUTES=(gateway)
 
Wenn man jetzt DHCP verwenden möchte, muss man diese Zeilen anpassen. Das Gateway muss deaktiviert werden, sofern es per DHCP zugewiesen wird, und zudem muss dem System mitgeteilt werden, dass man DHCP anstelle einer festen Konfiguration verwenden möchte
 
eth0="dhcp"
[…]
gateway="default gw 192.168.6.1"
ROUTES=(!gateway)
 
Die Änderung bei „eth0“ sorgt dafür, dass beim Initialisieren des Interfaces nun eine DHCP-Anfrage gesendet wird. Das Ausrufezeichen bei der ROUTES-Definition deaktiviert die Gateway-Definition, bzw. sorgt dafür, dass sie nicht aktiviert wird.


== Verwendung ==
== Verwendung ==
Beim nächsten Start wird das Interface nun also mittels DHCP konfiguriert. Man kann das Interface aber auch manuell neu starten. Dazu gibt es zwei Möglichkeiten. Einerseits kann man über „/etc/rc.d/network restart“ das Netzwerksystem neustarten, andererseits kann man auch einfach das Interface de- und wieder aktivieren.
Beim nächsten Start wird das Interface nun also mittels DHCP konfiguriert. Man kann das Interface aber auch manuell konfigurieren.
 
ifconfig eth0 down
ifconfig eth0 up
 
Es wird immer, wenn das Interface aktiviert wird, versucht, per DHCP eine IP zu erhalten. Wenn man sich manuell per DHCP eine IP holen möchte, führt man „dhcpcd“ aus.


root@host:~# dhcpcd eth0
{{hc|dhcpcd eth0|eth0: dhcpcd 4.0.4 starting
eth0: dhcpcd 4.0.4 starting
eth0: broadcasting for a lease
eth0: broadcasting for a lease
eth0: offered 192.168.6.64 from 192.168.6.249
eth0: offered 192.168.6.64 from 192.168.6.249
eth0: checking 192.168.6.64 is available on attached networks
eth0: checking 192.168.6.64 is available on attached networks
eth0: acknowledged 192.168.6.64 from 192.168.6.249
eth0: acknowledged 192.168.6.64 from 192.168.6.249
eth0: leased 192.168.6.64 for 691200 seconds}}
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.
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.


Ein „ifconfig eth0“ 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.
{{ic|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.


user@host:~$ ifconfig eth0
{{hc|ip a show eth0|2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
eth0  Link encap:Ethernet  HWaddr 00:1E:C9:52:79:B9 
    link/ether 00:21:9b:13:c4:13 brd ff:ff:ff:ff:ff:ff
      inet addr:192.168.6.64 Bcast:192.168.6.255 Mask:255.255.255.0
    inet 192.168.6.64/24 brd 192.168.6.255 scope global eth0
      inet6 addr: fe80::21e:c9ff:fe52:79b9/64 Scope:Link
    inet6 fe80::221:9bff:fe13:c413/64 scope link
       […]
       valid_lft forever preferred_lft forever}}
   
   
user@host:~$ cat /etc/resolv.conf  
{{hc|cat /etc/resolv.conf|# Generated by dhcpcd from eth0
# Generated by dhcpcd from eth0
# /etc/resolv.conf.head can replace this line
# /etc/resolv.conf.head can replace this line
search domain.lokal
search domain.lokal
nameserver 192.168.6.254
nameserver 192.168.6.254
# /etc/resolv.conf.tail can replace this line}}
# /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.
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 ==
== DNS-Server festlegen ==
Der DNS-Server wird in der [[resolv.conf | /etc/resolv.conf]] festgelegt. Diese Datei wird jedoch beim ausführen von ''dhcpcd'' überschrieben. Will man also 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 Oprion ''-C resolv.conf'' aufrufen. Beim manuellen starten würde das dann z.B. so aussehen.
Der DNS-Server wird in der [[resolv.conf]] festgelegt. Diese Datei wird beim Ausführen von {{ic|dhcpcd}} überschrieben. Will man einen anderen, als den von {{ic|dhcpcd}} automatisch ermittelten, DNS Server verwenden, muss man verhindern, dass die {{ic|resolv.conf}} überschrieben wird. Dazu muss man {{ic|dhcpcd}} mit der Option {{ic|-C resolv.conf}} aufrufen.
 
  dhcpcd -C resolv.conf eth0
  dhcpcd -C resolv.conf eth0
Damit der [[Daemons/Liste#network| Network-Daemon]] die Option verwendet, muss man sie in die ''/etc/conf.d/dhcpcd'' eintragen.
 
  DHCPCD_ARGS="-C resolv.conf -q"
Damit dies auch beim automatischen Start funktioniert, muss die entsprechende Option in die {{ic|/etc/conf.d/dhcpcd}} eingetragen werden.
Alternativ kann man den/die 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.
 
  DHCPCD_ARGS="-C resolv.conf"
 
Alternativ kann man den gewünschten DNS-Server auch in {{ic|/etc/resolv.conf.head}} eintragen. Der Inhalt dieser Datei wird beim Ausführen von {{ic|dhcpcd}} am Anfang der {{ic|resolv.conf}} eingefügt.


== DHCP-Server aufsetzen ==
== 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.
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 „[[Pacman#Repositorien_und_Spiegel-Server|extra]]“-Repository befinden sich mehrere Programme, mittels derer man einen DHCP-Server aufsetzen kann.
Im „[[Pacman#Repositorien_und_Spiegel-Server|extra]]“-Repository befinden sich mehrere Programme, mittels derer man einen DHCP-Server aufsetzen kann.


* '''dhcp''' ist das eigentliche Serverprogramm
* {{Paket|dhcp}} ist das eigentliche Serverprogramm
* '''dnsmasq''' ist ein kombinierter DNS/DHCP-Server
* {{Paket|dnsmasq}} ist ein kombinierter DNS/DHCP-Server
* '''bind9''' ist ein umfangreiches DNS-Serverprogramm
* {{Paket|bind}} ist ein umfangreiches DNS-Serverprogramm
* '''dhcdbd''' erlaubt das Steuern des DHCP-Clients mittels DBUS
* {{Paket|dhclient}} ist ein Standalone-Programm für DHCP-Anfragen
* '''dhclient''' ist ein Standalone-Programm für DHCP-Anfragen
* {{Paket|dhcpcd}} ist der „''c''lient ''d''aemon“ für DHCP
* '''dhcpcd''' ist der „''c''lient ''d''aemon“ 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.


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 ==
* [http://www.howtoforge.com/dhcp_server_linux_debian_sarge dhcpd-Einrichtung am Beispiel von Debian Sarge] {{sprache|en}}
* [http://www.howtoforge.com/dhcp_server_linux_debian_sarge dhcpd-Einrichtung am Beispiel von Debian Sarge] {{sprache|en}}
* [http://wiki.ubuntuusers.de/Dnsmasq Dnsmasq-Konfiguration am Beispiel von Ubuntu] {{sprache|de}}
* [http://wiki.ubuntuusers.de/Dnsmasq Dnsmasq-Konfiguration am Beispiel von Ubuntu] {{sprache|de}}
* [http://www.mpipks-dresden.mpg.de/~mueller/docs/suse10.0/suselinux-manual_de/manual/sec.dhcp.server.html dhcpd-Konfiguration aus der SUSE-Dokumentation] {{sprache|de}}
* [http://oob.freeshell.org/nzwireless/dhcpd.html dhcpd auf freeshell.org] {{sprache|en}}
* [http://oob.freeshell.org/nzwireless/dhcpd.html dhcpd auf freeshell.org] {{sprache|en}}


[[Kategorie:Netzwerk]]
[[Kategorie:Netzwerk]]

Aktuelle Version vom 21. November 2016, 22:20 Uhr

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