Inhaltsverzeichnis
DHCP-Server unter Centos7
Bei DHCP wird eine Anfrage vom Client an die Broadcast-Adresse seines Netzwerks geschickt.
Genutzte Ports: 67/udp (Server)
68/UDP (Client)
Notwendige DHCP 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 10.10.10.2 10.10.10.49;
}
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 10.10.10.50 10.10.10.99;
}
# 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 für DHCP 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.
Inhalt der 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;
#}
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
Vergebene lokale IPv6-Adressen
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;
}
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
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
<WRAP center round important 100%> 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. </WRAP>
Notwendige Pakete für das Router Advertisement installieren
yum install radvd -y # Sicherheitskopie der Default.conf cp /etc/radvd.conf /etc/radvd.conf_`date +%Y%m%d%H%M`
Konfiguration in der /etc/radvd.conf anpassen
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