Activitats

Identificació dels RFC relatius al protocol DHCP

L’objectiu d’aquesta activitat és familiaritzar-se amb el format de documents RFC, que descriuen els estàndards d’Internet, i aprendre a navegar per l’estructura de documentació de l’IETF.

  1. Descarregueu de l’IETF els RFC corresponents al protocol DHCP i al conjunt d’opcions definibles.
  2. Localitzeu i descarregueu l’RFC corresponent al DHCP dinàmic.

  1. Els principals RFC dedicats al protocol DHCP són:
    • RFC 2131. Març 1997. Dynamic Host Configuration Protocol.
    • RFC 2132. DHCP Options and BOOTP Vendor Extensions.
    • RFC 3396. Encoding Long Options in the Dynamic Host Configuration Protocol (DHCPv4).
    • RFC 4361. Node-specific Client Identifiers for Dynamic Host Configuration Protocol Version Four (DHCPv4).
    • RFC 3315. Dynamic Host Configuration Protocol for Ipv6 (DHCPv6).
      • Actualitzat per RFC 8415. Dynamic Host Configuration Protocol for IPv6 (DHCPv6).
  2. Aquests documents es poden trobar a la web de l’Internet Engineering Task Force (IETF) que gestiona els estàndards d’Internet. La majoria estan en el format https://tools.ietf.org/html/rfcXXXX, on XXXX és el número de RFC.

Funcionament del protocol DHCP

L’objectiu d’aquesta activitat és comprendre el funcionament general del protocol DHCP.

  1. Feu la llista dels ports usats pel protocol DHCP observant el fitxer de ports d’un sistema GNU/Linux (usualment, /etc/services).
  2. Monitoreu el trànsit de xarxa d’una petició DHCP utilitzant una eina tipus Wireshark.

1. Llista dels ports. Tot seguit mostrem una llista dels ports que inclouen alguna referència DHCP:

[root@portatil ~]# cat /etc/services | grep DHCP 
bootpc          68/tcp          dhcpc           # BOOTP client 
bootpc          68/udp          dhcpc 
dhcpv6-client   546/tcp 
dhcpv6-client   546/udp 
dhcpv6-server   547/tcp 
dhcpv6-server   547/udp 
dhcp-failover   647/tcp                         # DHCP Failover 
dhcp-failover   647/udp                         # DHCP Failover 
dhcp-failover2  847/tcp                         # dhcp-failover 2 
dhcp-failover2  847/udp                         # dhcp-failover 2 
qip-qdhcp       2490/tcp                        # qip_qdhcp 
qip-qdhcp       2490/udp                        # qip_qdhcp

De fet, el protocol DHCP s’anomena BOOTP. Les entrades corresponents a aquest protocol són les següents:

[root@portatil ~]# cat /etc/services | grep bootp 
bootps          67/tcp                          # BOOTP server 
bootps          67/udp 
bootpc          68/tcp          dhcpc           # BOOTP client 
bootpc          68/udp          dhcpc 
nuts_bootp      4133/tcp                        # NUTS Bootp Server 
nuts_bootp      4133/udp                        # NUTS Bootp Server

El client utilitza el port 68 (bootpc) i el servidor, el port 67 (bootps).

2. Monitorització del servidor. Per monitorar el trànsit de xarxa es pot utilitzar un detector (sniffer) de xarxa. Per exemple, el Wireshark. Podeu fer que el client sol·liciti una nova configuració al servidor utilitzant el programa client dhclient:

jciberta@IOC:~$ sudo dhclient -v
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp0s3/08:00:27:f8:f9:29
Sending on   LPF/enp0s3/08:00:27:f8:f9:29
Sending on   Socket/fallback 
DHCPDISCOVER on enp0s3 to 255.255.255.255 port 67 interval 8 
DHCPOFFER from 192.168.1.1 
DHCPREQUEST on enp0s3 to 255.255.255.255 port 67 
DHCPACK from 192.168.1.1 
bound to 192.168.1.34 -- renewal in 33747 seconds. 

Podeu manipular vosaltres mateixos la captura del trànsit DHCP mostrada en la imatge, carregant el fitxer de captura del Wireshark, descarregant el fitxer següent:

A continuació, podeu observar la llista de text de les quatre trames capturades amb el Wireshark (s’han exportat en format text):

No.     Time   Source    Destination      Protocol Info
  1 0.000000   0.0.0.0   255.255.255.255   DHCP     DHCP Discover-Transaction ID0x8a1327b2

Frame 1 (590 bytes on wire, 590 bytes captured)
Ethernet II, Src: CadmusCo_b2:8b:ec (08:00:27:b2:8b:ec), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Internet Protocol, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
Bootstrap Protocol
    Message type: Boot Request (1)
    Hardware type: Ethernet
    Hardware address length: 6
    Hops: 0
    Transaction ID: 0x8a1327b2
    Seconds elapsed: 0
    Bootp flags: 0x0000 (Unicast)
    Client IP address: 0.0.0.0 (0.0.0.0)
    Your (client) IP address: 0.0.0.0 (0.0.0.0)
    Next server IP address: 0.0.0.0 (0.0.0.0)
    Relay agent IP address: 0.0.0.0 (0.0.0.0)
    Client MAC address: CadmusCo_b2:8b:ec (08:00:27:b2:8b:ec)
    Server host name not given
    Boot file name not given
    Option: (t=53,l=1) DHCP Message Type = DHCP Discover
    Option: (t=57,l=2) Maximum DHCP Message Size = 548
    Option: (t=55,l=11) Parameter Request List
    Option: (t=12,l=4) Host Name = "box"
    Option: (t=51,l=4) IP Address Lease Time = 12 hours
    End Option
    Padding
No.     Time   Source         Destination     Protocol Info
  2 0.000351   192.168.1.34   192.168.1.254   DHCP     DHCP Offer-Transaction ID0x8a1327b2

Frame 2 (342 bytes on wire, 342 bytes captured)
Ethernet II, Src: AsustekC_15:80:7e (00:17:31:15:80:7e), Dst: CadmusCo_b2:8b:ec (08:00:27:b2:8b:ec)
Internet Protocol, Src: 192.168.1.34 (192.168.1.34), Dst: 192.168.1.254 (192.168.1.254)
User Datagram Protocol, Src Port: bootps (67), Dst Port: bootpc (68)
Bootstrap Protocol
    Message type: Boot Reply (2)
    Hardware type: Ethernet
    Hardware address length: 6
    Hops: 0
    Transaction ID: 0x8a1327b2
    Seconds elapsed: 0
    Bootp flags: 0x0000 (Unicast)
    Client IP address: 0.0.0.0 (0.0.0.0)
    Your (client) IP address: 192.168.1.254 (192.168.1.254)
    Next server IP address: 0.0.0.0 (0.0.0.0)
    Relay agent IP address: 0.0.0.0 (0.0.0.0)
    Client MAC address: CadmusCo_b2:8b:ec (08:00:27:b2:8b:ec)
    Server host name not given
    Boot file name not given
    Option: (t=53,l=1) DHCP Message Type = DHCP Offer
    Option: (t=54,l=4) Server Identifier = 192.168.1.34
    Option: (t=51,l=4) IP Address Lease Time = 12 hours
    Option: (t=1,l=4) Subnet Mask = 255.255.255.0
    Option: (t=3,l=4) Router = 192.168.1.1
    Option: (t=6,l=4) Domain Name Server = 192.168.1.1
    Option: (t=15,l=11) Domain Name = "domain.org"
    End Option
    Padding
No.     Time   Source     Destination       Protocol Info
  3 0.009004   0.0.0.0    255.255.255.255   DHCP     DHCP Request-Transaction ID0x8b1327b2

Frame 3 (590 bytes on wire, 590 bytes captured)
Ethernet II, Src: CadmusCo_b2:8b:ec (08:00:27:b2:8b:ec), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Internet Protocol, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
Bootstrap Protocol
    Message type: Boot Request (1)
    Hardware type: Ethernet
    Hardware address length: 6
    Hops: 0
    Transaction ID: 0x8b1327b2
    Seconds elapsed: 0
    Bootp flags: 0x0000 (Unicast)
    Client IP address: 0.0.0.0 (0.0.0.0)
    Your (client) IP address: 0.0.0.0 (0.0.0.0)
    Next server IP address: 0.0.0.0 (0.0.0.0)
    Relay agent IP address: 0.0.0.0 (0.0.0.0)
    Client MAC address: CadmusCo_b2:8b:ec (08:00:27:b2:8b:ec)
    Server host name not given
    Boot file name not given
    Option: (t=53,l=1) DHCP Message Type = DHCP Request
    Option: (t=57,l=2) Maximum DHCP Message Size = 548
    Option: (t=55,l=11) Parameter Request List
    Option: (t=12,l=4) Host Name = "box"
    Option: (t=51,l=4) IP Address Lease Time = 12 hours
    Option: (t=54,l=4) Server Identifier = 192.168.1.34
    Option: (t=50,l=4) Requested IP Address = 192.168.1.254
    End Option
    Padding
No.     Time        Source   Destination       Protocol Info
  4 0.010712   192.168.1.1   255.255.255.255   DHCP     DHCP NAK-Transaction ID0 x8b1327b2

Frame 4 (342 bytes on wire, 342 bytes captured)
Ethernet II, Src: XaviTech_7b:ff:1d (00:01:38:7b:ff:1d), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Internet Protocol, Src: 192.168.1.1 (192.168.1.1), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootps (67), Dst Port: bootpc (68)
Bootstrap Protocol
    Message type: Boot Reply (2)
    Hardware type: Ethernet
    Hardware address length: 6
    Hops: 0
    Transaction ID: 0x8b1327b2
    Seconds elapsed: 0
    Bootp flags: 0x8000 (Broadcast)
    Client IP address: 0.0.0.0 (0.0.0.0)
    Your (client) IP address: 0.0.0.0 (0.0.0.0)
    Next server IP address: 192.168.1.1 (192.168.1.1)
    Relay agent IP address: 0.0.0.0 (0.0.0.0)
    Client MAC address: CadmusCo_b2:8b:ec (08:00:27:b2:8b:ec)
    Server host name not given
    Boot file name not given
    Option: (t=53,l=1) DHCP Message Type = DHCP NAK
    Option: (t=56,l=31) Message = "requested address not available"
    End Option
    Padding

Si voleu, també podeu monitorar el trànsit DHCP d’exemple de captura que conté el fitxer següent:

En aquesta captura hi ha dos servidors DHCP diferents en la xarxa i es poden observar paquets NACK.

Trobareu una descripció detallada d’aquest llistat a l’apartat “Comprovació el funcionament” d’aquest mòdul.

Funcionament del client DHCP

L’objectiu d’aquesta activitat és treballar amb un client DHCP.

  1. Feu la llista de la configuració de xarxa actual.
  2. Comproveu l’estat del servei de xarxa, activeu-lo i desactiveu-lo.
  3. Configureu el client per rebre adreces IP dinàmiques per DHCP (activar i desactivar el client DHCP).
  4. Renegocieu una nova adreça IP al servidor DHCP.
  5. Observeu la llista del fitxer de registre de les concessions rebudes.

1. Per a la llista de la configuració de xarxa actual, feu la configuració de les interfícies ethernet i observeu quines estan configurades i quines no:

jciberta@IOC:~$ ip address show
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:f8:f9:29 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.5/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::b23:ba2c:b4d7:4d3/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
jciberta@IOC:~$ 

Mireu quines rutes hi ha definides:

jciberta@IOC:~$ ip route show
default via 192.168.0.1 dev enp0s3 
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.199 
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.199 metric 100 
jciberta@IOC:~$ 

2. Amb l’ordre ifconfig podeu observar quines interfícies de xarxa hi ha actives (en funcionament):

jciberta@IOC:~$ ifconfig
enp0s3: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.0.5 netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::b23:ba2c:b4d7:4d3  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:f8:f9:29  txqueuelen 1000  (Ethernet)
        RX packets 206  bytes 209510 (209.5 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 400  bytes 44830 (44.8 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<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 425  bytes 42380 (42.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 425  bytes 42380 (42.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Si voleu veure totes les interfícies de xarxa, independentment del seu estat:

[root@pc]# ifconfig -a

Per administrar l’estat del servei de xarxa cal utilitzar l’script corresponent, que a vegades pot variar de nomenclatura. En un sistema Debian sol ser:

jciberta@IOC:~$ sudo service networking
Usage: /etc/init.d/networking {start|stop|reload|restart|force-reload}
jciberta@IOC:~$ sudo service networking stop
jciberta@IOC:~$ sudo service networking start
jciberta@IOC:~$ sudo service networking status
● networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
   Active: active (exited) since Thu 2020-07-02 13:10:14 CEST; 5s ago
     Docs: man:interfaces(5)
  Process: 4239 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=0/SUCCESS)
 Main PID: 4239 (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 1138)
   Memory: 2.2M
   CGroup: /system.slice/networking.service
           └─4265 /sbin/dhclient -4 -v -i -pf /run/dhclient.enp0s3.pid -lf /var/lib/dhcp/dhclient.enp0s3.leases -I -df /var/lib/dhcp/dhclient6.enp

3. Per configurar el client per rebre adreces IP dinàmiques per DHCP es pot editar directament el fitxer de configuració de les interfícies /etc/network/interfaces i establir els valors. La interfície loopback es configura de forma especial i la interfície enp0s3 per mitjà de dhcp:

jciberta@IOC:~$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto enp0s3
iface enp0s3 inet dhcp

Cal guardar la configuració i reiniciar els serveis de xarxa:

jciberta@IOC:~$ sudo service networking restart

4. El client DHCP pot alliberar l’adreça que utilitza quan ho consideri pertinent. Si se li acaba la concessió, ha de tornar a negociar una adreça i sempre en pot tornar a sol·licitar una altra.

Per alliberar una adreça que està en ús, el client pot fer el següent:

jciberta@IOC:~$ sudo dhclient enp0s3 -r -v
Killed old client process
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp0s3/08:00:27:f8:f9:29
Sending on   LPF/enp0s3/08:00:27:f8:f9:29
Sending on   Socket/fallback
DHCPRELEASE on enp0s3 to 192.168.0.1 port 67 (xid=0x7cb29871)
jciberta@IOC:~$ 

I per tornar a sol·licitar una adreça per a la interfície enp0s3 ha de fer:

jciberta@IOC:~$ sudo dhclient enp0s3 -v
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp0s3/08:00:27:f8:f9:29
Sending on   LPF/enp0s3/08:00:27:f8:f9:29
Sending on   Socket/fallback
DHCPDISCOVER on enp0s3 to 255.255.255.255 port 67 interval 3 (xid=0xa20a478)
DHCPREQUEST of 192.168.0.199 on enp0s3 to 255.255.255.255 port 67 (xid=0x78a4200a)
DHCPOFFER of 192.168.0.199 from 192.168.0.1
DHCPACK of 192.168.0.199 from 192.168.0.1
bound to 192.168.0.199 -- renewal in 3468 seconds.
jciberta@IOC:~$

5. El client DHCP porta un registre de les concessions (leases) rebudes. D’aquesta manera pot tornar a demanar una concessió abans que expiri l’actual. Les concessions es desen en un fitxer de text anomenat /var/lib/dhcp/dhclient.leases.

jciberta@IOC:~$ cat /var/lib/dhcp/dhclient.leases 
lease {
  interface "enp0s3";
  fixed-address 192.168.0.199;
  option subnet-mask 255.255.255.0;
  option dhcp-lease-time 7200;
  option routers 192.168.0.1;
  option dhcp-message-type 5;
  option dhcp-server-identifier 192.168.0.1;
  option domain-name-servers 8.8.8.8;
  renew 4 1970/01/01 00:00:00;
  rebind 4 2020/07/02 12:42:34;
  expire 4 2020/07/02 12:57:34;
}

Instal·lació i configuració del servei DHCP en el sistema operatiu Linux

L’objectiu d’aquesta activitat és aprendre a instal·lar i configurar un servidor DHCP en un sistema operatiu Linux Debian.

Partiu de l’esquema següent:

Figura Esquema de la xarxa

Feu les tasques necessàries per configurar automàticament les següents opcions:

  1. Instal·leu el servidor i obteniu dades de la instal·lació.
  2. Comproveu l’estat del servei.
  3. Realitzeu la següent configuració bàsica:
    • Configureu l’interval de l’esquema per tal que doni només IP i màscara. Rangs: del 150 al 159 (4t byte de la IP).
    • Verifiqueu el funcionament amb el client.
    • Des del servidor, mostreu les adreces concedides.
  4. Realitzeu la següent configuració avançada:
    • Que la concessió de l’adreça IP per defecte sigui 2 hores.
    • Que la concessió de l’adreça IP màxima sigui de 20 hores.
    • Que l’encaminador (router) per defecte sigui amb l’adreça IP: 192.168.0.1
    • Que la màscara per defecte sigui: 255.255.255.0.
    • Que l’adreça de difusió (broadcast) sigui: 192.168.0.255.
    • Que el servidor de noms per defecte sigui: 8.8.8.8.
    • Que el client de proves tingui l’adreça IP fixa: 192.168.0.199 en funció de la seva adreça MAC.
    • Cal comprovar al client que s’ha atorgat la IP, màscara, porta d’enllaç i DNS correctament des de la línia d’ordres.

1. Instal·lació del servidor. Per a la instal·lació del servidor, primer cal esbrinar el nom del paquet. Es pot fer de diverses maneres, però la idea bàsica es filtrar per les paraules clau dhcp i server.

Una manera és mirant el noms dels paquets:

root@server:~# apt-cache pkgnames | grep dhcp | grep server
wide-dhcpv6-server
isc-dhcp-server
isc-dhcp-server-ldap
root@server:~# 

També es pot fer variant algun paràmetre per obtenir més informació:

root@server:~# apt-cache search dhcp --names-only | grep server
udhcpd - Provides the busybox DHCP server implementation
dhcp-probe - network DHCP or BootP server discover
dhcpy6d - MAC address aware DHCPv6 server written in Python
freeradius-dhcp - DHCP module for FreeRADIUS server
isc-dhcp-dev - API for accessing and modifying the DHCP server and client state
isc-dhcp-server - ISC DHCP server for automatic IP address assignment
isc-dhcp-server-ldap - DHCP server that uses LDAP as its backend
python-pydhcplib - Python DHCP client/server library
librust-dhcp4r-dev - IPv4 DHCP library with working server example - Rust source code
wide-dhcpv6-server - DHCPv6 server for automatic IPv6 hosts configuration
root@server:~# 

En tots dos casos veureu que el nom del paquet és isc-dhcp-server, ja que Internet Systems Consortium (ISC) és l’organisme que s’encarrega del desenvolupament d’aquest servidor.

Instal·leu el servidor:

root@server:~# apt-get install isc-dhcp-server
S'està llegint la llista de paquets… Fet 
S'està construint l'arbre de dependències       
S'està llegint la informació de l'estat… Fet
S'instal·laran els següents paquets extres:
  libirs-export161 libisccfg-export163 policycoreutils selinux-utils
Paquets suggerits:
  isc-dhcp-server-ldap
S'instal·laran els paquets NOUS següents:
  isc-dhcp-server libirs-export161 libisccfg-export163 policycoreutils selinux-utils
0 actualitzats, 5 nous a instal·lar, 0 a suprimir i 0 no actualitzats.
S'ha d'obtenir 1615 kB d'arxius.
Després d'aquesta operació s'empraran 6539 kB d'espai en disc addicional.
Voleu continuar? [S/n] 
...
Job for isc-dhcp-server.service failed because the control process exited with error code.
See "systemctl status isc-dhcp-server.service" and "journalctl -xe" for details.
invoke-rc.d: initscript isc-dhcp-server, action "start" failed.
● isc-dhcp-server.service - LSB: DHCP server
   Loaded: loaded (/etc/init.d/isc-dhcp-server; generated)
   Active: failed (Result: exit-code) since Wed 2020-07-01 15:27:30 CEST; 14ms ago
     Docs: man:systemd-sysv-generator(8)
  Process: 6973 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=1/FAILURE)

de jul. 01 15:27:28 server.ioc.cat dhcpd[6986]: bugs on either our web page at www.isc.org or in the README file
de jul. 01 15:27:28 server.ioc.cat dhcpd[6986]: before submitting a bug.  These pages explain the proper
de jul. 01 15:27:28 server.ioc.cat dhcpd[6986]: process and the information we find helpful for debugging.
de jul. 01 15:27:28 server.ioc.cat dhcpd[6986]: 
de jul. 01 15:27:28 server.ioc.cat dhcpd[6986]: exiting.
de jul. 01 15:27:30 server.ioc.cat isc-dhcp-server[6973]: Starting ISC DHCPv4 server: dhcpdcheck syslog for diagnostics. ... failed!
de jul. 01 15:27:30 server.ioc.cat isc-dhcp-server[6973]:  failed!
de jul. 01 15:27:30 server.ioc.cat systemd[1]: isc-dhcp-server.service: Control process exited, code=exited, status=1/FAILURE
de jul. 01 15:27:30 server.ioc.cat systemd[1]: isc-dhcp-server.service: Failed with result 'exit-code'.
de jul. 01 15:27:30 server.ioc.cat systemd[1]: Failed to start LSB: DHCP server.
S'estan processant els activadors per a man-db (2.8.5-2)…
S'estan processant els activadors per a libc-bin (2.28-10)…
S'estan processant els activadors per a systemd (241-7~deb10u3)…
root@server:~# 

Veureu que dona un error en instal·lar-se. Això és normal, com qualsevol altre servei de Debian, perquè en instal·lar-se s’intenta arrancar el servei. El que passa és que ve amb un fitxer de configuració per defecte que no coincideix amb la configuració de la xarxa. De fet, aquest fitxer de configuració és un fitxer autoexplicatiu amb multitud d’exemples per a la majoria de les configuracions.

Un cop instal·lat el servei, podeu esbrinar quina altres paquets hi ha instal·lats del mateix servei:

root@server:~# dpkg --get-selections | grep isc-dhcp*
isc-dhcp-client					install
isc-dhcp-common					install
isc-dhcp-server					install
root@server:~# 

Examinant el paquets principal podeu obtenir diferents informació:

  • Informació general del paquet com la versió, arquitectura, mida, etc:
root@server:~# dpkg -s isc-dhcp-server
Package: isc-dhcp-server
Status: install ok installed
Priority: optional
Section: net
Installed-Size: 1434
Maintainer: Debian ISC DHCP Maintainers <isc-dhcp@packages.debian.org>
Architecture: amd64
Source: isc-dhcp
Version: 4.4.1-2
Replaces: isc-dhcp-common (<= 4.3.3-1)
Depends: debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.15), libdns-export1104, libirs-export161, libisc-export1100, debianutils (>= 2.8.2), lsb-base
Recommends: isc-dhcp-common, policycoreutils
Suggests: policykit-1, isc-dhcp-server-ldap
Breaks: isc-dhcp-common (<= 4.3.3-1), logcheck-database (<= 1.3.17~)
Conffiles:
 /etc/dhcp/dhcpd.conf 7df121d67cad45b8f3793130195cb4b8
 /etc/dhcp/dhcpd6.conf f35bba2be5960b902190d174dd9f0fb1
 /etc/init.d/isc-dhcp-server 3c7b3c6fa3bcbb7f34e3ec7b657dadf0
 /etc/logcheck/ignore.d.server/isc-dhcp-server 71f490713ed345ec955be8e2a5bc6cf4
Description: ISC DHCP server for automatic IP address assignment
 This is the Internet Software Consortium's DHCP server.
 .
 Dynamic Host Configuration Protocol (DHCP) is a protocol like BOOTP
 (actually dhcpd includes much of the functionality of bootpd). It
 gives client machines "leases" for IP addresses and can
 automatically set their network configuration.
 .
 This server can handle multiple ethernet interfaces.
Homepage: http://www.isc.org
root@server:~# 
  • Fitxers de configuració:
root@server:~# dpkg -L isc-dhcp-server | grep etc/dhcp
/etc/dhcp
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
root@server:~#
  • Fitxers de documentació:
root@server:~# dpkg -L isc-dhcp-server | grep /share
/usr/share
/usr/share/doc
/usr/share/doc/isc-dhcp-server
/usr/share/doc/isc-dhcp-server/NEWS.Debian.gz
/usr/share/doc/isc-dhcp-server/README.Debian
/usr/share/doc/isc-dhcp-server/README.gz
/usr/share/doc/isc-dhcp-server/TODO.Debian
/usr/share/doc/isc-dhcp-server/changelog.Debian.gz
/usr/share/doc/isc-dhcp-server/changelog.gz
/usr/share/doc/isc-dhcp-server/copyright
/usr/share/doc/isc-dhcp-server/examples
/usr/share/doc/isc-dhcp-server/examples/dhcpd.conf.example
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/omshell.1.gz
/usr/share/man/man5
/usr/share/man/man5/dhcpd.conf.5.gz
/usr/share/man/man5/dhcpd.leases.5.gz
/usr/share/man/man8
/usr/share/man/man8/dhcp-lease-list.8.gz
/usr/share/man/man8/dhcpd.8.gz
root@server:~# 
  • Fitxers executables:
root@server:~# dpkg -L isc-dhcp-server | grep bin
/usr/bin
/usr/bin/omshell
/usr/sbin
/usr/sbin/dhcp-lease-list
/usr/sbin/dhcpd
root@server:~# 

2. Estat del servei. Per saber l’estat del servei i les opcions:

root@server:~# service isc-dhcp-server
Usage: /etc/init.d/isc-dhcp-server {start|stop|restart|force-reload|status}
root@server:~# 

Podeu fer servir tant la comanda service, com el script directament, tot i que depenent de les versions pot variar. Les accions que es poden fer són les habituals en un servei Debian (en aquest cas no hi ha l’opció reload):

  • start: inicia el servei.
  • stop: atura el servei.
  • restart: reinicia el servei.
  • force-reload: fa el mateix que restart (es pot comprovar mirant en contingut del fitxer /etc/init.d/isc-dhcp-server).
  • status: mostra l’estat del servei.

També hi ha la comanda systemctl, però cal anar en compte ja que l’ordre dels paràmetres varia:

root@server:~# systemctl status isc-dhcp-server
● isc-dhcp-server.service - LSB: DHCP server
   Loaded: loaded (/etc/init.d/isc-dhcp-server; generated)
   Active: failed (Result: exit-code) since Wed 2020-07-01 15:27:30 CEST; 18min ago
     Docs: man:systemd-sysv-generator(8)

de jul. 01 15:27:28 server.ioc.cat dhcpd[6986]: bugs on either our web page at www.isc.org or in the README file
de jul. 01 15:27:28 server.ioc.cat dhcpd[6986]: before submitting a bug.  These pages explain the proper
de jul. 01 15:27:28 server.ioc.cat dhcpd[6986]: process and the information we find helpful for debugging.
de jul. 01 15:27:28 server.ioc.cat dhcpd[6986]: 
de jul. 01 15:27:28 server.ioc.cat dhcpd[6986]: exiting.
de jul. 01 15:27:30 server.ioc.cat isc-dhcp-server[6973]: Starting ISC DHCPv4 server: dhcpdcheck syslog for diag
de jul. 01 15:27:30 server.ioc.cat isc-dhcp-server[6973]:  failed!
de jul. 01 15:27:30 server.ioc.cat systemd[1]: isc-dhcp-server.service: Control process exited, code=exited, sta
de jul. 01 15:27:30 server.ioc.cat systemd[1]: isc-dhcp-server.service: Failed with result 'exit-code'.
de jul. 01 15:27:30 server.ioc.cat systemd[1]: Failed to start LSB: DHCP server.
root@server:~# 

El sistema enregistra les accions relacionades amb el servidor DHCP en el fitxer de monitoratge estàndard /var/log/syslog:

root@server:~# cat /var/log/syslog | grep dhcp
Jul  1 16:55:27 server isc-dhcp-server[2572]: Launching IPv4 server only.
Jul  1 16:55:27 server dhcpd[2582]: WARNING: Host declarations are global.  They are not limited to the scope you declared them in.
Jul  1 16:55:27 server dhcpd[2585]: WARNING: Host declarations are global.  They are not limited to the scope you declared them in.
Jul  1 16:55:27 server dhcpd[2585]: Wrote 0 deleted host decls to leases file.
Jul  1 16:55:27 server dhcpd[2585]: Wrote 0 new dynamic host decls to leases file.
Jul  1 16:55:27 server dhcpd[2585]: Wrote 1 leases to leases file.
Jul  1 16:55:27 server dhcpd[2585]: Server starting service.
Jul  1 16:55:29 server isc-dhcp-server[2572]: Starting ISC DHCPv4 server: dhcpd.
Jul  1 16:56:22 server isc-dhcp-server[2614]: Stopping ISC DHCPv4 server: dhcpd.
Jul  1 16:56:22 server systemd[1]: isc-dhcp-server.service: Succeeded.
Jul  1 16:56:22 server isc-dhcp-server[2627]: Launching IPv4 server only.
Jul  1 16:56:22 server dhcpd[2637]: WARNING: Host declarations are global.  They are not limited to the scope you declared them in.
Jul  1 16:56:22 server dhcpd[2640]: WARNING: Host declarations are global.  They are not limited to the scope you declared them in.
Jul  1 16:56:22 server dhcpd[2640]: Wrote 0 deleted host decls to leases file.
Jul  1 16:56:22 server dhcpd[2640]: Wrote 0 new dynamic host decls to leases file.
Jul  1 16:56:22 server dhcpd[2640]: Wrote 1 leases to leases file.
Jul  1 16:56:22 server dhcpd[2640]: Server starting service.
Jul  1 16:56:24 server isc-dhcp-server[2627]: Starting ISC DHCPv4 server: dhcpd.

Amb el servei en marxa sempre es pot observar el PID del servidor per mitjà de:

root@server:~# ps ax | grep dhcp
 2640 ?        Ss     0:00 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf enp0s3
 3113 pts/0    S+     0:00 grep dhcp
root@server:~# 

3. Configuració bàsica del servei DHCP. El fitxer de configuració principal és /etc/dhcp/dhcpd.conf, que està comentat amb les opcions més importants:

root@server:~# cat /etc/dhcp/dhcpd.conf
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
#log-facility local7;
...

Aquest fitxer també es pot trobar a la documentació del servidor a /usr/share/doc/isc-dhcp-server:

root@server:~# diff -s /etc/dhcp/dhcpd.conf /usr/share/doc/isc-dhcp-server/examples/dhcpd.conf.example
Els fitxers /etc/dhcp/dhcpd.conf i /usr/share/doc/isc-dhcp-server/examples/dhcpd.conf.example són idèntics
root@server:~# 

En aquesta configuració per defecte es poden observar els diferents grups d’opcions:

  • Opcions globals: opcions que afecten el servidor en la seva totalitat.
  • Opcions de subxarxa: opcions que afecten una subxarxa en concret. Es poden crear tantes subxarxes com interfícies hi hagi.
  • Opcions de host: es poden definir opcions concretes per a un o múltiples hosts. Aquests s’identifiquen per l’adreça MAC. Es poden declarar dins d’una subxarxa o de forma global.
  • Opcions avançades: es permeten definir classes de clients per fer concessions determinades.

Hi ha un altre fitxer de configuració important que permet donar el servei DHCP a més d’una xarxa (en el cas que el servidor estigui connectat a més d’una xarxa). Aquest fitxer és el /etc/default/isc-dhcp-server i permet especificar a quines interfícies doneu el servei de DHCP:

root@server:~# cat /etc/default/isc-dhcp-server
# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server)

# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
#DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf

# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
#DHCPDv4_PID=/var/run/dhcpd.pid
#DHCPDv6_PID=/var/run/dhcpd6.pid

# Additional options to start dhcpd with.
#	Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#	Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4=""
INTERFACESv6=""
root@server:~# 

Per exemple, si el servidor està connectat a una xarxa LAN i a una WiFi i voleu donar el servei DHCP a ambdues xarxes, cal especificar el següent:

INTERFACESv4="eth0 wlan0"

Per tant, per realitzar la configuració bàsica (a part d’indicar a quina interfície escoltarà), cal modificar el contingut del fitxer /etc/dhcp/dhcpd.conf. Només cal que contingui les següents línies:

subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.150 192.168.0.159;
}

Reinicieu el servei perquè els canvis tinguin efecte:

root@server:~# service isc-dhcp-server restart
root@server:~# service isc-dhcp-server status
● isc-dhcp-server.service - LSB: DHCP server
   Loaded: loaded (/etc/init.d/isc-dhcp-server; generated)
   Active: active (running) since Wed 2020-07-01 16:28:21 CEST; 4s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1647 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 1138)
   Memory: 4.5M
   CGroup: /system.slice/isc-dhcp-server.service
           └─1660 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf enp0s3

de jul. 01 16:28:19 server.ioc.cat systemd[1]: isc-dhcp-server.service: Succeeded.
de jul. 01 16:28:19 server.ioc.cat systemd[1]: Stopped LSB: DHCP server.
de jul. 01 16:28:19 server.ioc.cat systemd[1]: Starting LSB: DHCP server...
de jul. 01 16:28:19 server.ioc.cat isc-dhcp-server[1647]: Launching IPv4 server only.
de jul. 01 16:28:19 server.ioc.cat dhcpd[1660]: Wrote 0 leases to leases file.
de jul. 01 16:28:19 server.ioc.cat dhcpd[1660]: Server starting service.
de jul. 01 16:28:21 server.ioc.cat isc-dhcp-server[1647]: Starting ISC DHCPv4 server: dhcpd.
de jul. 01 16:28:21 server.ioc.cat systemd[1]: Started LSB: DHCP server.
root@server:~# 

Comproveu amb un client que el servidor proporciona una adreça i una màscara correcta:

jciberta@IOC:~$ sudo dhclient -v
[sudo] password for jciberta: 
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp0s3/08:00:27:f8:f9:29
Sending on   LPF/enp0s3/08:00:27:f8:f9:29
Sending on   Socket/fallback
DHCPDISCOVER on enp0s3 to 255.255.255.255 port 67 interval 3 (xid=0xeb6bbe3f)
DHCPREQUEST of 192.168.0.150 on enp0s3 to 255.255.255.255 port 67 (xid=0x3fbe6beb)
DHCPOFFER of 192.168.0.150 from 192.168.0.1
DHCPACK of 192.168.0.150 from 192.168.0.1
bound to 192.168.0.150 -- renewal in 19486 seconds.
jciberta@IOC:~$ 

Observeu com li ha donat la primera IP de la llista que heu especificat al servidor. També podeu observar amb la comanda dhclient qui és el servidor que atorga la IP. Aquesta opció és molt útil en cas de resolució d’algun problema amb la configuració de la xarxa.

Finalment torneu al servidor per observar el fitxer de concessions /var/lib/dhcp/dhcpd.leases:

root@server:~# tail /var/lib/dhcp/dhcpd.leases
lease 192.168.0.150 {
  starts 3 2020/07/01 14:30:32;
  ends 4 2020/07/02 02:30:32;
  cltt 3 2020/07/01 14:30:32;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 08:00:27:f8:f9:29;
  client-hostname "IOC";
}
root@server:~# 

També ho podeu visualitzar a través de la comanda dhcp-lease-list:

root@server:~# dhcp-lease-list --last
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:f8:f9:29  192.168.0.150   IOC            2020-07-02 02:30:32 PCS Systemtechnik GmbH
root@server:~# 

4. Configuració avançada del servei DHCP. En aquest cas, el contingut del fitxer /etc/dhcp/dhcpd.conf ha de ser el següent:

subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.150 192.168.0.159;
	
    default-lease-time 7200;
    max-lease-time 72000;
	
    option routers 192.168.0.1;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.0.255;
    option domain-name-servers 8.8.8.8;

    host jciberta-client {
        hardware ethernet 08:00:27:f8:f9:29;
		fixed-address 192.168.0.199;
    }	
}

Torneu a reiniciar el servei:

root@server:~# /etc/init.d/isc-dhcp-server restart
[ ok ] Restarting isc-dhcp-server (via systemctl): isc-dhcp-server.service.
root@server:~# 

Torneu a anar al client i allibereu la IP anterior per, posteriorment, demanar-ne una de nova:

jciberta@IOC:~$ sudo dhclient -v
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp0s3/08:00:27:f8:f9:29
Sending on   LPF/enp0s3/08:00:27:f8:f9:29
Sending on   Socket/fallback
DHCPDISCOVER on enp0s3 to 255.255.255.255 port 67 interval 3 (xid=0x867cb902)
DHCPREQUEST of 192.168.0.199 on enp0s3 to 255.255.255.255 port 67 (xid=0x2b97c86)
DHCPOFFER of 192.168.0.199 from 192.168.0.1
DHCPACK of 192.168.0.199 from 192.168.0.1
bound to 192.168.0.199 -- renewal in 2969 seconds.
jciberta@IOC:~$ 

Podeu comprovar que també s’ha atorgat la porta d’enllaç i el servidor DNS:

jciberta@IOC:~$ ip route
default via 192.168.0.1 dev enp0s3 
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.199 
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.199 metric 100 
jciberta@IOC:~$ cat /etc/resolv.conf 
nameserver 8.8.8.8
jciberta@IOC:~$ 

Torneu a realitzar la operació des del client, però aquest cop captureu els paquets amb un sniffer. Aquest mètode és útil quan teniu problemes per determinar de quina part venen, és a dir, si venen del servidor o del client, ja que permet veure el que s’està transmetent. Depenent d’aquestes dades s’actua d’una manera o una altra.

En aquest cas s’ha d’utilitzar l’sniffer tcpdump, que funciona en mode text. Executeu la comanda on especifiquem quina interfície escolteu, quins ports voleu capturar i quines dades voleu mostrar. L’eina es queda en standby mentre captura paquets. Per finalitzar, cal fer un ^C. Podeu observar 5 paquets (comencen per l’hora que han estat capturats), i a l’apartat DHCP-Message Option s’indica de quin missatge es tracta:

root@server:~# tcpdump -i enp0s3 'port 67 or port 68' -e -vv
tcpdump: listening on enp0s3, link-type EN10MB (Ethernet), capture size 262144 bytes
17:14:30.749272 08:00:27:f8:f9:29 (oui Unknown) > 08:00:27:5f:62:59 (oui Unknown), ethertype IPv4 (0x0800), length 342: (tos 0x0, ttl 64, id 45722, offset 0, flags [DF], proto UDP (17), length 328)
    192.168.0.199.bootpc > 192.168.0.1.bootps: [udp sum ok] BOOTP/DHCP, Request from 08:00:27:f8:f9:29 (oui Unknown), length 300, xid 0x6e7ef754, Flags [none] (0x0000)
	  Client-IP 192.168.0.199
	  Client-Ethernet-Address 08:00:27:f8:f9:29 (oui Unknown)
	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message Option 53, length 1: Release
	    Server-ID Option 54, length 4: 192.168.0.1
	    Hostname Option 12, length 3: "IOC"
