Inhaltsverzeichnis
DHCP ISC CentOS 6
DHCP ISC ist ein DHCP-Server, welcher die IP-Adressverteilung in einem Netzwerk realisieren kann. Der DHCP-Server des ISC (Internet System Consortium) ist einer der meist eingesetzten DHCP-Server weltweit.
Hinweis - Die nachfolgenden Ausführungen erheben keinen Anspruch auf Vollständigkeit, sondern stellen eine „Basiskonfiguration“ eins DHCP-Servers für ein kleines privates Netzwerk dar!!!
Ab hier werden zur Ausführung nachfolgender Befehle root
-Rechte benötigt. Um der Benutzer root
zu werden, melden Sie sich bitte als root
-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root
:
$ su - Password:
Überblick
Im nachfolgenden soll die Konfiguration eines master DHCP-Servers welcher als interner, nicht nach außen agierender DHCP-Server für ein privates Netzwerk mit zwei Netzen durchgeführt werden. Nachfolgende Netze werden dabei verwaltet:
- DMZ - Domain: dmz.tachtler.net - IP-Adressbereich: 192.168.0.0/24
- Intranet - Domain: intra.tachtler.net - IP-Adressbereich: 192.168.1.0/24
HINWEIS - Der Einsatz von IPv6 soll NICHT genutzt werden!!!
Installation
Zur Installation eines DHCP-Servers wird nachfolgendes Paket benötigt:
installiert werden.
Mit nachfolgendem Befehl, wird das Pakete dhcp
installiert:
# yum install dhcp Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.atrpms.net * extras: mirror.nucleus.be * updates: be.mirror.eurid.eu Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package dhcp.x86_64 12:4.1.1-12.P1.el6_0.4 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: dhcp x86_64 12:4.1.1-12.P1.el6_0.4 updates 887 k Transaction Summary ================================================================================ Install 1 Package(s) Upgrade 0 Package(s) Total download size: 887 k Installed size: 2.0 M Is this ok [y/N]: y Downloading Packages: dhcp-4.1.1-12.P1.el6_0.4.x86_64.rpm | 887 kB 00:01 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : 12:dhcp-4.1.1-12.P1.el6_0.4.x86_64 1/1 Installed: dhcp.x86_64 12:4.1.1-12.P1.el6_0.4 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket dhcp
installiert wurden.
# rpm -qil dhcp Name : dhcp Relocations: (not relocatable) Version : 4.1.1 Vendor: CentOS Release : 12.P1.el6_0.4 Build Date: Sat 25 Jun 2011 03:01:05 PM CEST Install Date: Tue 16 Aug 2011 01:39:44 PM CEST Build Host: c6b5.bsys.dev.centos.org Group : System Environment/Daemons Source RPM: dhcp-4.1.1-12.P1.el6_0.4.src.rpm Size : 2142910 License: ISC Signature : RSA/8, Wed 06 Jul 2011 03:38:02 AM CEST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://isc.org/products/DHCP/ Summary : Dynamic host configuration protocol software Description : DHCP (Dynamic Host Configuration Protocol) is a protocol which allows individual devices on an IP network to get their own network configuration information (IP address, subnetmask, broadcast address, etc.) from a DHCP server. The overall purpose of DHCP is to make it easier to administer a large network. The dhcp package includes the ISC DHCP service and relay agent. To use DHCP on your network, install a DHCP service (or relay agent), and on clients run a DHCP client daemon. The dhcp package provides the ISC DHCP service and relay agent. /etc/dhcp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd6.conf /etc/openldap/schema/dhcp.schema /etc/rc.d/init.d/dhcpd /etc/rc.d/init.d/dhcpd6 /etc/rc.d/init.d/dhcrelay /etc/sysconfig/dhcpd /etc/sysconfig/dhcpd6 /etc/sysconfig/dhcrelay /usr/bin/omshell /usr/sbin/dhcpd /usr/sbin/dhcrelay /usr/share/doc/dhcp-4.1.1 /usr/share/doc/dhcp-4.1.1/3.0b1-lease-convert /usr/share/doc/dhcp-4.1.1/IANA-arp-parameters /usr/share/doc/dhcp-4.1.1/LICENSE /usr/share/doc/dhcp-4.1.1/README /usr/share/doc/dhcp-4.1.1/README.ldap /usr/share/doc/dhcp-4.1.1/RELNOTES /usr/share/doc/dhcp-4.1.1/References.txt /usr/share/doc/dhcp-4.1.1/api+protocol /usr/share/doc/dhcp-4.1.1/dhclient-tz-exithook.sh /usr/share/doc/dhcp-4.1.1/dhcpd-conf-to-ldap /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /usr/share/doc/dhcp-4.1.1/dhcpd6.conf.sample /usr/share/doc/dhcp-4.1.1/draft-ietf-dhc-ldap-schema-01.txt /usr/share/doc/dhcp-4.1.1/ms2isc /usr/share/doc/dhcp-4.1.1/ms2isc/Registry.perlmodule /usr/share/doc/dhcp-4.1.1/ms2isc/ms2isc.pl /usr/share/doc/dhcp-4.1.1/ms2isc/readme.txt /usr/share/doc/dhcp-4.1.1/sethostname.sh /usr/share/doc/dhcp-4.1.1/solaris.init /usr/share/man/man1/omshell.1.gz /usr/share/man/man5/dhcp-eval.5.gz /usr/share/man/man5/dhcp-options.5.gz /usr/share/man/man5/dhcpd.conf.5.gz /usr/share/man/man5/dhcpd.leases.5.gz /usr/share/man/man8/dhcpd.8.gz /usr/share/man/man8/dhcrelay.8.gz /var/lib/dhcpd /var/lib/dhcpd/dhcpd.leases /var/lib/dhcpd/dhcpd6.leases
Dienst/Deamon-Start einrichten
Um einen DHCP-Server, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:
# chkconfig dhcpd on
Eine Überprüfung, ob beim Neustart des Server der dhcpd
-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
# chkconfig --list | grep dhcpd dhcpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off dhcpd6 0:off 1:off 2:off 3:off 4:off 5:off 6:off
IPv6 deaktivieren
Grundsätzlich wird für den Einsatz von IPv6 ein zusätzlicher Dienst/Daemon benötigt, welcher den Namen dhcpd6
trägt.
Falls dieser nicht gestartet wird, kommt auch kein IPv6 zum Einsatz!
iptables Regel
Damit der DHCP-Server auch erreichbar ist und nicht die Weitergabe der IP-Address Informationen vom Paketfilter iptables
blockiert wird, muss nachfolgende Regel zum iptables
-Regelwerk hinzugefügt werden.
Um die aktuellen iptables
-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 17059 1237K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 21 1391 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:37 6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:37 7 10 688 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 8 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 9 16 1216 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:123 10 40 1280 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 17503 packets, 16M bytes) num pkts bytes target prot opt in out source destination
Nachfolgende Befehle, fügen folgende iptables
-Regeln dem iptables
-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:
-A INPUT -p udp --dport 67 -j ACCEPT
-A OUTPUT -p udp --dport 68 -j ACCEPT
und hier die Befehle:
# iptables -I INPUT 9 -p udp --dport 67 -j ACCEPT # iptables -I OUTPUT 1 -p udp --dport 68 -j ACCEPT
Ein erneute Abfrage des iptables
-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 17250 1252K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 21 1391 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:37 6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:37 7 10 688 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 8 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 9 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:67 10 17 1292 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:123 11 43 1376 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 86 packets, 24552 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:68
Die neuen Zeilen sind an Position 9 (INPUT) und Postition 1 (OUTPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 9 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:67 ... 1 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:68 ...
Um diese iptables
-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Basis-Konfiguration
Nach der Installation, ist die Konfigurationsdatei des DHCP-Servers, welche im nachfolgendem Verzeichnis mit dem Namen
/etc/dhcp/dhcpd.conf
steht, erst einmal leer.
/etc/dhcp/dhcpd.conf
Eine grundlegende Konfigurationsdatei, könnte wie die nachfolgend dargestellte aussehen (komplette Konfigurationsdatei):
# # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.sample # see 'man 5 dhcpd.conf' # # ============================================================================== # Globals. # ============================================================================== # Max. number of allocated leases aarived, to decrease to min-lease-time. adaptive-lease-time-threshold 80; # Accept clients, with NOT set broadcast the bit. always-broadcast false; # Accept clients, with expect RFC1048, but did NOT follow RFC1048. always-reply-rfc1048 true; # Send DHCPNAK messages, to misconfiguired clients. authoritative; # Allow clients, wich did NOT send a host declaration to get an IP-Address. boot-unknown-clients true; # Format of the timestamp in lease files, UTC (default) OR local (local). db-time-format local; # Hostname, which setting up the clients A and PTR record. ddns-hostname "ns1"; # Domainname, which appended to the clients hostname for FQDN. ddns-domainname "dmz.tachtler.net"; # Domainname, which appended to the clients reversed IP-Address. ddns-rev-domainname "0.168.192.in-addr.arpa"; # The update-style parameter, none (default), ad-hoc or interim. ddns-update-style none; # Attempt to do a DNS-update, after a lease-file is confirmed. ddns-updates off; # Default lease time in seconds. (86400 = 24h). default-lease-time 86400; # Attempt to do a DHCP-update, on a clients A record at lease-time. do-forward-updates false; # Ending time for al assigned BOOTP clients. (Global setting). # dynamic-bootp-lease-cutoff 0 9999/12/31 23:59:59; # Lenght of lease-time for dynamic BOOTP clients. (86400 = 24h). # dynamic-bootp-lease-length 86400; # Filename of the initial boot file, which is to be loaded by the client. # filename ""; # Look up for all corrosponding IP-Adresses in the lease-pool. get-lease-hostnames false; # Path and name of the lease file. # lease-file-name /var/lib/dhcpd/dhcpd.leases # Local port listen to DHCP requests. # local-port 67; # Local address listen to DHCP requests. DO NOT USE !!! # local-address 0.0.0.0; # Log facility. # log-facility local7 # Max. lease time in seconds. (604800 = 7d). max-lease-time 604800; # Clients retry, to get a new lease, in seconds. (Max. 255s). # min-secs 0; # Min. lease time in seconds. (3600 = 1h) min-lease-time 3600; # Allow only one lease per client; one-lease-per-client true; # Path and name of the PID-file. # pid-file-name /var/run/dhcpd.pid; # Check ping to a new IP-Address. If ping is possible IP-Address already in use. ping-check true; # Set wait timeout for check-ping in seconds. (default is 1). ping-timeout 3; # Remote port for DHCP response. # remote-port 68; # IP-Address for the response of the DHCP-Server. server-identifier 192.168.0.1; # Server name of the server, from which the client is booting. server-name "ns1.dmz.tachtler.net"; # Check for update-conflicts on IP-Adresses, when leases run out; update-conflict-detection true; # Heal DB inconsestencies easily. (default is true). update-optimization true; # Update leases for fixed IP-Addresses. Only useful with update-style interim. update-static-leases false; # ============================================================================== # Host declarations. # ============================================================================== host rechner01 { allow duplicates; hardware ethernet 12:34:56:78:9a:bd; fixed-address 192.168.0.2; } host rechner02 { hardware ethernet 12:34:56:78:9a:be; fixed-address 192.168.0.3; } # ============================================================================== # Class definitions # ============================================================================== class "rechner03" { match if ( substring ( hardware, 1, 6 ) = 12:34:56:78:9a:bc ); } # ============================================================================== # Subnet declarations. # ============================================================================== # ------------------------------------------------------------------------------ # Subnet 192.168.0.0/24 # ------------------------------------------------------------------------------ subnet 192.168.0.0 netmask 255.255.255.0 { # # Network settings # option broadcast-address 192.168.0.255; option domain-name "dmz.tachtler.net"; option domain-name-servers 192.168.0.1; option domain-search "dmz.tachtler.net", "intra.tachtler.net", "tachtler.net"; option ntp-servers 192.168.0.1; option routers 192.168.0.1; option subnet-mask 255.255.255.0; option time-servers 192.168.0.1; # # Static IP address definitions (pseudo) # pool { allow members of "rechner03"; range 192.168.0.4 192.168.0.4; } # # Dynamic IP addresses # pool { range 192.168.0.5 192.168.0.254; } } # ------------------------------------------------------------------------------ # Subnet 192.168.1.0/24 # ------------------------------------------------------------------------------ subnet 192.168.1.0 netmask 255.255.255.0 { # # Network settings # option broadcast-address 192.168.1.255; option domain-name "intra.tachtler.net"; option domain-name-servers 192.168.1.1; option domain-search "intra.tachtler.net", "dmz.tachtler.net", "tachtler.net"; option ntp-servers 192.168.1.1; option routers 192.168.1.1; option subnet-mask 255.255.255.0; option time-servers 192.168.1.1; # # Dynamic IP addresses # pool { range 192.168.1.2 192.168.1.254; } }
Erster Start
Falls alle voranstehenden Schritte wie beschrieben durchgeführt wurden, Installation, IPv6 deaktivieren, iptables, sollte dem ersten Start nichts im Wege stehen und dies mit nachfolgendem Befehl durchgeführt werden:
# service dhcpd start Starting dhcpd: [ OK ]
DHCP-Server Überprüfung
Ob der DHCP-Server, sprich der dhcpd
-Dienst/Deamon auch tatsächlich als Hintergrundprozess läuft, kann mit nachfolgendem Befehl überprüft werden (Es sollte eine Ausgabe wie nachfolgend dargestellt, erfolgen - es kommt auf die zweite Zeile an!):
# ps auxwwwf | grep dhcpd root 1584 0.0 0.1 103148 824 pts/0 S+ 12:11 0:00 \_ grep dhcpd root 1580 0.0 0.8 52136 4136 ? Ss 12:10 0:00 /usr/sbin/dhcpd
Eine weitere Überprüfung, ob der erste Start erfolgreich war, kann durch Einsicht der LOG-Dateien
/var/log/messages
durchgeführt werden.
Ausgabe der LOG-Datei /var/log/messages
mit nachfolgendem Befehl, die Ausgabe sollte wie nachfolgend dargestellt aussehen:
# tail -n 11 /var/log/messages Aug 17 12:10:26 rechner01 dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1 Aug 17 12:10:26 rechner01 dhcpd: Copyright 2004-2010 Internet Systems Consortium. Aug 17 12:10:26 rechner01 dhcpd: All rights reserved. Aug 17 12:10:26 rechner01 dhcpd: For info, please visit https://www.isc.org/software/dhcp/ Aug 17 12:10:26 rechner01 dhcpd: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file Aug 17 12:10:26 rechner01 dhcpd: Wrote 0 deleted host decls to leases file. Aug 17 12:10:26 rechner01 dhcpd: Wrote 0 new dynamic host decls to leases file. Aug 17 12:10:26 rechner01 dhcpd: Wrote 0 leases to leases file. Aug 17 12:10:26 rechner01 dhcpd: Listening on LPF/eth0/12:34:56:78:9a:bc/192.168.0.0/24 Aug 17 12:10:26 rechner01 dhcpd: Sending on LPF/eth0/12:34:56:78:9a:bc/192.168.0.0/24 Aug 17 12:10:26 rechner01 dhcpd: Sending on Socket/fallback/fallback-net
Interface Überprüfung
Ob und an welchen Interface der DHCP-Server „lauscht“, bzw. DHCP-Requests beantwortet, kann mit nachfolgendem Befehl überprüft werden:
# netstat -tulpen | grep dhcpd udp 0 0 0.0.0.0:67 0.0.0.0:* 0 12914 1580/dhcpd
Überprüfung IP-Adressvergabe
Um die Vergabe einer IP-Adresse zu überprüfen, kann ein Blick in die LOG-Datei /var/log/messages
geworfen werden, was mit nachfolgendem Befehl durchgeführt werden kann (nur relevanter Auszug):
# cat /var/log/messages | grep dhcpd: ... Aug 17 16:31:58 rechner01 dhcpd: DHCPDISCOVER from 12:34:56:78:9a:bc via eth1 Aug 17 16:31:58 rechner01 dhcpd: DHCPOFFER on 192.168.0.10 to 12:34:56:78:9a:bc via eth1 Aug 17 16:31:58 rechner01 dhcpd: Dynamic and static leases present for 192.168.0.10. Aug 17 16:31:58 rechner01 dhcpd: Remove host declaration rechner10-eth0 or remove 192.168.0.10 Aug 17 16:31:58 rechner01 dhcpd: from the dynamic address pool for 192.168.0.0/24 Aug 17 16:31:58 rechner01 dhcpd: DHCPREQUEST for 192.168.0.10 (192.168.0.10.1) from 12:34:56:78:9a:bc via eth1 Aug 17 16:31:58 rechner01 dhcpd: DHCPACK on 192.168.0.10 to 12:34:56:78:9a:bc via eth1 ...
Lease-Datei einsehen
Mit nachfolgendem Befehl, kann die sogenannte Lease-Datei eingesehene werden, welche sich standardmäßig in nachfolgenden Verzeichnis mit nachfolgendem Namen befindet, inklusive Backup-Datei, welche am Namensende mit einem ~
-Zeichen gekennzeichnet ist
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd.leases~
# cat /var/lib/dhcpd/dhcpd.leases # The format of this file is documented in the dhcpd.leases(5) manual page. # This lease file was written by isc-dhcp-4.1.1-P1
HINWEIS - In dem vorhergehenden Beispiel ist die Lease-Datei leer!!!
DHCP-Relay
Falls mehrere Netzsegmente, hier die nachfolgenden Netzsegmente
192.168.0.0/24 - dmz.tachtler.net
192.168.1.0/24 - intra.tachtler.net
von einem DHCP-Server mit IP-Adressen versorgt werden sollen, gibt es zwei Möglichkeiten:
- der DHCP-Server ist in beiden Netzsegmenten present
- es wird auf dem Router/Gateway mit DHCP-Relaying gearbeitet.
HINWEIS - Im nachfolgend dargestellten Fall, soll kein Hardware-Router als DHCP-Relay zum Einsatz kommen, sondern das Gateway, für das entsprechende Netzsegment, hier 192.168.1.0/24
, was ebenfalls ein Server unter CentOS in der Version 6.x ist!
Installation DHCP-Relay
Um eine DHCP-Relay unter Linux, hier im speziellen unter CentOS in der Version 6.x zu realisieren, wird ein Programm mit dem Namen
dhcrelay
benötigt.
Dieses Programm mit dem Namen dhcrelay
befindet sich ebenfalls im Paket
ist.
WICHTIG - Die Installation des Paketes dhcp
erfolgt auf dem GATEWAY!!!
Die Installation, aber NUR die Installation, NICHT die Konfiguration, des Paketes dhcp
, ist wie schon hier
beschrieben durchzuführen.
Dienst/Deamon-Start DHCP-Relay einrichten
Um einen DHCP-Relay-Server, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:
# chkconfig dhcrelay on
Eine Überprüfung, ob beim Neustart des Server der dhcrelay
-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
# chkconfig --list | grep dhcrelay dhcrelay 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables-Regeln DHCP-Relay
Wie auch schon beim Einrichten eines DHCP-Servers, sind auch auf dem GATEWAY die entsprechenden iptables
-Regeln einzurichten, wie dies zu erfolgen hat, wurde bereits hier
beschrieben.
Konfiguration DHCP-Relay
Die Konfiguration eines DHCP-Relay-Servers gestaltet sich jedoch im Vergleich zum Einrichten eines DCHP-Servers geradezu extrem einfach. Es gibt bereits, neben dem vorhandenen Start-Script, auch eine vorbereitete Konfigurationsdatei, welche im nachfolgendem Verzeichnis unter nachfolgendem Namen zu finden ist:
/etc/sysconfig/dhcrelay
Die Konfigurationsdatei /etc/sysconfig/dhcrelay
ist bereits vorbereitet und hat standardmäßig folgenden Inhalt:
# Command line options here INTERFACES="" DHCPSERVERS=""
HINWEIS - Diese muss nun den persönlichen Gegebenheiten angepasst werden!!
Im nachfolgenden Beispiel, sollen DHCP-Broadcast-Nachrichten, welche auf dem
- Interface:
eth2
empfangen werden, an den
- DHCP-Server, welcher unter der IP-Adresse:
192.168.0.10
zu erreichen ist
weitergegeben werden, um dann wieder über das
- Interface:
eth1
zurück zum anfragenden Client geleitet zu werden.
WICHTIG - Sowohl das Interface an dem der Client die IP-Adresse fordert- hier eth2
, als auch die IP-Adresse an dem der DHCP-Server lauscht, hier eth1
müssen bei INTERFACES
angegeben werden!!!
Die Änderungen an der Konfigurationsdatei /etc/sysconfig/dhcrelay
, müssen dann wie nachfolgen dargestellt durchgeführt werden:
# Command line options here INTERFACES="eth1 eth2" DHCPSERVERS="192.168.0.10"
Erster Start DHCP-Relay-Server
Falls alle voranstehenden Schritte wie beschrieben durchgeführt wurden, Installation, iptables, Konfiguration, sollte dem ersten Start nichts im Wege stehen und dies mit nachfolgendem Befehl durchgeführt werden:
# service dhcrelay start Starting dhcrelay: [ OK ]
DHCP-Relay-Server Überprüfung
Ob der DHCP-Relay-Server, sprich der dhcrelay
-Dienst/Deamon auch tatsächlich als Hintergrundprozess läuft, kann mit nachfolgendem Befehl überprüft werden (Es sollte eine Ausgabe wie nachfolgend dargestellt, erfolgen - es kommt auf die zweite Zeile an!):
# ps auxwwwf | grep dhcrelay root 2767 0.0 0.0 103152 792 pts/0 S+ 10:44 0:00 | \_ grep dhcrelay root 2497 0.0 0.0 6548 300 ? Ss 10:35 0:00 /usr/sbin/dhcrelay -i eth1 -i eth2 192.168.0.10
Eine weitere Überprüfung, ob der erste Start erfolgreich war, kann durch Einsicht der LOG-Dateien
/var/log/messages
durchgeführt werden.
Ausgabe der LOG-Datei /var/log/messages
mit nachfolgendem Befehl, die Ausgabe sollte wie nachfolgend dargestellt aussehen:
# tail -n 7 /var/log/messages Aug 18 10:35:56 rechner01 dhcrelay: Internet Systems Consortium DHCP Relay Agent 4.1.1-P1 Aug 18 10:35:56 rechner01 dhcrelay: Copyright 2004-2010 Internet Systems Consortium. Aug 18 10:35:56 rechner01 dhcrelay: All rights reserved. Aug 18 10:35:56 rechner01 dhcrelay: For info, please visit https://www.isc.org/software/dhcp/ Aug 18 10:35:56 rechner01 dhcrelay: Listening on LPF/eth2/12:34:56:78:9a:bc Aug 18 10:35:56 rechner01 dhcrelay: Sending on LPF/eth2/12:34:56:78:9a:bc Aug 18 10:35:56 rechner01 dhcrelay: Listening on LPF/eth1/12:34:56:78:9a:bb Aug 18 10:35:56 rechner01 dhcrelay: Sending on LPF/eth1/12:34:56:78:9a:bb Aug 18 10:35:56 rechner01 dhcrelay: Sending on Socket/fallback
Interface Überprüfung DHCP-Relay-Server
Ob und an welchen Interface der DHCP-Server „lauscht“, bzw. DHCP-Requests beantwortet, kann mit nachfolgendem Befehl überprüft werden:
# netstat -tulpen | grep dhcrelay udp 0 0 0.0.0.0:67 0.0.0.0:* 0 15953 2497/dhcrelay