Jak nakonfigurovat DHCPv6 server v Linuxu

By | 16/06/2019

Jak nakonfigurovat DHCPv6 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 DHCPv6 serveru:

sudo apt-get install isc-dhcp-server

Přejít do konfigurace DHCPv6 serveru v dhcpd6.conf:

sudo vim /etc/dhcp/dhcpd6.conf

Zakomentovat option dhcp6.name-servers a option dhcp6.domain-search:

#option dhcp6.name-servers 3ffe:501:ffff:100:200:ff:fe00:3f3e;
#option dhcp6.domain-search "test.example.com","example.com";

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

subnet6 2001:cafe:cafe:cafe::/64 {
        range6 2001:cafe:cafe:cafe::100 2001:cafe:cafe:cafe::200;
        option dhcp6.name-servers 2001:4860:4860::8888, 2001:4860:4860::8844;
        option dhcp6.domain-search "martinuvzivot.cz";
}

Legenda:

subnet – definice podsítě
range6 – rozsah adres pro přidělení klientům
option dhcp6.name-servers – DNS servery
option dhcp6.domain-search – doménové jméno

Pozn 1. Výchozí bránu v podobě link-local IPv6 adresy zasílá automaticky router ve zprávě ICMPv6 RA (Router Advertisement), čili výchozí brána se nekonfiguruje.

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

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

host PC1 {
        hardware ethernet 28:D2:44:0F:41:3B;
        fixed-address6 2001:cafe:cafe:cafe::3000;
}

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

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

dhcpd -t -6

Výpis příkazu dhcpd -t -6:

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/dhcpd6.leases
PID file: /var/run/dhcpd6.pid

V některých případech se nemusí nevytvořit soubor, kde se zapisují vypůjčené IPv6 adresy a to v dhcpd6.leases. To se dá ověřit ve složce /var/lib/dhcp/dhcpd6.leases. Pokud neexistuje, vytvořit jej a změnit práva, podle návodu níže.

sudo touch /var/lib/dhcp/dhcpd6.leases
sudo chown dhcpd:dhcpd /var/lib/dhcp/dhcpd6.leases

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:

INTERFACESv6="enp0s3"

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

sudo service isc-dhcp-server6 restart

Ačkoliv se po rebootu Ubuntu serveru nenahodí DHCPv6 server automaticky, je nutné vytvořit script níže níže:

sudo vim /etc/rc.local

Do souboru rc.local dopsat:

#!/bin/bash
sleep 10
service isc-dhcp-server6 restart

Povolit práva pro spouštění

chmod 744 /etc/rc.local

Ověření DHCPv6 serveru:

sudo service isc-dhcp-server6 status

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

