Jak nakonfigurovat DHCPv6 server v Linuxu

By | 16/06/2019

Last Updated on 01/01/2023 by administrator

Jak nakonfigurovat DHCPv6 server v Linuxu

Motivace:

Návod níže popisuje DHCPv6 Stateful konfiguraci, která umožňuje rozdávat konkretní rozsah IPv6 adres a udržovat tak jejich živostnost. Díky tomu DHCPv6 server ví, jaká IPv6 adresa byla přiřazena jakému hostiteli podobně jako tomu je u DHCPv4 serveru. Poslední sekce je věnována mým poznámkám, které vyvstaly s testováním DHCPv6 serveru a DHCPv6 klienty.

OS:

Implementace byla prováděna na Ubuntu 18.04.5 LTS, a Ubuntu 20.04.2.

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é namapování IPv6 adresy ke určitému zařízení:

Statické namapování IPv4 adresy k MAC adrese se používá u DHCPv4 serveru. Namapování IPv6 adresy k MAC adrese může či nemusí fungovat na DHCPv6 serveru. Minimálně by podle RFC3315 nemělo. Místo toho DHCPv6 používá statické namapování IPv6 adresy na DUID. Jak zjistit DHCPv6 DUID popisuje tento článek.

Statické mapování IPv6 adresy na základě DUID se provede v dhcpd6.conf. Pro definici DUID používá parametr host-identifier option dhcp6.client-id Příklad konfigurace:

host PC1 {
        host-identifier option dhcp6.client-id 00:01:00:01:25:5E:DC:FF:9C:7B:EF:69:2A:4C;
        fixed-address6 2001:cafe:cafe:cafe::3000;
}

Alternativně je také možné provést statické mapování IPv6 adresy na základě MAC adresy v dhcpd6.conf. Příklad konfigurace:

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

Pozn. I přestože IPv6 adresy 2001:cafe:cafe:cafe::3000 či 2001:cafe:cafe:cafe::4000 nejsou v rozsahu adres (range6) pro přidělení z příkladu výše, pevné přiřazení k dané stanici bude fungovat.

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:

ip a

Výpis příkazu 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 00:27:0e:0e:c6:e5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.88.15/24 brd 192.168.88.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2001:cafe:cafe:cafe::1001/128 scope global dynamic noprefixroute
       valid_lft 2588723sec preferred_lft 601523sec
    inet6 fe80::227:eff:fe0e:c6e5/64 scope link
       valid_lft forever preferred_lft forever

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 může stát, že se po rebootu Ubuntu serveru nenahodí DHCPv6 server automaticky, je možné vytvořit script, který se vloží do rc.local souboru, který slouží ke spouštění příkazů při startu systému

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 service isc-dhcp-server6 status:

● 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 dhcpd

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

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

Pokud běží 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

V dhcpd6.leases smazat celý blok:

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 na základě DUID:

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

Řešení problémů – chyby:

a) Problém “Not configured to listen on any interfaces!”:

I přes tuto hlášku by měl DHCPv6 server přidělovat IP adresy, jelikož je proces aktivní.

service isc-dhcp-server6 status

Výpis příkazu service isc-dhcp-server6 status ukazuje chybovou hlášku Not configured to listen on any interfaces!:

