Activitats

El protocol DHCP

Aquesta activitat està destinada a 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. Fer la 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

Si ens hi fixem, veurem que, 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

Es pot observar que el client utilitza el port 68 (bootpc) i el servidor, el port 67 (bootps).

2. Monitorar el servidor.

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

[root@portatil ~]# dhclient 
Internet Systems Consortium DHCP Client V3.0.5-RedHat 
Copyright 2004-2006 Internet Systems Consortium. 
All rights reserved. 
For info, please visit http://www.isc.org/sw/dhcp/ 
Listening on LPF/eth0/00:17:31:15:80:7e 
Sending on   LPF/eth0/00:17:31:15:80:7e 
Sending on   Socket/fallback 
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8 
DHCPOFFER from 192.168.1.1 
DHCPREQUEST on eth0 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 “Comprovar el funcionament” d’aquest mòdul. Podeu consultar també altra documentació, com per exemple:

https://sites.google.com/site/asixm08edt

http://en.wikipedia.org/wiki/Port_%28computer_networking%29

http://tldp.org

Treballar com a client DHCP

Aquesta activitat està destinada a treballar com a 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. Fer la llista de la configuració de xarxa actual Fer la llista de la configuració de les interfícies Ethernet i observar les adreces IP i l’estat de les interfícies (up o down):

[root@pc]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:17:31:15:80:7e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.34/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::217:31ff:fe15:807e/64 scope link 
       valid_lft forever preferred_lft forever
3: sit0: <NOARP> mtu 1480 qdisc noop 
    link/sit 0.0.0.0 brd 0.0.0.0

Fer la llista de les rutes definides en l’hoste:

[root@pc]# ip route show
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.34 
169.254.0.0/16 dev eth0  scope link 
default via 192.168.1.1 dev eth0

Observar els fitxers de configuració de les interfícies. Fixeu-vos que la interfície loopback es configura estàticament i la interfície eth0, per mitjà de dhcp:

[root@pc]# cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp

2. Comprovar l’estat del servei de xarxa

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

[root@pc]# ifconfig
eth0      Link encap:Ethernet  direcciónHW 00:15:58:86:61:cf  
          ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1000 
          Bytes RX:0 (0.0 B)  TX bytes:0 (0.0 B)
          Memoria:ee000000-ee020000 

eth0:avahi Link encap:Ethernet  direcciónHW 00:15:58:86:61:cf  
          Direc. inet:169.254.8.231  Difus.:169.254.255.255  Másc:255.255.0.0
          ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
          Memoria:ee000000-ee020000 

lo        Link encap:Bucle local  
          Direc. inet:127.0.0.1  Másc:255.0.0.0
          Dirección inet6: ::1/128 Alcance:Anfitrión
          ACTIVO BUCLE FUNCIONANDO  MTU:16436  Métrica:1
          Paquetes RX:1355 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:1355 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:0 
          Bytes RX:130467 (130.4 KB)  TX bytes:130467 (130.4 KB)

wlan0     Link encap:Ethernet  direcciónHW 00:1b:77:03:48:53  
          Direc. inet:192.168.1.35  Difus.:192.168.1.255  Másc:255.255.255.0
          Dirección inet6: fe80::21b:77ff:fe03:4853/64 Alcance:Enlace
          ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:390356 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:348094 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1000 
          Bytes RX:330361285 (330.3 MB)  TX bytes:99721302 (99.7 MB)

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

[root@pc]# ifconfig -a

Activar i desactivar el servei de xarxa:

[root@pc]# service networking
Usage: /etc/init.d/networking {start|stop|restart|force-reload}
[root@pc]#
[root@pc]# /etc/init.d/networking stop
S'està  aturant la interficie eth0:                    [ FET  ]
S'està aturant la interficie loopback:                 [ FET  ]
[root@pc]#
[root@pc]# /etc/init.d/networking start
S'està  activant la interficie loopback:               [ FET  ]
S'està  activant la interficie eth0:  
S'està  determinant la informació de la IP per a eth0... fet [FET]

3. Configureu el client per rebre adreces IP dinàmiques per DHCP (activar i desactivar el client DHCP):

Es pot editar directament el fitxer de configuració de les interfícies /etc/network/interfaces i establir els valors.

Configurar la interfície eth0 per mitjà de dhcp, editant el fitxer de configuració:

[root@pc]# nano /etc/network/interfaces
# Utilizar DHCP para la interfaz eth0
auto eth0
iface eth0 inet dhcp

Caldrà guardar la configuració i reiniciar els serveis de xarxa:

[root@pc]# /etc/init.d/networking restart

4. Renegocieu una nova adreça IP al servidor DHCP

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:

[root@portatil ~]# dhclient -r 
Internet Systems Consortium DHCP Client V3.0.5-RedHat 
Copyright 2004-2006 Internet Systems Consortium. 
All rights reserved. 
For info, please visit http://www.isc.org/sw/dhcp/ 
Listening on LPF/eth0/00:17:31:15:80:7e 
Sending on LPF/eth0/00:17:31:15:80:7e 
DHCPRELEASE on eth0 to 192.168.1.1 port 67 

I per tornar a sol·licitar una adreça per a la interfície eth0:

[root@portatil ~]# dhclient eth0 
Internet Systems Consortium DHCP Client V3.0.5-RedHat 
Copyright 2004-2006 Internet Systems Consortium. 
All rights reserved. 
For info, please visit http://www.isc.org/sw/dhcp/ 
Listening on LPF/eth0/00:17:31:15:80:7e 
Sending on   LPF/eth0/00:17:31:15:80:7e 
Sending on   Socket/fallback 
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5 
DHCPOFFER from 192.168.1.1 
DHCPREQUEST on eth0 to 255.255.255.255 port 67 
DHCPACK from 192.168.1.1 
bound to 192.168.1.34 -- renewal in 38975 seconds.

5. Observeu la llista del fitxer de registre de les concessions rebudes

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/dhcp3/dhclient.leases.

[root@pc]# cat /var/lib/dhcp3/dhclient.leases 
lease {
  interface "eth0";
  fixed-address 192.168.1.34;
  option subnet-mask 255.255.255.0;
  option routers 192.168.1.1;
  option dhcp-lease-time 86400;
  option dhcp-message-type 5;
  option domain-name-servers 80.58.61.250,80.58.61.254;
  option dhcp-server-identifier 192.168.1.1;
  option domain-name "local.lan";
  renew 3 2007/12/19 04:05:49;
  rebind 3 2007/12/19 15:12:57;
  expire 3 2007/12/19 18:12:57;
}

Instal·lar i configurar un servidor DHCP

L’objectiu d’aquesta activitat és aprendre a instal·lar i configurar un servidor DHCP.

Cal que feu el següent:

  1. Instal·leu un servidor DHCP. Observeu quins components té: fitxers executables (en especial el dimoni), fitxers de configuració, de documentació i de monitoratge.
  2. Activeu i desactiveu el servei DHCP. Establiu els nivells d’arrencada en què s’ha d’executar per defecte el servei.
  3. Monitoreu les activitats realitzades pel servidor mitjançant el registre de logs del sistema. Identifiqueu el PID (número de procés) del servidor.
  4. Observeu els altres paràmetres de configuració que permet el servidor.
  5. Observeu el registre de concessions efectuades pel servidor.

1. Instal·leu un servidor DHCP. Observeu quins components té: fitxers executables (en especial el dimoni), fitxers de configuració, de documentació i de monitoratge.

Buscar per Internet paquets del client i del servidor DNS a Google, en repositoris de programari, etc. Si es disposa d‘apt-get, o wget, o yum:

[root@portatil ~]# apt-get install isc-dhcp-server

O bé:

[root@portatil ~]# aptitude install isc-dhcp-server

Fer la llista dels paquets bind instal·lats. Si el sistema ja els té instal·lats, o ho volem comprovar, podem consultar els paquets instal·lats:

[root@portatil ~]# dpkg --get-selections | grep isc-dhcp*
dhcp3-client  			  	install
dhcp3-common			  		install
dhcp3-server			  		install
isc-dhcp-client					install
isc-dhcp-common					install
isc-dhcp-server					install

Obtenir informació del paquet del servei dhcp:

root@portatil ~]# dpkg -s isc-dhcp-server
Package: isc-dhcp-server
Status: install ok installed
Priority: optional
Section: net
Installed-Size: 868
Maintainer: Debian ISC DHCP maintainers <pkg-dhcp-devel@lists.alioth.debian.org>
Architecture: i386
Source: isc-dhcp
Version: 4.1.1-P1-15+squeeze8
Replaces: dhcp3-server
Provides: dhcp3-server
Depends: debianutils (>= 2.8.2), isc-dhcp-common (= 4.1.1-P1-15+squeeze8), lsb-base, libc6 (>= 2.7), debconf (>= 0.5) | debconf-2.0
Suggests: isc-dhcp-server-ldap
Conflicts: dhcp
Conffiles:
 /etc/dhcp/dhcpd.conf 53f47e5880af137405c2ce30b4924cf3
 /etc/init.d/isc-dhcp-server cbd487676dbef86e90d455ac854c4b82
Description: ISC DHCP server for automatic IP address assignment
 This is the server from the Internet Software Consortium's implementation of
 DHCP. For more information, visit http://www.isc.org.
 .
 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.

Observar els components del paquet:

  • Fer la llista dels components del paquet dhcp:
root@portatil ~]# dpkg -L isc-dhcp-server
  • Fitxers de configuració:
root@portatil ~]# dpkg -L isc-dhcp-server | grep etc/dhcp
  • Fitxers de documentació:
root@portatil ~]# dpkg -L isc-dhcp-server | grep share

Podeu intentar filtrar quins són els executables, tenint en compte que normalment es trobaran en un directori anomenat bin o sbin.

root@portatil ~]# dpkg -L isc-dhcp-server | grep bin/

2. Activeu i desactiveu el servei DHCP. Establiu els nivells d’arrencada en què s’ha d’executar per defecte el servei.

Primerament cal saber si el servidor instal·lat funciona de manera autònoma (stand-alone) o dins del superdimoni de xarxa xinetd o initd. Si hi ha fitxers de configuració dins del directori /etc/initd.d/<nom-servei>, es tracta d’un servei dins del xinetd. Si hi ha fitxers de configuració dins del directori /etc/rc.d/init.d/<nom-servei>, es tracta d’un servei autònom.

Observem el contingut del paquet per esbrinar si els fitxers de configuració ens permeten saber de quin tipus de servei es tracta:

root@portatil ~]# dpkg  -L isc-dhcp-server | grep /etc
/etc
/etc/dhcp
/etc/dhcp/dhcpd.conf
/etc/init.d
/etc/init.d/isc-dhcp-server

Com podeu veure, es tracta d’un servei autònom. També es pot consultar el tipus de servei amb l’ordre chkconfig i observar si surt en la llista d’una manera o de l’altra:

root@portatil ~]# chkconfig --list | grep isc-dhcp-server
isc-dhcp-server           0:off  1:off  2:on   3:on   4:on   5:on   6:off
  • Estat del servei

Podem saber l’estat del servei amb l’opció estat (status) de les ordres:

root@portatil ~]# service isc-dhcp-server status
Status of ISC DHCP server: dhcpd is running.

Podem arrencar el servei amb l’opció engegada (start) de les ordres:

root@portatil ~]# service isc-dhcp-server start
Starting ISC DHCP server: dhcpd.

Podem parar el servei amb l’opció aturada (stop) de les ordres:

<code>
root@portatil ~]# service isc-dhcp-server stop
Stoping ISC DHCP server: dhcpd.

Podem tornar a iniciar el servei amb l’opció recarregar (reload) o reiniciar (restart) de les ordres:

Stopping ISC DHCP server: dhcpd.
Starting ISC DHCP server: dhcpd.

Per saber les ordres possibles:

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

root@portatil ~]# /etc/init.d/isc-dhcp-server pimpam
 * Usage: /etc/init.d/isc-dhcp-server {start|stop|reload|restart|force-reload|status}
  • Establir els nivells del servei per defecte. Els serveis (els dimonis executables) es poden configurar per arrencar automàticament en determinats nivells d’execució. Les màquines GNU/Linux tenen set nivells d’execució, tal com es pot veure en el fitxer /etc/inittab.
root@portatil ~]# head -20 /etc/inittab
# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.
id:2:initdefault:

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

Per configurar els nivells als quals es vol que s’executi un servei s’utilitza l’ordre chkconfig, que permet activar o desactivar el servei per als nivells indicats.

root@portatil ~]# chkconfig --list isc-dhcp-server 
isc-dhcp-server           0:off  1:off  2:on   3:on   4:on   5:on   6:off
root@portatil ~]#
root@portatil ~]# chkconfig --help
usage:
        chkconfig -A|--allservices              (together with -l: show all services)
        chkconfig -t|--terse [names]            (shows the links)
        chkconfig -e|--edit  [names]            (configure services)
        chkconfig -s|--set   [name state]...    (configure services)
        chkconfig -l|--list [--deps] [names]    (shows the links)
        chkconfig -c|--check name [state]       (check state)
        chkconfig -a|--add   [names]            (runs insserv)
        chkconfig -d|--del   [names]            (runs insserv -r)
        chkconfig -h|--help                     (print usage)
        chkconfig -f|--force ...                (call insserv with -f)

        chkconfig [name]           same as chkconfig -t
        chkconfig name state...    same as chkconfig -s name state
root@portatil ~]#
root@portatil ~]# chkconfig --level 345 isc-dhcp-server on
root@portatil ~]#
root@portatil ~]# chkconfig --list | grep isc-dhcp-server 
isc-dhcp-server           0:off  1:off  2:on   3:on   4:on   5:on   6:off
root@portatil ~]#
root@portatil ~]# runlevel
N 2
root@portatil ~]# service isc-dhcp-server status
Status of ISC DHCP server: dhcpd is not running.
root@portatil ~]# service isc-dhcp-server start
Starting ISC DHCP server: dhcpd.

3. Monitoreu les activitats realitzades pel servidor mitjançant el registre de logs del sistema. Identifiqueu el PID (número de procés) del servidor.

  • Els fitxers de registre. El sistema enregistra les accions relacionades amb el servidor DNS en el fitxer de monitoratge estàndard /var/log/messages:
root@portatil ~]# cat /var/log/messages | grep dhcp
cat /var/log/messages | grep dhcp
Jun 27 12:39:15 debian dhcpd: Wrote 0 leases to leases file.
Jun 27 12:39:15 debian dhcpd: 
Jun 27 12:49:08 debian dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1
Jun 27 12:49:08 debian dhcpd: Copyright 2004-2010 Internet Systems Consortium.
Jun 27 12:49:08 debian dhcpd: All rights reserved.
Jun 27 12:49:08 debian dhcpd: For info, please visit https://www.isc.org/software/dhcp/
Jun 27 12:49:08 debian dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1
Jun 27 12:49:08 debian dhcpd: Copyright 2004-2010 Internet Systems Consortium.
Jun 27 12:49:08 debian dhcpd: All rights reserved.
Jun 27 12:49:08 debian dhcpd: For info, please visit https://www.isc.org/software/dhcp/
Jun 27 12:49:08 debian dhcpd: Wrote 0 leases to leases file.
Jun 27 12:49:08 debian dhcpd:
  • El procés del servei. Qualsevol procés en el sistema té un identificador de procés (PID, process identifier). Els PID dels serveis normalment es desen en el sistema de fitxers a /var/run i amb un valor numèric (en text) corresponent al PID.

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

root@portatil ~]# ls -l /var/run/dhcpd.pid
-rw-r--r-- 1 root root 5 jun 27 13:51 /var/run/dhcpd.pid
root@portatil ~]# cat /var/run/dhcpd.pid
4419

4. Observeu els altres paràmetres de configuració que permet el servidor.

  • Configuració bàsica. Per poder engegar el servidor DHCP cal configurar-lo prèviament. Per això li cal saber a quina xarxa donarà servei i quin és el rang d’adreces IP que pot utilitzar dinàmicament per a les concessions als clients.

El paquet dhcp conté un fitxer d’exemple de configuració en el directori /usr/share/doc/isc-dhcp-server/examples/dhcpd.conf. Aquest fitxer es pot copiar a /etc/dhcp/dhcpd.conf i esdevindrà la configuració bàsica del servidor DHCP.

[root@portatil ~]# cat /etc/dhcpd.conf 
# 
# DHCP Server Configuration file. 
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample  
# 
#a) opcions globals
ddns-update-style interim; 
ignore client-updates; 

#b) opcions genèriques per a una subxarxa concreta
subnet 192.168.1.0 netmask 255.255.255.0 { 
        # --- default gateway 
        option routers                  192.168.1.1; 
        option subnet-mask              255.255.255.0; 

        option nis-domain               "domain.org"; 
        option domain-name              "domain.org"; 
        option domain-name-servers      192.168.1.1; 
        option time-offset              -18000; # Eastern Standard Time 

        range dynamic-bootp 192.168.1.128 192.168.1.254; 

        default-lease-time 21600; 
        max-lease-time 43200; 

        # we want the nameserver to appear at a fixed address 
        host ns { 
                next-server marvin.redhat.com; 
                hardware ethernet 12:34:56:78:AB:CD; 
                fixed-address 207.175.42.254; 
        } 
}

En la configuració per defecte es poden analitzar els diversos elements que es configuren:

  • Opcions globals: indiquen al servidor que ignori les actualitzacions dels clients i el tipus de ddns que cal utilitzar (actualitzacions dinàmiques de DNS).
  • Definició de subxarxa: cal definir tants blocs de subxarxa com subxarxes atengui el servidor DHCP.
  • Opcions genèriques de subxarxa: per a una subxarxa es poden indicar opcions genèriques per als equips d’aquesta subxarxa. Evidentment, poden diferir de les opcions d’altres subxarxes.
  • Les opcions de xarxa principals que cal descriure són, entre d’altres, l’encaminador (router), la màscara de xarxa i el domini.
  • Les opcions principals que cal descriure del servei DHCP són el rang d’adreces IP dinàmiques que ha d’utilitzar el servidor i el temps màxim de concessió d’aquestes adreces IP.
  • Perquè un hoste determinat tingui sempre la mateixa IP es poden fer entrades individualitzades per a hostes concrets. Els hostes s’identifiquen per l’adreça MAC.
  • A un hoste concret (descrit en una entrada hoste) se li poden aplicar opcions individualitzades, per exemple, definir el seu nom.

Configuració avançada:

El protocol DHCP permet configuracions molt més complicades que la descrita en l’apartat anterior. Podeu consultar la documentació de DHCP i les pàgines del manual del dimoni dhcpd i del fitxer de configuració dhcpd.conf.

Les característiques principals que s’hi descriuen són l’agrupació d’entrades en grups i classes i la possibilitat que el DHCP es comuniqui amb el DNS (actualitzacions DDNS) per crear entrades DNS quan un equip rep una configuració DHCP.

Tot seguit mostrem un exemple de configuració amb opcions més avançades:

ddns-update-style interim; 
ignore client-updates; 

subnet 192.168.1.0 netmask 255.255.255.0 { 
  # --- default gateway 
	option routers			192.168.1.1; 
	option subnet-mask		255.255.255.0; 

	option nis-domain		"domain.org"; 
	option domain-name		"domain.org"; 
	option domain-name-servers	192.168.1.1; 
	option time-offset		-18000;	# Eastern Standard Time 

	range dynamic-bootp 192.168.1.128 192.168.1.254; 

	default-lease-time 21600; 
	max-lease-time 43200; 

	# we want the nameserver to appear at a fixed address 
	host ns { 
		next-server marvin.redhat.com; 
		hardware ethernet 12:34:56:78:AB:CD; 
		fixed-address 207.175.42.254; 
	} 
         group { 
         filename "Xncd19r"; 
         next-server ncd-booter; 

         host ncd1 { hardware ethernet 0:c0:c3:49:2b:57; } 
         host ncd4 { hardware ethernet 0:c0:c3:80:fc:32; } 
         host ncd8 { hardware ethernet 0:c0:c3:22:46:81; } 
       } 
} 

subnet 10.0.0.0 netmask 255.255.255.0 { 
         option routers 10.0.0.254; 

         # Unknown clients get this pool. 
         pool { 
           option domain-name-servers bogus.example.com; 
           max-lease-time 300; 
           range 10.0.0.200 10.0.0.253; 
           allow unknown-clients; 
         } 

         # Known clients get this pool. 
         pool { 
           option domain-name-servers ns1.example.com, ns2.example.com; 
           max-lease-time 28800; 
           range 10.0.0.5 10.0.0.199; 
           deny unknown-clients; 
         } 
}

5. Observeu el registre de concessions efectuades pel servidor.

El servidor desa en una base de dades local (de fet, són fitxers de text) les concessions que realitza. D’aquesta manera en pot seguir la pista. Generalment les té a la memòria, però si per exemple el sistema es reinicia, pot saber quines concessions encara són actives i, per tant, quines IP no té disponibles per servir.

Normalment, el fitxer de concessions és a /var/lib/dhcp/dhcpd.leases.

[root@portatil ~]# cat /var/lib/dhcpd/dhcpd.leases 
# All times in this file are in UTC (GMT), not your local timezone.   This is 
# not a bug, so please don't ask about it.   There is no portable way to 
# store leases in the local timezone, so please don't request this as a 
# feature.   If this is inconvenient or confusing to you, we sincerely 
# apologize.   Seriously, though - don't ask. 
# The format of this file is documented in the dhcpd.leases(5) manual page. 
# This lease file was written by isc-dhcp-V3.0.5-RedHat 

lease 192.168.1.254 { 
  starts 0 2008/06/29 16:03:41; 
  ends 1 2008/06/30 04:03:41; 
  binding state active; 
  next binding state free; 
  hardware ethernet 08:00:27:b2:8b:ec; 
  client-hostname "box"; 
} 
lease 192.168.1.254 { 
  starts 0 2008/06/29 16:19:30; 
  ends 1 2008/06/30 04:19:30; 
  binding state active; 
  next binding state free; 
  hardware ethernet 08:00:27:b2:8b:ec; 
  client-hostname "box"; 
} 
lease 192.168.1.253 { 
  starts 0 2008/06/29 16:27:16; 
  ends 0 2008/06/29 22:27:16; 
  binding state active; 
  next binding state free; 
  hardware ethernet 08:00:27:8e:72:de; 
}

Podeu consultar el procés d’instal·lar un servidor DHCP repassant l’apartat “Instal·lar el servidor DHCP”. Trobareu també més informació als següents llocs web:

https://sites.google.com/site/asixm08edt

http://tldp.org

https://www.isc.org/software/dhcp

Identificar els RFC relatius al protocol DHCP

L’objectiu d’aquesta activitat és familiaritzar-vos 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.

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

Solució de l’activitat:

Principals RFC dedicades a DHCP:

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)”.

Web de l’entitat IETF que gestiona els estàndards d’Internet. En aquesta adreça es poden consultar les especificacions dels estàndards:

http://tools.ietf.org/html

http://www.ietf.org/rfc/rfc2131.txt

http://tools.ietf.org/html/rfc2131