Mòdul: 0227 - Serveis de xarxa / 0375 - Serveis de xarxa i Internet
Nivell: SMX / ASIX
Sistema operatiu: Ubuntu Server 24.04
El protocol DHCP (Dynamic Host Configuration Protocol) permet assignar automàticament paràmetres de xarxa als clients: adreça IP, màscara de subxarxa, porta d’enllaç predeterminada, servidors DNS, etc.
Sense DHCP, cada dispositiu de la xarxa hauria de tenir la seva adreça IP configurada manualment. En xarxes grans, això és inviable i propens a errors (conflictes d’IP, errors tipogràfics, etc.).
| Pas | Missatge | Descripció |
|---|---|---|
| 1 | DISCOVER | El client fa un broadcast cercant servidors DHCP |
| 2 | OFFER | El servidor ofereix una adreça IP disponible |
| 3 | REQUEST | El client sol·licita formalment l’adreça oferta |
| 4 | ACK | El servidor confirma i lliura la configuració |
En aquest document configurarem el servidor DHCP per a la xarxa següent:
| Paràmetre | Valor |
|---|---|
| Xarxa | 192.168.10.0/24 |
| Màscara | 255.255.255.0 |
| Rang d’adreces dinàmiques | 192.168.10.100 – 192.168.10.200 |
| Porta d’enllaç (gateway) | 192.168.10.1 |
| Servidor DNS primari | 8.8.8.8 |
| Servidor DNS secundari | 8.8.4.4 |
| Nom de domini | smx.local |
| Temps de concessió (lease) | 24 hores |
Abans de començar, cal tenir:
sudoip a
o ip link)ip link showExemple de sortida:
1: lo: <LOOPBACK,UP,LOWER_UP> ...
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> ...En aquest document utilitzarem enp0s8 com a interfície
de la xarxa LAN.
Els noms de les interfícies varien segons el maquinari i la
configuració del sistema. Substitueix enp0s8 pel nom
correcte al teu sistema.
El servidor DHCP ha de tenir una adreça IP estàtica a la interfície LAN. A Ubuntu 24.04, la xarxa es configura amb Netplan.
sudo nano /etc/netplan/00-installer-config.yamlAfegeix o modifica la configuració de la interfície LAN:
network:
version: 2
ethernets:
enp0s8:
addresses:
- 192.168.10.10/24
dhcp4: false
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
routes:
- to: "default"
via "192.168.10.1"
El format YAML és sensible a la indentació. Utilitza sempre espais, mai tabuladors.
sudo netplan applyip addr show enp0s8La sortida ha de mostrar l’adreça 192.168.10.10/24:
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
inet 192.168.10.10/24 brd 192.168.10.255 scope global enp0s8sudo apt updateisc-dhcp-serversudo apt install isc-dhcp-server -yDurant la instal·lació, el servei intentarà arrencar i fallarà perquè encara no està configurat. Això és normal.
dpkg -l isc-dhcp-serverii isc-dhcp-server 4.4.3-P1-2ubuntu3 amd64 ISC DHCP server for automatic IP address assignmentLa configuració del servidor DHCP es divideix en dos fitxers principals:
| Fitxer | Funció |
|---|---|
/etc/default/isc-dhcp-server |
Indica en quines interfícies escolta el servidor |
/etc/dhcp/dhcpd.conf |
Defineix els paràmetres de xarxa i els rangs d’adreces |
sudo nano /etc/default/isc-dhcp-serverModifica la línia INTERFACESv4:
# Interfaces on which the DHCP server will serve DHCP requests.
INTERFACESv4="enp0s8"
INTERFACESv6=""dhcpd.confFes una còpia de seguretat del fitxer original:
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bakEdita el fitxer de configuració principal:
sudo nano /etc/dhcp/dhcpd.confSubstitueix el contingut per la configuració següent:
# ============================================================
# Fitxer de configuració del servidor DHCP
# Servidor: Ubuntu Server 24.04
# Xarxa: 192.168.10.0/24
# ============================================================
# Paràmetres globals del servidor
default-lease-time 86400; # Temps de concessió per defecte: 24 hores (en segons)
max-lease-time 172800; # Temps de concessió màxim: 48 hores (en segons)
# El servidor és l'autoritat DHCP d'aquesta xarxa
authoritative;
# Opcions globals (s'apliquen a totes les subxarxes si no s'especifica el contrari)
option domain-name "smx.local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
# -----------------------------------------------------------
# Declaració de la subxarxa 192.168.10.0/24
# -----------------------------------------------------------
subnet 192.168.10.0 netmask 255.255.255.0 {
# Rang d'adreces IP dinàmiques que es poden assignar
range 192.168.10.100 192.168.10.200;
# Opcions específiques per a aquesta subxarxa
option routers 192.168.10.1; # Porta d'enllaç predeterminada
option subnet-mask 255.255.255.0; # Màscara de subxarxa
option broadcast-address 192.168.10.255; # Adreça de difusió
}
Per assignar sempre la mateixa IP a un dispositiu concret (impressora, servidor, NAS, etc.), s’utilitza una reserva basada en l’adreça MAC del dispositiu.
Afegeix els blocs host dins del bloc subnet
o fora d’ell:
# -----------------------------------------------------------
# Reserves d'adreces IP estàtiques (per adreça MAC)
# -----------------------------------------------------------
# Impressora de la classe
host impressora-classe {
hardware ethernet 08:00:27:AA:BB:CC;
fixed-address 192.168.10.11;
}
# PC del professor
host pc-professor {
hardware ethernet 08:00:27:11:22:33;
fixed-address 192.168.10.12;
option host-name "pc-professor";
}
Com obtenir l’adreça MAC d’un client Linux:
ip link show eth0 | grep etherEn Windows:
ipconfig /all
Abans d’iniciar el servei, verifica que no hi ha errors de sintaxi:
sudo dhcpd -t -cf /etc/dhcp/dhcpd.confSi no hi ha errors, la sortida serà similar a:
Internet Systems Consortium DHCP Server 4.4.3-P1
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcpd/dhcpd.leases
PID file: /var/run/dhcpd.pid# Habilitar el servei perquè s'iniciï automàticament en arrencar
sudo systemctl enable isc-dhcp-server
# Iniciar el servei ara
sudo systemctl start isc-dhcp-serversudo systemctl status isc-dhcp-serverLa sortida ha de mostrar active (running):
● isc-dhcp-server.service - ISC DHCP IPv4 server
Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; preset: enabled)
Active: active (running) since ...| Ordre | Acció |
|---|---|
sudo systemctl start isc-dhcp-server |
Iniciar el servei |
sudo systemctl stop isc-dhcp-server |
Aturar el servei |
sudo systemctl restart isc-dhcp-server |
Reiniciar el servei |
sudo systemctl reload isc-dhcp-server |
Recarregar la configuració sense aturar |
sudo systemctl status isc-dhcp-server |
Veure l’estat del servei |
El servidor registra totes les IP assignades al fitxer /var/lib/dhcpd/dhcpd.leases:
cat /var/lib/dhcpd/dhcpd.leasesExemple d’una concessió activa:
lease 192.168.10.100 {
starts 2 2024/10/01 09:00:00;
ends 3 2024/10/02 09:00:00;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 08:00:27:ab:cd:ef;
client-hostname "client-ubuntu";
}sudo dhcp-lease-listSi dhcp-lease-list no està disponible, instal·la el
paquet isc-dhcp-common o utilitza directament cat /var/lib/dhcpd/dhcpd.leases.
sudo journalctl -u isc-dhcp-server -fExemple de sortida quan un client rep una IP:
DHCPDISCOVER from 08:00:27:ab:cd:ef via enp0s8
DHCPOFFER on 192.168.10.100 to 08:00:27:ab:cd:ef via enp0s8
DHCPREQUEST for 192.168.10.100 from 08:00:27:ab:cd:ef via enp0s8
DHCPACK on 192.168.10.100 to 08:00:27:ab:cd:ef via enp0s8Si el tallafoc ufw està actiu, cal permetre el trànsit
DHCP (port 67/UDP):
sudo ufw allow 67/udp
sudo ufw reload
sudo ufw statusSímptoma: systemctl status mostra failed o error.
Diagnosi:
sudo journalctl -u isc-dhcp-server --no-pager -n 50Causes habituals:
dhcpd.conf → executa sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf/etc/default/isc-dhcp-serverCauses habituals i solucions:
| Causa | Solució |
|---|---|
| El rang d’adreces s’ha esgotat | Ampliar el rang o reduir el temps de concessió |
| La subxarxa del client no coincideix amb la configurada | Revisar la configuració de subnet a dhcpd.conf |
| El tallafoc bloqueja el port 67/UDP | sudo ufw allow 67/udp |
| El servei no escolta a la interfície correcta | Revisar /etc/default/isc-dhcp-server |
# Veure els ports en escolta
sudo ss -ulnp | grep dhcp
# Capturar trànsit DHCP en temps real (requereix tcpdump)
sudo tcpdump -i enp0s8 port 67 or port 68 -n
# Forçar un client Linux a renovar la seva IP
sudo dhclient -r enp0s3 # allibera la IP actual
sudo dhclient enp0s3 # sol·licita una nova IPA continuació es mostra el fitxer /etc/dhcp/dhcpd.conf
complet amb totes les opcions del document:
# ============================================================
# /etc/dhcp/dhcpd.conf
# Servidor DHCP - Ubuntu Server 24.04
# Xarxa: 192.168.10.0/24
# ============================================================
# Paràmetres globals
default-lease-time 86400;
max-lease-time 172800;
authoritative;
option domain-name "smx.local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
# Subxarxa principal
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.200;
option routers 192.168.10.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.10.255;
}
# Reserves per adreça MAC
host impressora-classe {
hardware ethernet 08:00:27:AA:BB:CC;
fixed-address 192.168.10.11;
}
host pc-professor {
hardware ethernet 08:00:27:11:22:33;
fixed-address 192.168.10.12;
option host-name "pc-professor";
}
# Instal·lació
sudo apt update && sudo apt install isc-dhcp-server -y
# Fitxers de configuració
sudo nano /etc/default/isc-dhcp-server # interfície d'escolta
sudo nano /etc/dhcp/dhcpd.conf # configuració principal
# Verificació de sintaxi
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf
# Gestió del servei
sudo systemctl enable --now isc-dhcp-server
sudo systemctl status isc-dhcp-server
sudo systemctl restart isc-dhcp-server
# Monitoratge
cat /var/lib/dhcpd/dhcpd.leases
sudo journalctl -u isc-dhcp-server -f
# Tallafoc
sudo ufw allow 67/udp10.0.1.0/24 amb el rang 10.0.1.50–10.0.1.150 i la porta d’enllaç 10.0.1.1.ip link).ip addr, ip route, cat /etc/resolv.conf).Documentació oficial
Referència del protocol
Recursos didàctics complementaris