● isc-dhcp-server6.service - ISC DHCP IPv6 server
   Loaded: loaded (/lib/systemd/system/isc-dhcp-server6.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sun 2020-08-30 12:06:54 CEST; 2s ago
     Docs: man:dhcpd(8)
  Process: 5415 ExecStart=/bin/sh -ec      CONFIG_FILE=/etc/dhcp/dhcpd6.conf;      if [ -f /etc/ltsp/dhcpd6.conf ]; then CONFIG_FILE=/etc/ltsp/dhcpd6.conf; fi;      [ -e /var/lib/dhcp/dhcpd6.leases ] || touch /var/lib/dhcp/dhcp
 Main PID: 5415 (code=exited, status=1/FAILURE)

srp 30 12:06:54 jesterka dhcpd[5415]:
srp 30 12:06:54 jesterka dhcpd[5415]: Not configured to listen on any interfaces!
srp 30 12:06:54 jesterka dhcpd[5415]:
srp 30 12:06:54 jesterka dhcpd[5415]: If you think you have received this message due to a bug rather
srp 30 12:06:54 jesterka dhcpd[5415]: than a configuration issue please read the section on submitting
srp 30 12:06:54 jesterka dhcpd[5415]: bugs on either our web page at www.isc.org or in the README file
srp 30 12:06:54 jesterka dhcpd[5415]: before submitting a bug.  These pages explain the proper
srp 30 12:06:54 jesterka dhcpd[5415]: process and the information we find helpful for debugging..
srp 30 12:06:54 jesterka dhcpd[5415]:
srp 30 12:06:54 jesterka dhcpd[5415]: exiting.

Řešení problému:

Může se jednat o problém, kdy na rozhraní chybí nakonfigurovaná statická IPv6 adresa či subnet IPv6 adresy nekoresponduje se subnetem v dhcpd6.conf. Zda je nakonfigurovaná se zjistí příkazem níže:

ip -a

Výpis příkazu ip -a jen ukazuje, že je jen automaticky přiřazena link-local IPv6 adresa (fe80), což nestačí k tomu aby se rozjela služba DHCPv6 serveru:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:27:0e:0e:c6:e5 brd ff:ff:ff:ff:ff:ff
inet 192.168.88.15/24 brd 192.168.88.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::227:eff:fe0e:c6e5/64 scope link
valid_lft forever preferred_lft forever

Tento článek popisuje, jak IPv6 adresu nakonfigurovat.

Po konfiguraci IPv6 adresy by se měla objevit ve výpisu příkazu ip -a:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:27:0e:0e:c6:e5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.88.15/24 brd 192.168.88.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2001:cafe:cafe:cafe::2/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::227:eff:fe0e:c6e5/64 scope link
       valid_lft forever preferred_lft forever

b) Problém “isc-dhcp-server6.service: Main process exited, code=exited, status=1/FAILURE”, nebo isc-dhcp-server6.service: Failed with result ‚exit-code‘ :

Výpis hlášky lze vidět ve statusu DHCPv6 serveru:

service isc-dhcp-server6 status

Výpis příkazu service isc-dhcp-server6 status ukazuje chybové hlášky:

root@sec:~# sudo service isc-dhcp-server6 status
● isc-dhcp-server6.service - ISC DHCP IPv6 server
   Loaded: loaded (/lib/systemd/system/isc-dhcp-server6.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2021-03-05 16:56:21 CET; 3min 22s ago
     Docs: man:dhcpd(8)
  Process: 4529 ExecStart=/bin/sh -ec      CONFIG_FILE=/etc/dhcp/dhcpd6.conf;      if [ -f /etc/ltsp/dhcpd6.conf ]; then CONFIG_
 Main PID: 4529 (code=exited, status=1/FAILURE)

bře 05 16:56:21 sec sh[4529]: bugs on either our web page at www.isc.org or in the README file
bře 05 16:56:21 sec dhcpd[4529]: before submitting a bug.  These pages explain the proper
bře 05 16:56:21 sec sh[4529]: before submitting a bug.  These pages explain the proper
bře 05 16:56:21 sec dhcpd[4529]: process and the information we find helpful for debugging..
bře 05 16:56:21 sec sh[4529]: process and the information we find helpful for debugging..
bře 05 16:56:21 sec dhcpd[4529]: 
bře 05 16:56:21 sec dhcpd[4529]: exiting.
bře 05 16:56:21 sec sh[4529]: exiting.
bře 05 16:56:21 sec systemd[1]: isc-dhcp-server6.service: Main process exited, code=exited, status=1/FAILURE
bře 05 16:56:21 sec systemd[1]: isc-dhcp-server6.service: Failed with result 'exit-code'.

Všechny dhcp logy lze vidět v souboru syslog:

grep "dhcp" /var/log/syslog

Výpis příkazu grep „dhcp“ /var/log/syslog ukazuje, že není deklarovaný žádný IPv6 subnet:

Mar 5 16:46:38 sec dhcpd[4061]: No subnet6 declaration for enp0s3 (no IPv6 addresses).

Řešení problému zde

Mé poznámky:

Zde přikládám své poznámky, které vyvstaly s testováním DHCPv6 serveru a DHCPv6 klienty. Strávil jsem a kolaboroval s nimi docela dlouhou dobu.

DHCPv6 server (isc-dhcp-server6) mi běží na Ubuntu 20.04.2 a Ubuntu 18.04.5 (v době psaní toho článku nejnovější aktualizace)

Testoval jsem tyto DHCPv6 klienty:

  • Xiaomi Redmia 6A (MIUI 11.0.8.0, verze Androidu 9 PPR1.180610.011)
  • Xiaomi 9 Lite (MIUI 10.3.4.0, verze Androidu 9 PKQ1.181121.001)
  • Notebook HP 250 G7 6BP25EA (Windows 10 Pro, version 2004, OS Build 19041.804)
    • LAN – Intel(R) Ethernet Connection (4) I219-LM, verze ovladače 12.17.10.8
    • WLAN – Intel(R) Dual Band Wireless-AC 8265, verze ovladače 20.70.19.1
  • Notebook Lenovo IdeaPad Y510p (Windows 10 Pro, version 1709, OS Build 16299.98)
    • LAN – Qualcomm Atheros AR8171/8175 PCI-E Gigabit Ethernet Controller (NDIS 6.30), verze ovladače 2.1.0.16
    • WLAN – Intel(R) Centrino(R) Wireless-N 2230), verze ovladače 15.16.0.2

Níže popisuji mé poznatky, které tedy vyvstaly na Ubuntu 18.04.5 a Ubuntu 20.04.2:

  • Je důležité provést nejnovější aktualizaci na Ubuntu 18 a 20 (nebyl problém na Ubuntu 20.04.2 a Ubuntu 18.04.5), jelikož nižší verze Ubuntu mi dělaly problémy (původně jsem si myslel, že hlavní problém byl v koncových DHCPv6 klientech a jejich ovladačích)
  • osvědčilo se mi nepoužívat RADVD, protože pro mobilní zařízení (Xiaomi Redmia 6A a Xiaomi 9 Lite) dělal problémy – díky RADVD se u obou Xiaomi mobilu stále připojovala a odpojovala wifina, což nechceme (pro info instalace RADVD se provede apt install radvd)
  • DHCPv6 server bez RADVD mě bez problému přiřadil na LAN i WLAN obou uvedených noťasů IPv6 z DHCPv6 serveru, Xiaomi Redmia 6A dostala také IPv6 adresu z DHCPv6 serveru, Xiaomi 9 Lite se starší verzi MIUI nedostala žádnou IPv6 adresu z DHCPv6 serveru (tady jde vidět to, že starší verze MIUI nejsou plné připraveny na podporu IPv6)
  • Je sice pravda, že díky RADVD si koncové zařízení ze zasílaného IPv6 prefixu v RA zprávě vytvoří svou unikátní IPv6 adresu, ale nevidím k tomu důvod, když všechna koncová zařízení (tedy pomiňme Xiaomi 9 Lite se starší verzi MIUI), dostávají úspěšné IPv6 adresu z DHCPv6 serveru

Poznámky se statickému mapování IPv6:

  • Na DHCPv6 serveru bylo vyzkoušeno statické namapování IPv6 na MAC adresu koncového zařízení. Pro LAN i WLAN obou noťasů toto statické namapování na základě MAC adresy nefungovalo, a tak bylo potřebné nastavit statické mapovaní IPv6 adresy na základě DUID, což pro LAN i WLAN obou noťasů fungovalo. Důležitá poznámka je ta, že DUID je stejné pro všechny síťové adaptéry dané stanice, tudíž IPv6 na základě DUID se přiřadí jen jednomu síťovému rozhraní! Vždy by to mělo být to rozhraní, které nejdříve zašle žádost na DHCPv6 server. Jak zjistit DHCPv6 DUID popisuje tento článek.
  • V současné situaci mi není známo, jak vyhledat DUID na Android zařízeních, čili bylo vyzkoušeno statické mapovaní IPv6 adresy k MAC adrese, které fungovalo na Xiaomi Redmia 6A (novější verze MIUI), ale nefungovalo na Xiaomi 9 Lite (starší verze MIUI), což bylo očekávané.

Dobrovolný dar

Ahoj čtenáři, rád bych tě poprosil aby ses zamyslel, co je vše potřeba ke vzniku článku.
Jakožto amatérský softwarový kutil musím:

1) Nejdříve vše nastudovat v cizích jazycích.
2) Vše následně prakticky vyzkoušet.
3) Svoje poznatky a zkušenosti napsat do článku který si právě přečetl v jazyku kterému rozumíš.
4) Dát článku hlavu a patu a publikovat.

Každý článek zabere několik hodin práce, za kterou mi nikdo neplatí.
Prosím zvaž, kolik času jsem ti právě ušetřil.
Pokud ti to stojí aspoň za cenu jedné kávy, tak mi ji kup.
Předem moc děkuji.

Příspěvek tak můžeš provést zasláním libovolné částky na mé číslo účtu 1558701011/3030 Nebo můžeš dar poslat kliknutím na tento odkaz Podpořit tento WEB , který tě přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu také používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

6 thoughts on “Jak nakonfigurovat DHCPv6 server v Linuxu

  1. Pavel Šimůnek

    Pokouším se to rozjet na Debianu 10. Bohužel potřebuji aby mi tam souběžně přiděloval i IPV4 adresy. IPV4 běží v pohodě, nicméně IPV6 ne. Někde jsem četl, že standardně neumí běžet IPV4 a IPV6 souběžně. A není ještě potřeba mít na serveru rozjetý nějaký RA nástroj, jako např. RADVD?

    Reply
    1. administrator Post author

      Zdravim,

      Konkretne s rozjetim DHCP na Debianu nemam zkusenosti. Nicmene pod Ubuntu 18.04 bezi oba DHCPv4 a DHCPv6 servery a bez problemu zaroven a dostavam z obou IP adresy

      root@jesterka:~# service isc-dhcp-server status
      ● 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 Mon 2020-08-10 18:32:43 CEST; 3min 7s ago
      Docs: man:dhcpd(8)
      Main PID: 1625 (dhcpd)
      Tasks: 1 (limit: 2319)
      CGroup: /system.slice/isc-dhcp-server.service
      └─1625 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf

      srp 10 18:32:43 jesterka sh[1625]: Wrote 39 leases to leases file.
      srp 10 18:32:43 jesterka dhcpd[1625]: Listening on LPF/eth0/00:27:0e:0e:c6:e5/192.168.88.0/24
      srp 10 18:32:43 jesterka sh[1625]: Listening on LPF/eth0/00:27:0e:0e:c6:e5/192.168.88.0/24
      srp 10 18:32:43 jesterka sh[1625]: Sending on LPF/eth0/00:27:0e:0e:c6:e5/192.168.88.0/24
      srp 10 18:32:43 jesterka sh[1625]: Sending on Socket/fallback/fallback-net
      srp 10 18:32:43 jesterka dhcpd[1625]: Sending on LPF/eth0/00:27:0e:0e:c6:e5/192.168.88.0/24
      srp 10 18:32:43 jesterka dhcpd[1625]: Sending on Socket/fallback/fallback-net
      srp 10 18:32:43 jesterka dhcpd[1625]: Server starting service.
      srp 10 18:35:20 jesterka dhcpd[1625]: DHCPREQUEST for 192.168.88.30 from 28:d2:44:0f:41:3b via eth0
      srp 10 18:35:20 jesterka dhcpd[1625]: DHCPACK on 192.168.88.30 to 28:d2:44:0f:41:3b via eth0

      root@jesterka:~# service isc-dhcp-server6 status
      ● 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 Mon 2020-08-10 18:32:27 CEST; 3min 26s ago
      Docs: man:dhcpd(8)
      Main PID: 1616 (dhcpd)
      Tasks: 1 (limit: 2319)
      CGroup: /system.slice/isc-dhcp-server6.service
      └─1616 dhcpd -user dhcpd -group dhcpd -f -6 -pf /run/dhcp-server/dhcpd6.pid -cf /etc/dhcp/dhcpd6.conf

      srp 10 18:32:27 jesterka dhcpd[1616]: Listening on Socket/5/eth0/2001:cafe:cafe:cafe::/64
      srp 10 18:32:27 jesterka dhcpd[1616]: Sending on Socket/5/eth0/2001:cafe:cafe:cafe::/64
      srp 10 18:32:27 jesterka dhcpd[1616]: Server starting service.
      srp 10 18:35:15 jesterka dhcpd[1616]: Solicit message from fe80::2c39:5b1f:1a96:2042 port 546, transaction ID 0x6F46C000
      srp 10 18:35:15 jesterka dhcpd[1616]: Picking pool address 2001:cafe:cafe:cafe::200
      srp 10 18:35:15 jesterka dhcpd[1616]: Advertise NA: address 2001:cafe:cafe:cafe::200 to client with duid 00:01:00:01:25:5f:cc:c2:28:d2:44:0f:41:3b iaid = 153670212 valid for 2592000 seconds
      srp 10 18:35:15 jesterka dhcpd[1616]: Sending Advertise to fe80::2c39:5b1f:1a96:2042 port 546
      srp 10 18:35:16 jesterka dhcpd[1616]: Request message from fe80::2c39:5b1f:1a96:2042 port 546, transaction ID 0x6F46C000
      srp 10 18:35:16 jesterka dhcpd[1616]: Reply NA: address 2001:cafe:cafe:cafe::200 to client with duid 00:01:00:01:25:5f:cc:c2:28:d2:44:0f:41:3b iaid = 153670212 valid for 2592000 seconds
      srp 10 18:35:16 jesterka dhcpd[1616]: Sending Reply to fe80::2c39:5b1f:1a96:2042 port 546

      Reply
    2. administrator Post author

      Zdravim,
      jeste me napada, takova malickost, presto se na to muze zapomenout, nebot IPv6 adresy jsou i automaticky generovany.
      Je fajn se mrknout se na „ip -a“ zda je konfigurovaná staticky IPv6 adresa na rozhraní. Totiz jinak me DHCPv6 hazel hlasku “Not configured to listen on any interfaces!”
      Ted jsem k tomuto clanek pridal popis chyby a reseni. Treba se bude hodit.
      Diky

      Reply
  2. Marek Zettík

    Ahoj, pěkný článek. Řeším však problém s přidělováním IPv6 dle MAC adresy…
    Na notebooku s Ubuntu 16.04 i Live 20.04 (jiný NB) dostávám IP jen z range, nikoli fixní, byť je nastavená, skrze WiFi. Notebook navíc, když změním range na serveru, tak po aktualizaci WiFi (Ubuntu 16.04) dostanu novou adresu, ale opět z range a nikoli fixní a navíc zůstává i adresa z původního range.
    Tablet (Acer) s Androidem dostává fixní IP, i když změním definici a restartuji dhcpd, tak po obnovení Wifi se přidělí nové IP dle configu. Ale třeba telefon Xiaomi Remi Note 8T nedostane IPv6 vůbec, leč má link adresu fe80:….
    IPv4 je všude ok.
    radvd mám nahozený, abych vysílal i routy
    dhcpd tedy IPv6 posílá, ale každému jinak. Už nevím, co hledat po několika dnech laborování 🙁
    Děkuji za připadnou radu, kde se podívat.

    Reply
    1. administrator Post author

      Zdravím Marku,

      omlouvám se za pozdní odpověď. přiznám se, že tuto problematiku jsem řešil jen u svého Lenovo laptopu kde fixní přiřazení IPv6 adresy mohlo i nemuselo být v rozsahu IPv6 adres.

      Úplně běžná věc jen co mě napadá (a pravděpodobně jste ji již zkoušel), je aktualizovat drivery na Vašem notebooku či zkusit stáhnout nejnovější aktualizaci pro Xiaomi Remi Note 8T.

      Pokud bych měl tento týden čas, zkusil bych rozjet DHCPv6 server a odzkoušet to také na mé Xiaomi Mi 9 Lite, případně i na HP notebooku.

      Martin

      Reply
    2. administrator Post author

      Zdravim jeste jednou, taky jsem s tim kolaboroval nekolik dni ale nakonec jsem se dopidil k nekolika vecem, postupne se rozepisu:

      DHCPv6 server mam rozjety na Ubuntu 20.04 (nejnovejsi aktualizace)
      Testoval jsem dhcpv6 clienty:
      Xiaomi Redmia 6A,
      Xiaomi 9 Lite
      Notebook HP 250 G7 6BP25EA
      Notebook Lenovo IdeaPad Y510p 59367287

      Puvodne bez instalace radvd dostavaly IPv6 adresu jen Notasy na ethernetu (wired connection) a to i fixni. Wireless sitovky obou notasu dostavaly jen DNS IPv6 servery. Xiaomi vubec nic.

      Nainstaloval jsem radvd a vsechni dhcpv6 klienti uvedeni vyse diky radvd dostaly IPv6 adresu, ale porad byl problem s fixni IPv6.

      Jeste jsem dokonfiguroval do /etc/radvd.conf toto:

      AdvManagedFlag on; //dhcpv6 klient byl mel dostat IPv6 adresu z DHCP serveru
      AdvOtherConfigFlag on; //diky tomu je zaruceno ze dhcpv6 klient ziska napr. DNS server z DHCP serveru

      cely config vypada v /etc/radvd.conf takto:

      interface enp2s0
      {
      AdvSendAdvert on;
      AdvManagedFlag on;
      AdvOtherConfigFlag on;
      MinRtrAdvInterval 30;
      MaxRtrAdvInterval 100;
      prefix 2001:cafe:cafe:cafe::/64
      {
      AdvOnLink on;
      AdvAutonomous on;
      AdvRouterAddr off;
      };

      };

      Binding IP adresy k MAC adrese se pouziva u DHCPv4 serveru, a muze ci nemusi fungovat u DHCPv6 serveru.
      Pisou ze Staticke mapovani IPv6 k MAC funguje ale neni to podle RFC3315, takze pravdepodobne zalezi na sitovem driveru jako ho maji vyrobci napsany.
      zdroj: https://indico.cern.ch/event/251056/contributions/1576406/attachments/436305/605467/dhcpv6.pdf

      A tedka korekni reseni:
      Pro vytvoreni fixni IP adresy je potreba pouzit DUID stanice.

      vice info:
      Static IP DUID Mapping
      If you want to assign specific IP addresses to some or all clients permanently, you can define static DUID address-to-IP address mappings. To define DUID-IP mapping, you should know the DHCP Unique Identifier (DUID) of the client. The DUID address is usually specified in groups of two hexadecimal digits separated by colons. ze zdroje https://docs.sophos.com/nsg/sophos-firewall/v17.0.0/Help/en-us/webhelp/onlinehelp/index.html#page/onlinehelp/DHCPServerEdit_IPv6.html

      DUID je tedy DHCP Unique Identifier – pri vymene sitovky se DUID nemeni, DUID se meni jen pro reinstalaci OS
      zdroj: https://indico.cern.ch/event/251056/contributions/1576406/attachments/436305/605467/dhcpv6.pdf

      DUID se da zjistit vypisem „ipconfig /all“

      DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-25-5F-CC-C2-28-D2-44-0F-41-3B

      samotny zapis v dhcpv6.conf pak vypada takto:

      host PCworklan {
      host-identifier option dhcp6.client-id 00:01:00:01:25:5E:DC:FF:9C:7B:EF:69:2A:4C;
      fixed-address6 2001:cafe:cafe:cafe::9000;
      }

      host PClenovo {
      host-identifier option dhcp6.client-id 00:01:00:01:25:5F:CC:C2:28:D2:44:0F:41:3B;
      fixed-address6 2001:cafe:cafe:cafe::a000;
      }

      Pokud si vsimnete, tak wired i wireless sitovka ma uplne stejne DUID.
      Predpokladam ze identifikator odliseni sitovem bude pomoci DHCPv6 IAID, coz je taky ukazano ve vypisu „ipconfig /all“, nicmene zatim jsem neprisel jakym zpusobem identifikovat v dhcpv6.conf zvlast fixni IPv6 pro wired a wireless sitovku.

      Hledal jsem po netu ale stale se nemohu dopidit jak zjistit DUID mobilnich telefonu.

      po zapsani do configu se mi oplatilo aplikovat na Windowsu pod administratorem v CMD:

      ipconfig /release6
      ipconfig /renew6

      Taky jsem s tim kolaboroval nekolik dni, snad jsem Vam trosku pomohl.

      Martin

      Reply

Napsat komentář

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