Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
DHCP-Server unter Centos7
Bei DHCP wird eine Anfrage vom Client an die Broadcast-Adresse seines Netzwerks geschickt.
<WRAP center round tip 60%> Genutzte Port: 67/UDP (Server)
68/UDP (Client)
</WRAP>
Notwendige Pakete installieren
yum install dhcp # centos7 yum install dhcp-server # centos8
Der DHCP-Daemon lauscht, sofern nicht anders angegeben, auf allen Netzwerkschnittstellen. Wenn dies nicht gewünscht ist, kann man dieses in der /etc/sysconfig/dhcpd angeben
Konfigurationsdatei für IPv4
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf # Centos7 cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf # Centos8
vi /etc/dhcp/dhcpd.conf
Der folgende Eintrag in der /etc/sysconfig/dhcpd, sorgt dafür, dass der DHCP-daemon nur auf die ens34 und ens35 lauscht
DHCPDARGS=„ens34 ens35“;
Inhalt der dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
default-lease-time 86400;
max-lease-time 86400;
authoritative;
#Außerdem lassen sich Bereiche von MAC-Adressen in Subnetzen oder Pools zusammenfassen und
#so etwa virtuelle Maschinen in eigene Adressräume verlagern. Der Administrator muss hierzu
#Klassen und Pools definieren. VirtualBox beispielsweise teilt seinen virtuellen Maschinen
#zufällige MAC-Adressen im Bereich 08:00:*:*:*:* zu oder Vmware-Workstation 00:0C:*.*.*.*
class "virtualbox"
{match if binary-to-ascii(16,8,":",
substring(hardware, 1, 2)) = "08:00";
}
# Die VMs sollen einen eigenen Adresspool bekommen:
pool {
allow members of "virtualbox";
range 192.168.1.200 192.168.1.249;
}
class "vmware"
{match if binary-to-ascii(16,8,":",
substring(hardware, 1, 2)) = "00:0c";
}
# Die VMs sollen einen eigenen Adresspool bekommen:
pool {
allow members of "vmware";
range 192.168.1.150 192.168.1.199;
}
# LAN-1
subnet 172.16.17.0 netmask 255.255.255.240 {
range 172.16.17.2 172.16.17.9;
option domain-name "fritz.box";
#option domain-name-servers 172.16.17.1;
}
# LAN-2
subnet 172.16.18.0 netmask 255.255.255.240 {
range 172.16.18.2 172.16.18.9;
option domain-name "local.zuhause";
#option domain-name-servers 172.16.18.1;
}
# WAN -> Dummy eintrag für die 3. Netzwerkkarte, besser
# cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/
# ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid <your_interface_name(s)>
# systemctl --system daemon-reload && systemctl restart dhcpd.service
#subnet 172.16.12.0 netmask 255.255.252.0 {
#}
# debian-clt-efi LAN-1
host debian-clt-efi_enp0s8 {
hardware ethernet 08:00:27:01:e8:82;
fixed-address 172.16.17.12;
}
# debian-clt-efi LAN-2
host debian-clt-efi_enp0s9 {
hardware ethernet 08:00:27:e2:b3:72;
fixed-address 172.16.18.12;
}
Firewall anpassen [Port: 67 (DHCP-Server), Proto: udp]:
firewall-cmd --permanent --zone=lan-1 --add-port=67/udp firewall-cmd --reload
Konfigurationsdatei für IPv6:
Bei DHCPv6 wird vom DHCP-Client eine Anfrage an die Multicast-Adresse geschickt. FF00::8
cp /usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example /etc/dhcp/dhcpd6.conf # Centos7 cp /usr/share/doc/dhcp-server/dhcpd6.conf.example /etc/dhcp/dhcpd6.conf # Centos8
vi /etc/dhcp/dhcpd6.conf
Zusätzlich muss bei DHCPv6 ein /64-Subnetz im LAN erstellt werden und es wird ein Router benötigt, der RAs an das LAN sendet, um Subnetz- und Routing-Informationen bereitzustellen. Diese Informationen sind nicht Teil von DHCPv6.
dhcpd6.conf:
# # DHCPv6 Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd6.conf.example # see dhcpd.conf(5) man page #
default-lease-time 2592000; preferred-lifetime 604800; option dhcp-renewal-time 3600; option dhcp-rebinding-time 7200; allow leasequery; option dhcp6.info-refresh-time 21600;
dhcpv6-lease-file-name „/var/lib/dhcpd/dhcpd6.leases“;
# LAN-1 subnet6 fd00:ac10:1100::/64 {
range6 fd00:ac10:1100::64 fd00:ac10:1100::95;
range6 fd00:ac10:1100::/64 temporary;
option dhcp6.name-servers fd00:ac10:1100::1;
option dhcp6.domain-search "fritz.box";
}
# LAN-2 subnet6 fd00:ac10:1200::/64 {
range6 fd00:ac10:1200::64 fd00:ac10:1200::95;
range6 fd00:ac10:1200::/64 temporary;
}
# Reservierung host debian-efi-ens35 {
hardware ethernet 00:0c:29:23:7f:37; fixed-address6 fd00:ac10:1200::a;
}
# Reservierung host debian-efi-ens35 {
hardware ethernet 00:0c:29:23:7f:37; fixed-address6 fd00:ac10:1200::a;
}
# Reservierung #host grml-live-enp0s9 { # hardware ethernet 00:0c:29:23:7f:37; # fixed-address6 fd00:ac10:1200::16; #} # Ende dhcpd6.conf
Firewall anpassen [Port: 547 (DHCPv6-Server), Proto: udp]:
firewall-cmd --permanent --zone=lan-1 --add-port=547/udp --add-service=dhcpv6-client firewall-cmd --reload
# fd00:ac10:1100::1 # LAN-1: enp0s8 # fd00:ac10:1100:0000:0000:0000:0000:0001 # fd00:ac10:1200::1 # LAN-2: enp0s9 # fd00:ac10:1200:0000:0000:0000:0000:0001
Überblick der Schnittstellen-Konfigurationen:
nmcli con show
Hinzufügen der IPv6-Adressen über den Network Manager interaktiv mit nmtui:
nmtui
Service-Datei /etc/systemd/system/dhcpd.service anpassen:
Kontrolle ob der Dienst schon „enabled“ ist:
systemctl is-enabled dhcpd[.service]
Wenn „enabled“, dann erstmal wieder deaktiveren:
systemctl disable dhcpd[.service]
cp /lib/systemd/system/dhcpd.service /etc/systemd/system
vi /etc/systemd/system/dhcpd.service
Inhalt der Datei dhcpd.service nach der Änderung:
[Unit] Description=DHCPv4 Server Daemon Documentation=man:dhcpd(8) man:dhcpd.conf(5) Wants=network-online.target After=network-online.target After=time-sync.target
[Service] Type=notify #ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd –no-pid # LAN-1 und LAN-2 ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd –no-pid ens34 ens35
[Install] WantedBy=multi-user.target
DHCP Server starten:
systemctl start dhcpd # IPv4 systemctl start dhcpd6 # IPv6
Auf der Client-Seite:
Anpassung der Datei /etc/dhcp/dhclient.conf:
interface „ens34“ {
send dhcp-client-identifier 00:0c:29:23:7f:2d;
}
interface „ens35“ {
send dhcp-client-identifier 1:00:0c:29:23:7f:37;
}
Dann verbundene Netzwerkadressen vom Interface lösen und neu vom DHCP-Server holen:
ip addr flush dev <interface>, z. B. ip adddr flush dev ens35 dhclient -4 -d -v <interface>, z. B. dhclient -4- -d -v ens35
Und das gleiche für IPv6 Link-Local Address (IPv6) erzeugen:
ip link set <interface> down, z. B. ip link set ens35 down ip link set <interface> up, z. B. ip link set ens35 up systemctl restart NetworkManager
dhclient -6 -d -v <interface>, z. B. dhclient -6 -d -v ens35
Router Advertisement notwendig, da sonst kein Routing über die IPv6 möglich ist:
Zusätzlich muss bei DHCPv6 ein /64-Subnetz im LAN erstellt werden und es wird ein Router benötigt, der RAs an das LAN sendet, um Subnetz- und Routing-Informationen bereitzustellen. Diese Informationen sind nicht Teil von DHCPv6.
Notwendige Pakete (Dienst) installieren:
yum install radvd -y
Konfiguration in der /etc/radvd.conf anpassen:
cd /etc cp radvd.conf radvd.conf.<JJJJMMTT> vi radvd.conf
interface ens35 {
AdvSendAdvert on;
MinRtrAdvInterval 3;
AdvOtherConfigFlag on;
MaxRtrAdvInterval 10;
prefix fd00:ac10:1200::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
RDNSS fd00:ac10:1200::1 { };
RDNSS fd00:ac10:1200::a { };
DNSSL fritz.box { };
};
raddvd Dienst starten:
systemctl enable radvd systemctl start radvd