Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:dhcp_isc_centos_7

Dies ist eine alte Version des Dokuments!


DHCP ISC CentOS 7

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 DHCP-Servers
  • eines DHCP-Relays

welche als internes, nicht nach außen agierender DHCP-Server/DHCP-Relay Konstrukt für ein privates Netzwerk mit drei Netzen durchgeführt werden. Nachfolgende Netze werden dabei verwaltet:

  • EDMZ - Domain: edmz.tachtler.net - IP-Adressbereich: 192.168.1.0/24
  • IDMZ - Domain: idmz.tachtler.net - IP-Adressbereich: 192.168.0.0/24
  • Intranet - Domain: intra.tachtler.net - IP-Adressbereich: 192.168.2.0/24

:!: HINWEIS - IPv6 soll NICHT genutzt werden!!!

DHCP-Server

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: changelog, priorities
39 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package dhcp.x86_64 12:4.2.5-27.el7.centos.2 will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package     Arch          Version                         Repository      Size
================================================================================
Installing:
 dhcp        x86_64        12:4.2.5-27.el7.centos.2        updates        507 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 507 k
Installed size: 1.4 M
Is this ok [y/d/N]: y
Downloading packages:
dhcp-4.2.5-27.el7.centos.2.x86_64.rpm                      | 507 kB   00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 12:dhcp-4.2.5-27.el7.centos.2.x86_64                         1/1 
  Verifying  : 12:dhcp-4.2.5-27.el7.centos.2.x86_64                         1/1 

Installed:
  dhcp.x86_64 12:4.2.5-27.el7.centos.2                                          

Complete!

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket dhcp installiert wurden.

# rpm -qil dhcp
Name        : dhcp
Epoch       : 12
Version     : 4.2.5
Release     : 27.el7.centos.2
Architecture: x86_64
Install Date: Tue 14 Oct 2014 12:05:50 PM CEST
Group       : System Environment/Daemons
Size        : 1444029
License     : ISC
Signature   : RSA/SHA256, Mon 06 Oct 2014 06:33:43 PM CEST, Key ID 24c6a8a7f4a80eb5
Source RPM  : dhcp-4.2.5-27.el7.centos.2.src.rpm
Build Date  : Mon 06 Oct 2014 03:45:35 PM CEST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
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.

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/NetworkManager
/etc/NetworkManager/dispatcher.d
/etc/NetworkManager/dispatcher.d/12-dhcpd
/etc/dhcp
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/usr/bin/omshell
/usr/lib/systemd/system/dhcpd.service
/usr/lib/systemd/system/dhcpd6.service
/usr/lib/systemd/system/dhcrelay.service
/usr/sbin/dhcpd
/usr/sbin/dhcrelay
/usr/share/doc/dhcp-4.2.5
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
/usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example
/usr/share/doc/dhcp-4.2.5/ldap
/usr/share/doc/dhcp-4.2.5/ldap/README.ldap
/usr/share/doc/dhcp-4.2.5/ldap/dhcp.schema
/usr/share/doc/dhcp-4.2.5/ldap/dhcpd-conf-to-ldap
/usr/share/man/man1/omshell.1.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
/usr/share/systemtap/tapset/dhcpd.stp
/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:

# systemctl enable dhcpd.service
ln -s '/usr/lib/systemd/system/dhcpd.service' '/etc/systemd/system/multi-user.target.wants/dhcpd.service'

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:

# systemctl list-unit-files --type=service | grep dhcpd.service
dhcpd.service                          enabled

bzw.

# systemctl is-enabled dhcpd.service
enabled

IPv6 deaktivieren

Grundsätzlich wird für den Einsatz von IPv6 ein zusätzlicher Dienst/Daemon benötigt, welcher den Namen dhcpd6 trägt.

:!: HINWEIS - Falls dhcpd6 nicht gestartet wird, kommt auch kein IPv6 zum Einsatz!

Jedoch lauscht auch der dhcpd standardmäßig auf IPv6, dadurch wird es nötig auf für den für den DHCP-Dienst/Daemon dhcpd IPv6 zu deaktivieren.

:!: HINWEIS - Dies wird NICHT mehr in der Konfigurationsdatei /etc/sysconfig/dhcpd durchgeführt !!!

Zuerst sollte mit nachfolgendem Befehl die Standard Start Datei von systemd für den DHCP-Dienst/Daemon dhcpd in das Verzeichnis

  • /etc/systemd/system

mit nachfolgendem Befehl kopiert werden:

# cp -a /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/

:!: WICHTIG - Im Verzeichnis /etc/systemd/system befinden sich modifizierte - systemd Start Dateien !!!

Anschließend kann die kopierte systemd Start Datei

  • /etc/systemd/system/dhcpd.service

wie nachfolgend beschrieben, anpasst werden:

[Unit]
Description=DHCPv4 Server Daemon
Documentation=man:dhcpd(8) man:dhcpd.conf(5)
After=network.target
After=time-sync.target
 
[Service]
Type=notify
# Tachtler
# default: ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid -4
 
[Install]
WantedBy=multi-user.target

Abschließend muss die systemd Start Datei noch systemd bekannt gemacht werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# systemctl --system daemon-reload

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    34716   43M 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        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0    0.0.0.0/0           
4        6   360 ACCEPT     tcp  --  *      *       0.0.0.0/0    0.0.0.0/0    state NEW tcp dpt:22
6     1003  238K 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 329 packets, 45404 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 5 -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    34716   43M 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        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0    0.0.0.0/0           
4        6   360 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:67
6     1003  238K 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 329 packets, 45404 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):

...
5        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:

# /usr/sbin/iptables-save > /etc/sysconfig/iptables 

Nachfolgender Befehl kann dazu verwendet werden, um zu überprüfen, ob das iptables-Regelwerk auch korrekt gespeichert wurde:

# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Tue Oct 14 12:12:08 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [296:41040]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -p udp -m udp --dport 68 -j ACCEPT
COMMIT
# Completed on Tue Oct 14 12:12:08 2014

Nach der Installation, ist die Konfigurationsdatei des DHCP-Servers, welche im nachfolgendem Verzeichnis mit dem Namen

  • /etc/dhcp/dhcpd.conf

steht, erst einmal leer.

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 "idmz.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;
 
# Possibility to "resere" leases by client request with infinite (0xffffffff) lease-time.
# infinite-is-reserved 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;
 
# Specify the format of the Server DUID. If not specified, it will be generated by dhcpd.
# server-duid LLT
 
# 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.idmz.tachtler.net";
 
# Record the relay agent information options sent during the client's initial DHCPREQUEST message.
stash-agent-options true;
 
# 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.2.2;
        option host-name "rechner01";
}
 
host rechner02 {
        hardware ethernet 12:34:56:78:9a:be;
        fixed-address 192.168.2.3;
        option host-name "rechner01";
}
 
# ==============================================================================
# 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 "idmz.tachtler.net";
        option domain-name-servers 192.168.0.1;
        option domain-search "idmz.tachtler.net", "edmz.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 "edmz.tachtler.net";
        option domain-name-servers 192.168.1.1;
        option domain-search "edmz.tachtler.net", "idmz.tachtler.net",
                              "intra.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;
        }
 
# ------------------------------------------------------------------------------
# Subnet 192.168.2.0/24
# ------------------------------------------------------------------------------
 
subnet 192.168.2.0 netmask 255.255.255.0 {
 
        #
        # Network settings 
        #
 
        option broadcast-address 192.168.2.255;
        option domain-name "intra.tachtler.net";
        option domain-name-servers 192.168.2.1;
        option domain-search "intra.tachtler.net", "idmz.tachtler.net",
                             "edmz.tachtler.net", "tachtler.net";
        option ntp-servers 192.168.2.1;
        option routers 192.168.2.1;
        option subnet-mask 255.255.255.0;
        option time-servers 192.168.2.1;
 
        #
        # Dynamic IP addresses
        #
 
        pool {
                range 192.168.2.2 192.168.2.254;
        }
 
}

Um überprüfen zu können, ob die Konfigurationsdatei /etc/dhcp/dhcpd.conf syntaktische Fehler aufweist, kann nachfolgender Befehl ausgeführt werden, welcher den DHCP-Server nicht startet, sondern nur die Konfigurationsdatei überprüft:

# dhcpd -t -cf /etc/dhcp/dhcpd.conf
Internet Systems Consortium DHCP Server 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file

:!: HINWEIS - Die Ausgabe von „LDAP“ bezogenen Meldungen, kann in diesem Beispiel ignoriert werden.

DHCP-Server starten

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:

# systemctl start dhcpd.service

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     10007  0.0  0.0 112640   924 pts/0    S+   14:44   0:00                      \_ grep --color=auto dhcpd
dhcpd    10001  0.0  1.8 107716 18908 ?        Ss   14:40   0:00 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid

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 16 /var/log/messages
Oct 14 14:40:57 server20 systemd: Starting DHCPv4 Server Daemon...
Oct 14 14:40:57 server20 dhcpd: Internet Systems Consortium DHCP Server 4.2.5
Oct 14 14:40:57 server20 dhcpd: Copyright 2004-2013 Internet Systems Consortium.
Oct 14 14:40:57 server20 dhcpd: All rights reserved.
Oct 14 14:40:57 server20 dhcpd: For info, please visit https://www.isc.org/software/dhcp/
Oct 14 14:40:57 server20 dhcpd: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
Oct 14 14:40:57 server20 dhcpd: Wrote 0 class decls to leases file.
Oct 14 14:40:57 server20 dhcpd: Wrote 0 deleted host decls to leases file.
Oct 14 14:40:57 server20 dhcpd: Wrote 0 new dynamic host decls to leases file.
Oct 14 14:40:57 server20 dhcpd: Wrote 0 leases to leases file.
Oct 14 14:40:57 server20 dhcpd: Listening on LPF/eth1/52:54:00:00:01:14/192.168.1.0/24
Oct 14 14:40:57 server20 dhcpd: Sending on   LPF/eth1/52:54:00:00:01:14/192.168.1.0/24
Oct 14 14:40:57 server20 dhcpd: Listening on LPF/eth0/52:54:00:00:00:14/192.168.0.0/24
Oct 14 14:40:57 server20 dhcpd: Sending on   LPF/eth0/52:54:00:00:00:14/192.168.0.0/24
Oct 14 14:40:57 server20 dhcpd: Sending on   Socket/fallback/fallback-net
Oct 14 14:40:57 server20 systemd: Started DHCPv4 Server Daemon.

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          57051      10227/dhcpd         
udp        0      0 0.0.0.0:33597           0.0.0.0:*           0          57027      10227/dhcpd         

:!: HINWEIS - Auch bei der Konfiguration nur ein Netzwerk-Interface für eingehende Broadcast-Anfragen zu nutzen, wird immer 0.0.0.0:67 als „Listener“ IP-Adresse angezeigt.

IP-Adressvergabe Überprüfung

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
...
Oct 15 13:00:25 server20 dhcpd: DHCPDISCOVER from 00:50:0d:b4:6f:37 via 192.168.2.1
Oct 15 13:00:25 server20 dhcpd: DHCPOFFER on 192.168.2.10 to 00:50:0d:b4:6f:37 via 192.168.2.1
Oct 15 13:00:25 server20 dhcpd: DHCPREQUEST for 192.168.2.10 (192.168.1.20) from 00:50:0d:b4:6f:37 via 192.168.2.1
Oct 15 13:00:25 server20 dhcpd: DHCPACK on 192.168.2.10 to 00:50:0d:b4:6f:37 via 192.168.2.1
...

Lease-Datei

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~
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.2.5

lease 192.168.2.10 {
  starts epoch 1413175371; # Mon Oct 14 13:00:26 2014
  ends epoch 1413178971; # Mon Oct 14 13:00:26 2014
  tstp epoch 1413178971; # Mon Oct 14 13:00:26 2014
  cltt epoch 1413175371; # Mon Oct 14 13:00:26 2014
  binding state free;
  hardware ethernet 00:50:0d:b4:6f:37;
}
server-duid "\000\001\000\001\033\317\326YRT\000\007\001\024";

:!: HINWEIS - In dem vorhergehenden Beispiel ist die Lease-Datei leer!!!

DHCP-Relay

Falls mehrere Netzsegmente, hier die nachfolgenden Netzsegmente

  • 192.168.1.0/24 - idmz.tachtler.net
  • 192.168.2.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 ist!

Installation

Um eine DHCP-Relay unter Linux, hier im speziellen unter CentOS zu realisieren, wird ein Programm mit dem Namen

  • dhcrelay

benötigt.

Dieses Programm mit dem Namen dhcrelay befindet sich ebenfalls im Paket

  • dhcp - welches im base-Repository von CentOS enthalten ist.

:!: WICHTIG - Die Installation des Paketes dhcp erfolgt auf dem GATEWAY, welches als Router in z.B. das Netz 192.168.2.0/24 - intra.tachtler.net fungiert !!!

Mit nachfolgendem Befehl, wird das Pakete dhcp installiert:

# yum install dhcp
Loaded plugins: changelog, priorities
39 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package dhcp.x86_64 12:4.2.5-27.el7.centos.2 will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package     Arch          Version                         Repository      Size
================================================================================
Installing:
 dhcp        x86_64        12:4.2.5-27.el7.centos.2        updates        507 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 507 k
Installed size: 1.4 M
Is this ok [y/d/N]: y
Downloading packages:
dhcp-4.2.5-27.el7.centos.2.x86_64.rpm                      | 507 kB   00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 12:dhcp-4.2.5-27.el7.centos.2.x86_64                         1/1 
  Verifying  : 12:dhcp-4.2.5-27.el7.centos.2.x86_64                         1/1 

Installed:
  dhcp.x86_64 12:4.2.5-27.el7.centos.2                                          

Complete!

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket dhcp installiert wurden.

# rpm -qil dhcp
Name        : dhcp
Epoch       : 12
Version     : 4.2.5
Release     : 27.el7.centos.2
Architecture: x86_64
Install Date: Tue 14 Oct 2014 12:05:50 PM CEST
Group       : System Environment/Daemons
Size        : 1444029
License     : ISC
Signature   : RSA/SHA256, Mon 06 Oct 2014 06:33:43 PM CEST, Key ID 24c6a8a7f4a80eb5
Source RPM  : dhcp-4.2.5-27.el7.centos.2.src.rpm
Build Date  : Mon 06 Oct 2014 03:45:35 PM CEST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
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.

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/NetworkManager
/etc/NetworkManager/dispatcher.d
/etc/NetworkManager/dispatcher.d/12-dhcpd
/etc/dhcp
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/usr/bin/omshell
/usr/lib/systemd/system/dhcpd.service
/usr/lib/systemd/system/dhcpd6.service
/usr/lib/systemd/system/dhcrelay.service
/usr/sbin/dhcpd
/usr/sbin/dhcrelay
/usr/share/doc/dhcp-4.2.5
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
/usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example
/usr/share/doc/dhcp-4.2.5/ldap
/usr/share/doc/dhcp-4.2.5/ldap/README.ldap
/usr/share/doc/dhcp-4.2.5/ldap/dhcp.schema
/usr/share/doc/dhcp-4.2.5/ldap/dhcpd-conf-to-ldap
/usr/share/man/man1/omshell.1.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
/usr/share/systemtap/tapset/dhcpd.stp
/var/lib/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases

Dienst/Deamon-Start einrichten

Um einen DHCP-Relay, 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:

# systemctl enable dhcrelay.service
ln -s '/usr/lib/systemd/system/dhcrelay.service' '/etc/systemd/system/multi-user.target.wants/dhcrelay.service'

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:

# systemctl list-unit-files --type=service | grep dhcrelay.service
dhcrelay.service                        enabled

bzw.

# systemctl is-enabled dhcrelay.service
enabled

IPv6 deaktivieren

Der Dienst/Daemon lauscht dhcrelay standardmäßig nicht auf IPv6, jedoch kann explizit für den für den DHCP-Dienst/Daemon dhcrelay IPv6 zu deaktivieren für eine klare Konfiguration sorgen.

:!: HINWEIS - Dies wird NICHT mehr in der Konfigurationsdatei /etc/sysconfig/dhcrelay durchgeführt !!!

Zuerst sollte mit nachfolgendem Befehl die Standard Start Datei von systemd für den DHCP-Dienst/Daemon dhcrelay in das Verzeichnis

  • /etc/systemd/system

mit nachfolgendem Befehl kopiert werden:

# cp -a /usr/lib/systemd/system/dhcrelay.service /etc/systemd/system/

:!: WICHTIG - Im Verzeichnis /etc/systemd/system befinden sich modifizierte - systemd Start Dateien !!!

Anschließend kann die kopierte systemd Start Datei

  • /etc/systemd/system/dhcrelay.service

wie nachfolgend beschrieben, anpasst werden:

[Unit]
Description=DHCP Relay Agent Daemon
Documentation=man:dhcrelay(8)
After=network.target
 
[Service]
Type=notify
# Tachtler
# default: ExecStart=/usr/sbin/dhcrelay -d --no-pid
ExecStart=/usr/sbin/dhcrelay -d --no-pid -4
 
[Install]
WantedBy=multi-user.target

Abschließend muss die systemd Start Datei noch systemd bekannt gemacht werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# systemctl --system daemon-reload

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    34716   43M 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        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0    0.0.0.0/0           
4        6   360 ACCEPT     tcp  --  *      *       0.0.0.0/0    0.0.0.0/0    state NEW tcp dpt:22
6     1003  238K 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 329 packets, 45404 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 5 -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    34716   43M 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        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0    0.0.0.0/0           
4        6   360 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:67
6     1003  238K 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 329 packets, 45404 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):

...
5        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:

# /usr/sbin/iptables-save > /etc/sysconfig/iptables 

Nachfolgender Befehl kann dazu verwendet werden, um zu überprüfen, ob das iptables-Regelwerk auch korrekt gespeichert wurde:

# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Tue Oct 15 09:05:12 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [296:41040]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -p udp -m udp --dport 68 -j ACCEPT
COMMIT
# Completed on Tue Oct 15 09:05:12 2014

Nach der Installation, ist die Konfigurationsdatei des DHCP-Servers, welche im nachfolgendem Verzeichnis mit dem Namen

  • /etc/dhcp/dhcpd.conf

steht, erst einmal leer.

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 - dies soll auch ZWINGEND so bleiben.

:!: WICHTIG - Die Konfiguration eines DHCP-Relay erfolgt NICHT in /etc/dhcp/dhcpd.conf !!!

Die Konfiguration eines DHCP-Relays gestaltet sich jedoch im Vergleich zum Einrichten eines DCHP-Servers einfacher.

Wie ggf. unter der Konfiguration

durchgeführt, muss die systemd-Start Datei kopiert und angepasst werden.

Hier nachfolgend noch einmal die Schritte, falls diese nicht bereits durchgeführt wurden:

Zuerst sollte mit nachfolgendem Befehl die Standard Start Datei von systemd für den DHCP-Dienst/Daemon dhcrelay in das Verzeichnis

  • /etc/systemd/system

mit nachfolgendem Befehl kopiert werden:

# cp -a /usr/lib/systemd/system/dhcrelay.service /etc/systemd/system/

:!: WICHTIG - Im Verzeichnis /etc/systemd/system befinden sich modifizierte - systemd Start Dateien !!!

Anschließend kann die kopierte systemd Start Datei

  • /etc/systemd/system/dhcrelay.service

wie nachfolgend beschrieben, weiter anpasst werden:

[Unit]
Description=DHCP Relay Agent Daemon
Documentation=man:dhcrelay(8)
After=network.target
 
[Service]
Type=notify
# Tachtler
# default: ExecStart=/usr/sbin/dhcrelay -d --no-pid
ExecStart=/usr/sbin/dhcrelay -d --no-pid -4 -i eth0 -i eth1 192.168.1.20
 
[Install]
WantedBy=multi-user.target
Option Beschreibung
-i eth0 Lauscht auf DHCPREQUEST auf dem Interface eth0
-i eth1 Lauscht auf DHCPREQUEST auf dem Interface eth1
192.168.0.20 DHCP-Server an den die DHCPREQUEST-Anfragen weitergeleitet werden

Abschließend muss die systemd Start Datei noch systemd bekannt gemacht werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# systemctl --system daemon-reload

DHCP-Relay starten

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:

# systemctl start dhcrelay.service

DHCP-Relay Überprüfung

Ob der DHCP-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      2257  0.0  0.0 112640   928 pts/0    S+   09:46   0:00                      \_ grep --color=auto dhcrelay
root      2233  0.0  1.4 103672 15044 ?        Ss   09:40   0:00 /usr/sbin/dhcrelay -d --no-pid -4 -i eth0 -i eth1 192.168.1.20

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 24 /var/log/messages
Oct 15 09:40:41 server10 systemd: Starting DHCP Relay Agent Daemon...
Oct 15 09:40:41 server10 dhcrelay: Dropped all unnecessary capabilities.
Oct 15 09:40:41 server10 dhcrelay: Internet Systems Consortium DHCP Relay Agent 4.2.5
Oct 15 09:40:41 server10 dhcrelay: Copyright 2004-2013 Internet Systems Consortium.
Oct 15 09:40:41 server10 dhcrelay: All rights reserved.
Oct 15 09:40:41 server10 dhcrelay: For info, please visit https://www.isc.org/software/dhcp/
Oct 15 09:40:41 server10 dhcrelay: Dropped all unnecessary capabilities.
Oct 15 09:40:41 server10 dhcrelay: Internet Systems Consortium DHCP Relay Agent 4.2.5
Oct 15 09:40:41 server10 dhcrelay: Copyright 2004-2013 Internet Systems Consortium.
Oct 15 09:40:41 server10 dhcrelay: All rights reserved.
Oct 15 09:40:41 server10 dhcrelay: For info, please visit https://www.isc.org/software/dhcp/
Oct 15 09:40:41 server10 dhcrelay: Listening on LPF/eth1/52:54:00:a8:00:01
Oct 15 09:40:41 server10 dhcrelay: Sending on   LPF/eth1/52:54:00:a8:00:01
Oct 15 09:40:41 server10 dhcrelay: Listening on LPF/eth1/52:54:00:a8:00:01
Oct 15 09:40:41 server10 dhcrelay: Sending on   LPF/eth1/52:54:00:a8:00:01
Oct 15 09:40:41 server10 dhcrelay: Listening on LPF/eth0/52:54:00:00:00:10
Oct 15 09:40:41 server10 dhcrelay: Sending on   LPF/eth0/52:54:00:00:00:10
Oct 15 09:40:41 server10 dhcrelay: Sending on   Socket/fallback
Oct 15 09:40:41 server10 dhcrelay: Dropped all capabilities.
Oct 15 09:40:41 server10 dhcrelay: Listening on LPF/eth0/52:54:00:00:00:10
Oct 15 09:40:41 server10 dhcrelay: Sending on   LPF/eth0/52:54:00:00:00:10
Oct 15 09:40:41 server10 dhcrelay: Sending on   Socket/fallback
Oct 15 09:40:41 server10 dhcrelay: Dropped all capabilities.
Oct 15 09:40:41 server10 systemd: Started DHCP Relay Agent Daemon.

Interface Überprüfung

Ob und an welchen Interface das DHCP-Relay „lauscht“, bzw. DHCP-Requests weitergeleitet werden, kann mit nachfolgendem Befehl überprüft werden:

# netstat -tulpen | grep dhcrelay
udp        0      0 0.0.0.0:67              0.0.0.0:*           0          24421      2233/dhcrelay       
udp        0      0 0.0.0.0:38475           0.0.0.0:*           0          24411      2233/dhcrelay

:!: HINWEIS - Auch bei der Konfiguration nur ein Netzwerk-Interface für eingehende Broadcast-Anfragen zu nutzen, wird immer 0.0.0.0:67 als „Listener“ IP-Adresse angezeigt.

IP-Adressanfrage Überprüfung

Um die Anfrage 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 dhcrelay
...
Oct 15 13:00:33 server10 dhcrelay: Forwarded BOOTREQUEST for 00:50:0d:b4:6f:37 to 192.168.1.20
Oct 15 13:00:33 Server10 dhcrelay: Forwarded BOOTREPLY for 00:50:0d:b4:6f:37 to 192.168.2.10
...
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_7.1413466825.txt.gz · Zuletzt geändert: 2014/10/16 15:40 von klaus