● isc-dhcp-server6.service - ISC DHCP IPv6 server
   Loaded: loaded (/lib/systemd/system/isc-dhcp-server6.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-06-16 14:07:02 CEST; 1min 20s ago
     Docs: man:dhcpd(8)
 Main PID: 1067 (dhcpd)
    Tasks: 1 (limit: 4662)
   CGroup: /system.slice/isc-dhcp-server6.service
           └─1067 dhcpd -user dhcpd -group dhcpd -f -6 -pf /run/dhcp-server/dhcpd6.pid -cf /etc/dhcp/dhcpd6.conf

Alternativní ověření:

ps -A | grep dhcp

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

  581 ?        00:00:00 dhcpd
  772 ?        00:00:00 dhcpd

Pokud beží navíc DHCPv4 server spolu s DHCPv6 serverem, měly by se objevit 2 procesy.

Logy:

grep "dhcp" /var/log/syslog

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

Jun 16 14:07:49 jesterka dhcpd[1067]: Solicit message from fe80::fd1d:2049:7eff:8130 port 546, transaction ID 0xDD268A00
Jun 16 14:07:49 jesterka dhcpd[1067]: Advertise NA: address 2001:cafe:cafe:cafe::3000 to client with duid 00:01:00:01:23:5f:00:54:28:d2:44:0f:41:3b iaid = 204001860 static
Jun 16 14:07:49 jesterka dhcpd[1067]: Sending Advertise to fe80::fd1d:2049:7eff:8130 port 546
Jun 16 14:07:57 jesterka dhcpd[1067]: Solicit message from fe80::fd1d:2049:7eff:8130 port 546, transaction ID 0xDD268A00
Jun 16 14:07:57 jesterka dhcpd[1067]: Advertise NA: address 2001:cafe:cafe:cafe::3000 to client with duid 00:01:00:01:23:5f:00:54:28:d2:44:0f:41:3b iaid = 204001860 static
Jun 16 14:07:57 jesterka dhcpd[1067]: Sending Advertise to fe80::fd1d:2049:7eff:8130 port 546
Jun 16 14:08:13 jesterka dhcpd[1067]: Solicit message from fe80::fd1d:2049:7eff:8130 port 546, transaction ID 0xDD268A00
Jun 16 14:08:13 jesterka dhcpd[1067]: Advertise NA: address 2001:cafe:cafe:cafe::3000 to client with duid 00:01:00:01:23:5f:00:54:28:d2:44:0f:41:3b iaid = 204001860 static
Jun 16 14:08:13 jesterka dhcpd[1067]: Sending Advertise to fe80::fd1d:2049:7eff:8130 port 546
Jun 16 14:08:45 jesterka dhcpd[1067]: Solicit message from fe80::fd1d:2049:7eff:8130 port 546, transaction ID 0xDD268A00
Jun 16 14:08:45 jesterka dhcpd[1067]: Advertise NA: address 2001:cafe:cafe:cafe::3000 to client with duid 00:01:00:01:23:5f:00:54:28:d2:44:0f:41:3b iaid = 204001860 static
Jun 16 14:08:45 jesterka dhcpd[1067]: Sending Advertise to fe80::fd1d:2049:7eff:8130 port 546
Jun 16 14:08:45 jesterka dhcpd[1067]: Request message from fe80::fd1d:2049:7eff:8130 port 546, transaction ID 0xDD268A00
Jun 16 14:08:45 jesterka dhcpd[1067]: Reply NA: address 2001:cafe:cafe:cafe::3000 to client with duid 00:01:00:01:23:5f:00:54:28:d2:44:0f:41:3b iaid = 204001860 static
Jun 16 14:08:45 jesterka dhcpd[1067]: Sending Reply to fe80::fd1d:2049:7eff:8130 port 546

Tipy:

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

1. Stopnout DHCPv6 server

sudo service isc-dhcp-server6 stop

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

sudo vim /var/lib/dhcp/dhcpd6.leases
ia-na "fl`\015\000\001\000\001#_\000T(\322D\017A;" {
  cltt 0 2019/06/16 11:30:37;
  iaaddr 2001:cafe:cafe:cafe::200 {
    binding state active;
    preferred-life 604800;
    max-life 2592000;
    ends 2 2019/07/16 11:30:37;
  }
}

3. Restart DHCPv6 serveru

sudo service isc-dhcp-server6 restart

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

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

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

2. Restartovat DHCPv6 server

sudo service isc-dhcp-server6 restart

3. Po restartu si DHCPv6 server automaticky vytvoří nový soubor dhcpd6.leases.

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

sudo dhclient -6 enp0s3

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

ip a

Výpis konfigurace ip a:

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.43/24 brd 192.168.88.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 2001:cafe:cafe:cafe::105/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 2001:cafe:cafe:cafe::11a/128 scope global dynamic noprefixroute 
       valid_lft 2591816sec preferred_lft 604616sec
    inet6 fe80::f549:9c45:434a:98f0/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

První přidělená IPv6 je nastálo (valid_lft forever preferred_lft forever). Další IPv6 je dočasná (valid_lft 2591816sec preferred_lft 604616sec).

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

WIN DHCPv6

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

ipconfig /all

Částečný výpis příkazu ipconfig /all:

Ethernet adapter Local Area Connection:

   Physical Address. . . . . . . . . : 28-D2-44-0F-41-3B
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   IPv6 Address. . . . . . . . . . . : 2001:cafe:cafe:cafe::3000(Preferred)
   Lease Obtained. . . . . . . . . . : Sunday, June 16, 2019 13:35:22
   Lease Expires . . . . . . . . . . : Tuesday, July 16, 2019 13:35:21
   Link-local IPv6 Address . . . . . : fe80::fd1d:2049:7eff:8130%12(Preferred)
   Default Gateway . . . . . . . . . : fe80::52c7:bfff:fe61:82b8%12
   DHCPv6 IAID . . . . . . . . . . . : 204001860
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-23-5F-00-54-28-D2-44-0F-41-3B

   DNS Servers . . . . . . . . . . . : 2001:4860:4860::8888
                                       2001:4860:4860::8844
   NetBIOS over Tcpip. . . . . . . . : Enabled
   Connection-specific DNS Suffix Search List :
                                       martinuvzivot.cz

Napsat komentář

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