17:14:32.329168 08:00:27:f8:f9:29 (oui Unknown) > Broadcast, ethertype IPv4 (0x0800), length 342: (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
    0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok] BOOTP/DHCP, Request from 08:00:27:f8:f9:29 (oui Unknown), length 300, xid 0x3b2ee607, Flags [none] (0x0000)
	  Client-Ethernet-Address 08:00:27:f8:f9:29 (oui Unknown)
	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message Option 53, length 1: Discover
	    Requested-IP Option 50, length 4: 192.168.0.199
	    Hostname Option 12, length 3: "IOC"
	    Parameter-Request Option 55, length 13: 
	      Subnet-Mask, BR, Time-Zone, Default-Gateway
	      Domain-Name, Domain-Name-Server, Option 119, Hostname
	      Netbios-Name-Server, Netbios-Scope, MTU, Classless-Static-Route
	      NTP
17:14:32.329548 08:00:27:5f:62:59 (oui Unknown) > 08:00:27:f8:f9:29 (oui Unknown), ethertype IPv4 (0x0800), length 342: (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
    192.168.0.1.bootps > 192.168.0.199.bootpc: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0x3b2ee607, Flags [none] (0x0000)
	  Your-IP 192.168.0.199
	  Client-Ethernet-Address 08:00:27:f8:f9:29 (oui Unknown)
	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message Option 53, length 1: Offer
	    Server-ID Option 54, length 4: 192.168.0.1
	    Lease-Time Option 51, length 4: 7200
	    Subnet-Mask Option 1, length 4: 255.255.255.0
	    BR Option 28, length 4: 192.168.0.255
	    Default-Gateway Option 3, length 4: 192.168.0.1
	    Domain-Name-Server Option 6, length 4: 8.8.8.8
17:14:32.330705 08:00:27:f8:f9:29 (oui Unknown) > Broadcast, ethertype IPv4 (0x0800), length 342: (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
    0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok] BOOTP/DHCP, Request from 08:00:27:f8:f9:29 (oui Unknown), length 300, xid 0x3b2ee607, Flags [none] (0x0000)
	  Client-Ethernet-Address 08:00:27:f8:f9:29 (oui Unknown)
	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message Option 53, length 1: Request
	    Server-ID Option 54, length 4: 192.168.0.1
	    Requested-IP Option 50, length 4: 192.168.0.199
	    Hostname Option 12, length 3: "IOC"
	    Parameter-Request Option 55, length 13: 
	      Subnet-Mask, BR, Time-Zone, Default-Gateway
	      Domain-Name, Domain-Name-Server, Option 119, Hostname
	      Netbios-Name-Server, Netbios-Scope, MTU, Classless-Static-Route
	      NTP
17:14:32.330844 08:00:27:5f:62:59 (oui Unknown) > 08:00:27:f8:f9:29 (oui Unknown), ethertype IPv4 (0x0800), length 342: (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
    192.168.0.1.bootps > 192.168.0.199.bootpc: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0x3b2ee607, Flags [none] (0x0000)
	  Your-IP 192.168.0.199
	  Client-Ethernet-Address 08:00:27:f8:f9:29 (oui Unknown)
	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message Option 53, length 1: ACK
	    Server-ID Option 54, length 4: 192.168.0.1
	    Lease-Time Option 51, length 4: 7200
	    Subnet-Mask Option 1, length 4: 255.255.255.0
	    BR Option 28, length 4: 192.168.0.255
	    Default-Gateway Option 3, length 4: 192.168.0.1
	    Domain-Name-Server Option 6, length 4: 8.8.8.8
^C
5 packets captured
5 packets received by filter
0 packets dropped by kernel
root@server:~# 

Instal·lació i configuració del servei DHCP en el sistema operatiu Windows

L’objectiu d’aquesta activitat és aprendre a instal·lar i configurar un servidor DHCP en un sistema operatiu Windows Server.

Partiu de l’esquema següent:

Figura Esquema de la xarxa

Feu les tasques necessàries per configurar automàticament les següents opcions:

  1. Configuració bàsica
    • Configureu l’interval de l’esquema per tal que doni només IP i màscara. Rangs: del 150 al 159 (4t byte de la IP).
    • Verifiqueu el funcionament amb el client.
    • Des del servidor, mostreu les adreces concedides.
  2. Configuració avançada
    • Que la concessió de l’adreça IP per defecte sigui 2 hores.
    • Que l’encaminador (router) per defecte sigui amb l’adreça IP: 192.168.0.1.
    • Que la màscara per defecte sigui: 255.255.255.0.
    • Que l’adreça de difusió (broadcast) sigui: 192.168.0.255.
    • Que el servidor de noms per defecte sigui: 8.8.8.8.
    • Que el client de proves tingui l’adreça IP fixa: 192.168.0.199 en funció de la seva adreça MAC.
    • Cal comprovar al client que s’ha atorgat la IP, màscara, porta d’enllaç i DNS correctament des de la línia d’ordres.

1. Configuració bàsica. Normalment el servei DHCP no ve preinstal·lat en un Windows Server. Per tant, l’heu d’instal·lar. El procés d’instal·lació pot variar depenent de la versió del servidor.

Primer de tot, cal anar al Dashboard de l’administrador del servidor i escollir l’opció d’afegir noves característiques o rols.

Seleccioneu:

  • Role-based or featured-based installation
  • El propi servidor

  • Add features
  • Install

Comproveu que s’ha instal·lat. Apareix a sota del menú principal de configuració.

Un cop instal·lat, cal fer la configuració bàsica del servidor. Obriu el DHCP Manager (administrador de DHCP):

Un cop dins el DHCP Manager, moveu-vos per l’arbre de l’esquerra fins a IPv4 i afegiu-hi un nou àmbit (scope). Seleccioneu del menú de la dreta Actions, New Scope… i arrancarà un assistent.

Podeu afegir també altres característiques com exclusions, temps de concessió, etc. que de moment cal deixar sense configurar.

Per defecte, el nou àmbit està desactivat. Per activar-lo cal seleccionar l’àmbit i activar-lo amb el botó corresponent:

Un cop activat l’àmbit, passeu a verificar el funcionament amb el client. És aconsellable, sempre que es pugui, verificar el client DHCP amb un sistema operatiu Linux per la simple raó que la comanda dhclient dona força més informació que la comanda equivalent a Windows, ipconfig /renew.

# dhclient -v
Internet Systems Consortium DHCP Client 4.3.3
Copyright 2004-2015 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp0s3/08:00:27:2d:be:69
Sending on   LPF/enp0s3/08:00:27:2d:be:69
Sending on   Socket/fallback
DHCPDISCOVER on enp0s3 to 255.255.255.255 port 67 interval 3 (xid=0x27670b7a)
DHCPREQUEST of 192.168.0.150 on enp0s3 to 255.255.255.255 port 67 (xid=0x7a0b6727)
DHCPOFFER of 192.168.0.150 from 192.168.0.1
DHCPACK of 192.168.0.150 from 192.168.0.1
bound to 192.168.0.150 -- renewal in 337179 seconds.
# ifconfig enp0s3
enp0s3    Link encap:Ethernet  HWaddr 08:00:27:2d:be:69  
          inet addr:192.168.0.150  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::6294:ffcf:8831:53c2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3596 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2492 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4507894 (4.5 MB)  TX bytes:165109 (165.1 KB)

Finalment, des del servidor, mostreu les adreces concedides. Aneu al servidor i seleccioneu l’opció Adressess leases del menú en arbre de l’esquerra, on podeu veure les concessions realitzades. En aquest cas, la MAC del client apareix com a l’identificador Unique ID (de fet a Linux apareix com a HWaddr en executar la comanda ifconfig).

2. Configuració avançada. Feu al servidor una configuració més completa amb el paràmetres especificats a l’enunciat.

El temps de concessió es defineix fent botó dret sobre l’àmbit i Propietats:

Per afegir més opcions, cal fer botó dret a Scope Options de l’àmbit. Aquí apareixeran les opcions especificades en el RFC 2132 amb el número corresponent. Seleccioneu els següents ítems:

  • 3. Porta d’enllaç
  • 6. DNS Servers
  • 28. adreça de broadcast

Per reservar una adreça, cal fer botó dret a Reservations, New Reservation. Entreu el nom, la IP i la MAC de l’equip (compte, cal entrar la MAC sense el separador).

Comproveu al client que s’ha atorgat la IP, màscara, porta d’enllaç i DNS correctament des de la línia d’ordres.

# dhclient -v
Internet Systems Consortium DHCP Client 4.3.3
Copyright 2004-2015 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp0s3/08:00:27:2d:be:69
Sending on   LPF/enp0s3/08:00:27:2d:be:69
Sending on   Socket/fallback
DHCPDISCOVER on enp0s3 to 255.255.255.255 port 67 interval 3 (xid=0x47170d05)
DHCPREQUEST of 192.168.0.155 on enp0s3 to 255.255.255.255 port 67 (xid=0x50d1747)
DHCPOFFER of 192.168.0.155 from 192.168.0.1
DHCPACK of 192.168.0.155 from 192.168.0.1
bound to 192.168.0.155 -- renewal in 2982 seconds.
# ifconfig enp0s3
enp0s3    Link encap:Ethernet  HWaddr 08:00:27:2d:be:69  
          inet addr:192.168.0.155  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::6294:ffcf:8831:53c2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3821 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2625 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4527390 (4.5 MB)  TX bytes:176375 (176.3 KB)

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    0      0        0 enp0s3
192.168.0.0     *               255.255.255.0   U     0      0        0 enp0s3
# cat /etc/resolv.conf
nameserver 8.8.8.8
#

Instal·lació i configuració del servei DHCP en un encaminador dins d'una xarxa local

L’objectiu d’aquesta activitat és aprendre a instal·lar i configurar el servei DHCP en un encaminador Cisco a través del seu sistema operatiu IOS (Internetwork Operating System).

Partiu de l’esquema següent:

Figura Esquema de la xarxa

Feu les tasques necessàries per configurar automàticament les següents opcions:

  1. Configuració bàsica
    • Configureu l’interval de l’esquema per tal que doni només IP i màscara. Rangs: del 150 al 159 (4t byte de la IP).
    • Verifiqueu el funcionament amb el client.
    • Finalment, des del servidor, mostreu les adreces concedides.
  2. Configuració avançada
    • Que la concessió de l’adreça IP per defecte sigui 2 hores.
    • Que l’encaminador (router) per defecte amb l’adreça IP: 192.168.0.1.
    • Que el servidor de noms per defecte sigui: 8.8.8.8.
    • Que el client de proves tingui l’adreça IP fixa: 192.168.0.199 en funció de la seva adreça MAC.
    • Cal comprovar al client que s’ha atorgat la IP, màscara, porta d’enllaç i DNS correctament des de la línia d’ordres.

Per a la realització d’aquesta activitat s’ha fet servir el programari GNS3. GNS3 (Graphical Network Simulator-3) és un emulador de programari de xarxa (routers, switchs, etc.) que permet combinar dispositius virtuals i reals. Se suposen uns mínims coneixements del sistema operatiu IOS.

0. Inicialització. Configureu la xarxa del servidor:

R1#configure terminal
R1(config)# interface FastEthernet0/0
R1(config-if)# ip address 192.168.0.1 255.255.255.0
R1(config-if)# no shutdown
R1(config-if)# exit
R1(config)# exit

Comproveu que heu posat bé la configuració de xarxa:

R1# show ip interface brief
Interface                  IP-Address      OK? Method Status   Protocol
FastEthernet0/0            192.168.0.1     YES manual up       up         
R1#

1. Configuració bàsica. Per configurar l’interval demanat, en un router Cisco, es fa a l’inversa. Em comptes de definir un interval, s’ha de definir quines adreces queden escloses de tot el rang d’una xarxa. Doncs,

R1# configure terminal
R1(config)# ip dhcp excluded-address 192.168.0.1 192.168.0.149
R1(config)# ip dhcp excluded-address 192.168.0.160 192.168.0.254
R1(config)# ip dhcp pool XARXA-DHCP
R1(dhcp-config)# network 192.168.0.0 255.255.255.0
^Z

Visualitzem la configuració actual:

R1# show ip dhcp pool

Pool XARXA-DHCP :
 Utilization mark (high/low)    : 100 / 0
 Subnet size (first/next)       : 0 / 0
 Total addresses                : 254
 Leased addresses               : 0
 Pending event                  : none
 1 subnet is currently in the pool :
 Current index        IP address range                    Leased addresses
 192.168.0.1          192.168.0.1      - 192.168.0.254     0
R1#

Si voleu mostrar informació dels diferents missatges d’informació del servidor DHCP, cal habilitar el mode depuració específicament per al servei DHCP. Aquest mode és convenient només habilitar-lo per propòsit de resolució de problemes, ja que la presentació dels missatges és un pèl confusa (apareix entre mig del que escriu l’administrador) perquè és un entorn de només text.

R1#debug ip dhcp server ?
  class    Class-based address allocation
  events   Report address assignments, lease expirations, etc.
  linkage  Show database linkage
  packet   Decode message receptions and transmissions

Verifiqueu el funcionament amb el client:

PC1> show ip

NAME        : PC1[1]
IP/MASK     : 0.0.0.0/0
GATEWAY     : 0.0.0.0
DNS         :
MAC         : 00:50:79:66:68:00
LPORT       : 10004
RHOST:PORT  : 127.0.0.1:10005
MTU:        : 1500

PC1> ip dhcp
DDORA
PC1> show ip IP 192.168.0.150/24

NAME        : PC1[1]
IP/MASK     : 192.168.0.150/24
GATEWAY     : 0.0.0.0
DNS         :
DHCP SERVER : 192.168.0.1
DHCP LEASE  : 86394, 86400/43200/75600
MAC         : 00:50:79:66:68:00
LPORT       : 10004
RHOST:PORT  : 127.0.0.1:10005
MTU:        : 1500

Finalment, des del servidor, comproveu les adreces concedides.

R1# show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address          Client-ID/              Lease expiration        Type
                    Hardware address/
                    User name
192.168.0.150       0100.5079.6668.00       May 06 2020 03:13 PM    Automatic
R1#

2. Configuració avançada. Realitzeu al servidor la configuració més completa. Perquè tinguin efecte les assignacions per MAC, primer s’han de posar:

R1# configure terminal
R1(config)# no ip dhcp pool XARXA-DHCP

R1(config)# ip dhcp pool jciberta-client
R1(dhcp-config)# host 192.168.0.159 
R1(dhcp-config)# client-identifier 0100.5079.6668.00
R1(dhcp-config)# client-name jciberta-client

R1(config)# ip dhcp pool XARXA-DHCP
R1(dhcp-config)# network 192.168.0.0 255.255.255.0
R1(dhcp-config)# default-router 192.168.0.1
R1(dhcp-config)# dns-server 8.8.8.8
R1(dhcp-config)# lease 0 2
R1(dhcp-config)# exit
^Z

A la identificació del client, el codi 01 indica el medi Ethernet, i aquest codi s’afegeix a la MAC quedant 0100.5079.6668.00

La configuració és:

R1# show ip dhcp pool

Pool jciberta-client :
 Utilization mark (high/low)    : 100 / 0
 Subnet size (first/next)       : 0 / 0
 Total addresses                : 1
 Leased addresses               : 1
 Pending event                  : none
 0 subnet is currently in the pool :
 Current index        IP address range                    Leased addresses
 192.168.0.199        192.168.0.199    - 192.168.0.199     1

Pool XARXA-DHCP :
 Utilization mark (high/low)    : 100 / 0
 Subnet size (first/next)       : 0 / 0
 Total addresses                : 254
 Leased addresses               : 1
 Pending event                  : none
 1 subnet is currently in the pool :
 Current index        IP address range                    Leased addresses
 192.168.0.151        192.168.0.1      - 192.168.0.254     0

Veureu que ja queda assignada, fins i tot abans que es demani (Lease expiration és infinit):

R1# show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address          Client-ID/              Lease expiration        Type
                    Hardware address/
                    User name
192.168.0.159       0050.7966.6800          Infinite                Manual
R1#

Comproveu al client que s’ha atorgat la IP, màscara, porta d’enllaç i DNS correctament des de la línia d’ordres. Aquest cop ho veureu mostrant el diàleg de la negociació DHCP:

PC1> ip dhcp -x

PC1> ip dhcp -d
Opcode: 1 (REQUEST)
Client IP Address: 0.0.0.0
Your IP Address: 0.0.0.0
Server IP Address: 0.0.0.0
Gateway IP Address: 0.0.0.0
Client MAC Address: 00:50:79:66:68:00
Option 53: Message Type = Discover
Option 12: Host Name = PC11
Option 61: Client Identifier = Hardware Type=Ethernet MAC Address = 00:50:79:66:68:00

Opcode: 2 (REPLY)
Client IP Address: 0.0.0.0
Your IP Address: 192.168.0.159
Server IP Address: 0.0.0.0
Gateway IP Address: 0.0.0.0
Client MAC Address: 00:50:79:66:68:00
Option 53: Message Type = Offer
Option 54: DHCP Server = 192.168.0.1
Option 51: Lease Time = 86400
Option 58: Renewal Time = 43200
Option 59: Rebinding Time = 75600
Option 12: Host Name = PC11
Option 1: Subnet Mask = 255.255.255.0
Option 12: Host Name = jciberta-client
Option 3: Router = 192.168.0.1
Option 6: DNS Server = 8.8.8.8

Opcode: 1 (REQUEST)
Client IP Address: 192.168.0.159
Your IP Address: 0.0.0.0
Server IP Address: 0.0.0.0
Gateway IP Address: 0.0.0.0
Client MAC Address: 00:50:79:66:68:00
Option 53: Message Type = Request
Option 54: DHCP Server = 192.168.0.1
Option 50: Requested IP Address = 192.168.0.159
Option 61: Client Identifier = Hardware Type=Ethernet MAC Address = 00:50:79:66:68:00
Option 12: Host Name = PC11

Opcode: 2 (REPLY)
Client IP Address: 192.168.0.159
Your IP Address: 192.168.0.159
Server IP Address: 0.0.0.0
Gateway IP Address: 0.0.0.0
Client MAC Address: 00:50:79:66:68:00
Option 53: Message Type = Ack
Option 54: DHCP Server = 192.168.0.1
Option 51: Lease Time = 86400
Option 58: Renewal Time = 43200
Option 59: Rebinding Time = 75600
Option 12: Host Name = PC11
Option 1: Subnet Mask = 255.255.255.0
Option 3: Router = 192.168.0.1
Option 6: DNS Server = 8.8.8.8

 IP 192.168.0.159/24 GW 192.168.0.1

PC1> show ip

NAME        : PC1[1]
IP/MASK     : 192.168.0.159/24
GATEWAY     : 192.168.0.1
DNS         : 8.8.8.8
DHCP SERVER : 192.168.0.1
DHCP LEASE  : 86392, 86400/43200/75600
MAC         : 00:50:79:66:68:00
LPORT       : 10004
RHOST:PORT  : 127.0.0.1:10005
MTU:        : 1500

PC1>

Des del servidor podeu obtenir estadístiques del servei DHCP amb:

R1# show ip dhcp server statistics
Memory usage         24665
Address pools        2
Database agents      0
Automatic bindings   0
Manual bindings      1
Expired bindings     0
Malformed messages   0
Secure arp entries   0

Message              Received
BOOTREQUEST          0
DHCPDISCOVER         18
DHCPREQUEST          4
DHCPDECLINE          0
DHCPRELEASE          3
DHCPINFORM           0

Message              Sent
BOOTREPLY            0
DHCPOFFER            6
DHCPACK              4
DHCPNAK              0

3. Finalització. Verifiqueu la configuració activa:

R1# show running-config
Building configuration...

Current configuration : 1212 bytes
...
no ip dhcp use vrf connected
ip dhcp excluded-address 192.168.0.1 192.168.0.149
ip dhcp excluded-address 192.168.0.160 192.168.0.254
!
ip dhcp pool jciberta-client
   host 192.168.0.159 255.255.255.0
   client-identifier 0100.5079.6668.00
   client-name jciberta-client
!
ip dhcp pool XARXA-DHCP
   network 192.168.0.0 255.255.255.0
   default-router 192.168.0.1
   dns-server 8.8.8.8
   lease 0 2
...
interface FastEthernet0/0
 ip address 192.168.0.1 255.255.255.0
 duplex half
...

R1#

I si està tot correcte, deseu-ho a la configuració d’inici perquè quedi emmagatzemat al dispositiu:

R1#copy running-config startup-config
Destination filename [startup-config]?
Building configuration...
[OK]
R1#

Referències

Instal·lació i configuració del servei DHCP en una xarxa sense fils

L’objectiu d’aquesta activitat és aprendre a instal·lar i configurar el servei DHCP en una xarxa sense fils amb l’ajuda d’un punt d’accés (access point) o d’un encaminador sense fils (router wifi).

Partiu de l’esquema següent:

Figura Esquema de la xarxa

Feu les tasques necessàries per configurar automàticament les següents opcions:

  1. Configuració bàsica
    • Configureu l’interval de l’esquema per tal que doni només IP i màscara. Rangs: del 150 al 159 (4t byte de la IP).
    • Verifiqueu el funcionament amb el client.
    • Des del servidor, mostreu les adreces concedides.
  2. Configuració avançada
    • Que l’encaminador (router) per defecte amb l’adreça IP: 192.168.0.1
    • Que el servidor de noms per defecte sigui: 8.8.8.8.
    • Que el client de proves tingui l’adreça IP fixa: 192.168.0.199 en funció de la seva adreça MAC.
    • Cal comprovar al client que s’ha atorgat la IP, màscara, porta d’enllaç i DNS correctament des de la línia d’ordres.

Per a la realització de l’activitat usarem un punt d’accés Linksys WRT300N i el simulador de xarxes Cisco Packet Tracer. La configuració en qualsevol altre punt d’accés és molt similar i sempre sol disposar de les mateixes opcions, almenys pel que fa a les de la configuració bàsica. Es parteix de la idea que l’alumne sap entrar en un punt d’accés.

1. Configuració bàsica. Aneu a Setup, Network Setup i habilitem el servidor DHCP i introduïm l’interval demanat:

Deseu els canvis. Verifiqueu el funcionament amb el client:

També dona la porta d’enllaç. Això és perquè el punt d’accés en realitat és un router i fa funcions d’encaminament. D’aquesta manera, ell mateix és la porta d’enllaç a la xarxa externa.

Finalment, des del servidor mostreu les adreces concedides. Si anem a Status, Local Network, a l’apartat DHCP Client Table podeu veure els client connectats:

Veureu que concorda amb el client:

2. Configuració avançada. Feu la reserva a través d ela opció DHCP Reservation:

Poseu el servidor de noms demanat:

La porta d’enllaç és ell mateix. Si renoveu la configuració automàtica al client, veureu la nova configuració: