Jak nakonfigurovat DHCP server v Linuxu

By | 10/06/2019

Jak nakonfigurovat DHCP server v Linuxu

OS:

Implementace byla prováděna na Ubuntu 18.04 LTS, postup může být aplikovatelný na Ubuntu 17.10 a nižší.

Implementace:

Aktualizace seznamu balíčků z repozitářů:

sudo apt-get update

Instalace DHCP serveru:

sudo apt-get install isc-dhcp-server

Přejít do konfigurace DHCP serveru v dhcpd.conf:

sudo vim /etc/dhcp/dhcpd.conf

Odkomentovat řetězec authoritative, pokud se jedná o oficiální DHCP server na síti:

authoritative;

Vytvořit nový DHCP pool v dhcpd.conf (příklad konfigurace byl nakopírovaný nakonec configu):

subnet 192.168.88.0 netmask 255.255.255.0 {
        range 192.168.88.10 192.168.88.29;
        range 192.168.88.40 192.168.88.99;
        option routers 192.168.88.1;
        option domain-name-servers 8.8.8.8, 8.8.4.4;
        option domain-name "martinuvzivot.cz";
        option ntp-servers 192.168.88.15;
        default-lease-time 43200;
        max-lease-time 86400;
}

Legenda:

subnet – definice podsítě
range – rozsah adres pro přidělení klietům
option routers – výchozí brána
option domain-name-servers – DNS servery
option domain-name – doménové jméno
option ntp-servers – časový server
max-lease-time – maximální doba pro vypůjčení IP adresy, které může zařízení dostat. Pokud např. zařízení požaduje 100 000 sekund a max-lease-time je nastaven na 86 400 sekund, pak dostane 86 400 sekund
default-lease-time – doba pro vypůjčení IP adresy, které zařízení dostane bez požadavku

Pozn. Další DHCP volby (options) lze najít zde: http://www.ipamworldwide.com/ipam/isc-dhcpv4-options.html

Statické mapování IP adresy na základě MAC adresy se provede také v dhcpd.conf. Příklad konfigurace:

host PC1 {
hardware ethernet 28:D2:44:0F:41:3B;
fixed-address 192.168.88.31;
}

Pozn. I přestože IP adresa 192.168.88.31 není v rozsahu adres (range) pro přidělení z příkladu výše, bude přidělena stanici 28:D2:44:0F:41:3B.

Dodatečné zabezpečení DHCP serveru dopsat do dhcpd.conf:

ddns-update-style none;
deny declines;
deny bootp;

ddns-update-style – zakázání DNS aktualizací
deny declines – zakázání DHCPDECLINE zpráv chrání před DoS útoky a zamezí kompletnímu vyčerpání DHCP poolu.
deny bootp – ignoruje všechny BOOTP žádosti a neodpovídá na BOOTP protokol

Příkaz níže otestuje chyby a syntaxi v dhcpd.conf:

dhcpd -t

Výpis příkazu dhcpd -t:

Internet Systems Consortium DHCP Server 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcp/dhcpd.leases
PID file: /var/run/dhcpd.pid

Definovat rozhraní na kterém bude DHCPv6 server naslouchat. To se ověří příkazem:

ifconfig

Výpis příkazu ifconfig:

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.88.15  netmask 255.255.255.0  broadcast 192.168.88.255
        inet6 fe80::227:eff:fe0e:c6e5  prefixlen 64  scopeid 0x20
        inet6 2001:cafe:cafe:cafe::1001  prefixlen 128  scopeid 0x0
        ether 00:27:0e:0e:c6:e5  txqueuelen 1000  (Ethernet)
        RX packets 1554  bytes 200918 (200.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1406  bytes 130131 (130.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo:     flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 198  bytes 17846 (17.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 198  bytes 17846 (17.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

V tomto případě se jedná o rozhraní enp0s3.

Definice rozhraní pro DHCPv6 server se provede v /etc/default/isc-dhcp-server:

sudo vim /etc/default/isc-dhcp-server

Do souboru isc-dhcp-server dopsat:

INTERFACESv4="enp0s3"

Aby se aplikovaly změny udělat restart DHCP služby:

sudo systemctl restart isc-dhcp-server.service

Alternativně se dá provést restart:

sudo /etc/init.d/isc-dhcp-server restart

Ačkoliv se po rebootu Ubuntu serveru nenahodí DHCP server automaticky, je nutné aplikovat příkaz níže:

sudo systemctl enable isc-dhcp-server.service

Ověření na DHCP serveru:

sudo systemctl status isc-dhcp-server

Výpis příkazu sudo systemctl status isc-dhcp-server:

â isc-dhcp-server.service - ISC DHCP IPv4 server
   Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-06-09 13:00:47 CEST; 4min 5s ago
     Docs: man:dhcpd(8)
 Main PID: 657 (dhcpd)
    Tasks: 1 (limit: 4662)
   CGroup: /system.slice/isc-dhcp-server.service
           ââ657 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf
 en 09 13:00:47 jesterka dhcpd[657]: Server starting service.un/dhcp-server/dhcpd.pid: No such file or directory.

Alternativní ověření:

ps -A | grep dhcp

Výpis příkazu ps -A | grep dhcp:

1449 ? 00:00:00 dhcpd

Seznam rezervovaných IP adres:

dhcp-lease-list

Výpis příkazu dhcp-lease-list

To get manufacturer names please download http://standards.ieee.org/regauth/oui/oui.txt to /usr/local/etc/oui.txt
Reading leases from /var/lib/dhcp/dhcpd.leases
MAC                IP              hostname       valid until         manufacturer
===============================================================================================
08:00:27:95:14:07  192.168.88.10   server1-Virtua 2019-06-10 03:04:12 -NA-

Seznam výše neobsahuje staticky mapované IP adresy k MAC adresám.

Logy:

grep "dhcp" /var/log/syslog

Výpis příkazu grep “dhcp” /var/log/syslog:

Jun  9 17:45:15 jesterka dhcpd[1488]: reuse_lease: lease age 2382 (secs) under 25% threshold, reply with unaltered, existing lease for 192.168.88.10
Jun  9 17:45:15 jesterka dhcpd[1488]: DHCPDISCOVER from 08:00:27:95:14:07 (server1-VirtualBox) via enp1s0
Jun  9 17:45:16 jesterka dhcpd[1488]: DHCPOFFER on 192.168.88.10 to 08:00:27:95:14:07 (server1-VirtualBox) via enp1s0
Jun  9 17:45:16 jesterka dhcpd[1488]: reuse_lease: lease age 2383 (secs) under 25% threshold, reply with unaltered, existing lease for 192.168.88.10
Jun  9 17:45:16 jesterka dhcpd[1488]: DHCPREQUEST for 192.168.88.10 (192.168.88.15) from 08:00:27:95:14:07 (server1-VirtualBox) via enp1s0
Jun  9 17:45:16 jesterka dhcpd[1488]: DHCPACK on 192.168.88.10 to 08:00:27:95:14:07 (server1-VirtualBox) via enp1s0
Jun  9 17:45:26 jesterka dhcpd[1488]: DHCPINFORM from 192.168.88.31 via enp1s0
Jun  9 17:45:26 jesterka dhcpd[1488]: DHCPACK to 192.168.88.31 (28:d2:44:0f:41:3b) via enp1s0

Tipy:

TIP 1: Vymazání vypůjčené adresy na DHCP serveru:

1. Stopnout DHCP server

sudo systemctl stop isc-dhcp-server.service

2. Smazání konkrétního uživatele:

sudo vim /var/lib/dhcp/dhcpd.leases
lease 192.168.88.10 {
  starts 0 2019/06/09 13:08:30;
  ends 1 2019/06/10 01:08:30;
  cltt 0 2019/06/09 13:08:30;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 58:48:22:97:94:c3;
  uid "\001XH\"\227\224\303";
  set vendor-class-identifier = "android-dhcp-6.0.1";
  client-hostname "android-5edb3c57b66f42dc";
}

3. Restart DHCP serveru

sudo systemctl restart isc-dhcp-server.service

TIP 2: Smazání všech rezervovaných adres:

1. Vymazat soubory dhcpd.leases a dhcpd.leases~:

sudo rm /var/lib/dhcp/dhcpd.leases
sudo rm /var/lib/dhcp/dhcpd.leases~

2. Restartovat DHCP server

sudo systemctl restart isc-dhcp-server.service

3. Po restartu si DHCP server automaticky vytvoří nový soubor dhcpd.leases

Test získání IP adresy v Linuxu:

sudo dhclient enp0s3

Ověření získání IP adresy:

ip a

Výpis konfigurace ip a:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:95:14:07 brd ff:ff:ff:ff:ff:ff
inet 192.168.88.10/24 brd 192.168.88.255 scope global dynamic noprefixroute enp0s3
valid_lft 37993sec preferred_lft 37993sec
inet6 fe80::f549:9c45:434a:98f0/64 scope link noprefixroute
valid_lft forever preferred_lft forever

Test získání IP adresy ve WIN:

WIN DHCP

Ověření získání IP adresy:

ipconfig /all

Výpis příkazu ipconfig /all:

Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . : martinuvzivot.cz
   Description . . . . . . . . . . . : Qualcomm Atheros AR8171/8175 PCI-E Gigabit Ethernet Controller (NDIS 6.20)
   Physical Address. . . . . . . . . : 28-D2-44-0F-41-3B
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::fd1d:2049:7eff:8130%13(Preferred)
   IPv4 Address. . . . . . . . . . . : 192.168.88.31(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : Sunday, June 09, 2019 16:57:36
   Lease Expires . . . . . . . . . . : Monday, June 10, 2019 04:59:50
   Default Gateway . . . . . . . . . : 192.168.88.1
   DHCP Server . . . . . . . . . . . : 192.168.88.15
   DHCPv6 IAID . . . . . . . . . . . : 220779076
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-23-5F-00-54-28-D2-44-0F-41-3B

   DNS Servers . . . . . . . . . . . : 8.8.8.8
                                       8.8.4.4
   NetBIOS over Tcpip. . . . . . . . : Enabled

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *