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

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/dhcp_isc_centos_6.txt · Zuletzt geändert: 2012/05/08 22:52 von klaus