Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:dhcp_isc_centos_6

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:

  • dhcp - ist im base-Repository von CentOS enthalten

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:

  1. der DHCP-Server ist in beiden Netzsegmenten present
  2. 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

  • dhcp - welches wie schon erwähnt im base-Repository von CentOS enthalten

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
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/dhcp_isc_centos_6.txt · Zuletzt geändert: 2012/05/08 22:52 von klaus