Benutzer-Werkzeuge

Webseiten-Werkzeuge


dhcp

Dies ist eine alte Version des Dokuments!


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
dhcp.1610574073.txt.gz · Zuletzt geändert: 2021/01/13 22:41 von mho

Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki