Cicle formatiu: CFGM Sistemes Microinformàtics i Xarxes (SMX) / CFGS Administració de sistemes informàtics en xarxa (ASIX)
Mòdul: 0227 - Serveis de xarxa / 0375 - Serveis de xarxa i Internet
Sistema operatiu: Ubuntu Server 26.04 LTS
El DNS (Domain Name System) és el servei
fonamental d’Internet que tradueix noms de domini llegibles per humans
(com www.exemple.cat) en adreces IP numèriques que entenen
les màquines.
BIND9 (Berkeley Internet Name Domain) és el servidor DNS de codi obert més utilitzat al món i la implementació de referència dels estàndards DNS.
Configurarem un servidor DNS per a la xarxa local fictícia
thos.local 192.168.10.0/24:
| Rol | Nom FQDN | Adreça IP |
|---|---|---|
| Servidor DNS | ns1.thos.local |
192.168.10.1 |
| Servidor web | www.thos.local |
192.168.10.10 |
| Servidor de fitxers | storage.thos.local |
192.168.10.20 |
| Client de proves | client01.thos.local |
192.168.10.100 |
| Tipus | Descripció |
|---|---|
| Autoritatiu | Té la informació definitiva d’una zona DNS. Respon amb autoritat. |
| Recursiu / cau | Resol consultes en nom dels clients consultant altres servidors i guarda el resultat en cau. |
| Forwarder | Reenvia les consultes que no pot resoldre a un altre servidor DNS. |
| Registre | Funció | Exemple |
|---|---|---|
A |
Nom → IPv4 | www IN A 192.168.10.10 |
AAAA |
Nom → IPv6 | www IN AAAA 2001:db8::1 |
PTR |
IP → Nom (invers) | 10 IN PTR www.thos.local. |
NS |
Servidor de noms de la zona | @ IN NS ns1.thos.local. |
MX |
Servidor de correu | @ IN MX 10 mail.thos.local. |
CNAME |
Àlies cap a un altre nom | ftp IN CNAME www.thos.local. |
SOA |
Informació d’autoritat de zona | (vegeu més avall) |
TXT |
Text arbitrari (SPF, verificació…) | @ IN TXT "v=spf1 mx ~all" |
thos.local.10.168.192.in-addr.arpa.Actualitza la llista de paquets dels dipòsits
sudo apt updateActualitza tots els paquets
sudo apt upgrade sudo apt install bind9 bind9utils bind9-doc dnsutilsbind9 — el servei principalbind9utils — eines com named-checkconf i named-checkzonebind9-doc - proporciona la documentació del
servidordnsutils — eines de diagnòstic: dig, nslookup, hostnamed -vSortida esperada:
BIND 9.20.18-1ubuntu2.1-Ubuntu (Stable Release) <id:>Habilita perquè s’iniciï automàticament en cada arrencada del sistema:
sudo systemctl enable --now namedComprova l’estat del servei:
sudo systemctl status namedEl servei ha d’aparèixer com
active (running).
● named.service - BIND Domain Name Server
Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; preset: enabled)
Active: active (running) since Tue 2026-06-30 13:42:12 UTC; 5min ago
Invocation: 14537caa82cb4eaea3cc72f75195d32a
Docs: man:named(8)
Main PID: 9215 (named)
Status: "running"
Tasks: 8 (limit: 1718)
Memory: 10M (peak: 10.3M)
CPU: 146ms
CGroup: /system.slice/named.service
└─9215 /usr/sbin/named -f -u bindDesprés de la instal·lació, els fitxers principals es troben a:
/etc/bind/
├── named.conf # Fitxer principal (inclou els altres)
├── named.conf.options # Opcions globals del servidor
├── named.conf.local # Zones locals (les que definirem nosaltres)
├── named.conf.default-zones # Zones per defecte (localhost, etc.)
├── db.local # Zona localhost (exemple)
├── db.127 # Zona inversa 127.x.x.x
└── zones/ # Directori recomanat per als fitxers de zonaBones pràctiques: Crea el directori /etc/bind/zones/ per guardar els fitxers de zona
personalitzats.
Si tens la intenció de configurar DDNS és preferible crear
les zones al directori /var/lib/bind/zones per una qüestió
de permisos i propietari. /etc/bind sol pertànyer a root:bind amb permisos pensats perquè named
llegeixi la configuració (named.conf*), no perquè hi
escrigui. /var/lib/bind pertany a bind:bind
amb permisos d’escriptura per al dimoni. Aquí named pot
crear i actualitzar fitxers sense problemes de permisos.
sudo mkdir -p /etc/bind/zones
# o si vols configurar posteriorment DDNS
sudo mkdir -p /var/lib/bind/zonesEditarem named.conf.options per configurar el
comportament general del servidor.
sudo nano /etc/bind/named.conf.optionsContingut recomanat:
options {
directory "/var/cache/bind";
// Adreces des de les quals s'accepten consultes recursives
// Canvia "192.168.10.0/24" per la teva xarxa local
allow-recursion {
localhost;
192.168.10.0/24;
};
// Forwarders: a qui reenviem si no podem resoldre localment
forwarders {
8.8.8.8; // Google DNS
1.1.1.1; // Cloudflare DNS
};
// Millora la seguretat: no retornis la versió de BIND
version "not disclosed";
// Escolta a totes les interfícies (o especifica la IP del servidor)
listen-on { any; };
listen-on-v6 { any; };
// Permet consultes des de la xarxa local i localhost
allow-query {
localhost;
192.168.10.0/24;
};
// Desactiva transferències de zona per defecte
allow-transfer { none; };
dnssec-validation auto;
};
Mai posis allow-recursion { any; }; en un servidor
públic. Podries convertir-te en amplificador d’atacs DDoS.
Comprova la sintaxi:
sudo named-checkconfSi no retorna cap sortida, la configuració és correcta. Reinicia el servei:
sudo systemctl restart namednamed.conf.localsudo nano /etc/bind/named.conf.localAfegeix:
// Zona directa per al domini thos.local
zone "thos.local" {
type master;
file "/etc/bind/zones/db.thos.local";
allow-update { none; };
};
// Zona inversa per a la xarxa 192.168.10.0/24
zone "10.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.192.168.10";
allow-update { none; };
};
sudo nano /etc/bind/zones/db.thos.local; Fitxer de zona directa per a thos.local
; Última modificació: 2026-06-16
$TTL 86400 ; Temps de vida per defecte: 1 dia (en segons)
; Registre SOA (Start of Authority)
@ IN SOA ns1.thos.local. admin.thos.local. (
2026061601 ; Serial (format AAAAMMDDNN — incrementa en cada canvi)
3600 ; Refresh: cada quant el secundari comprova canvis (1h)
900 ; Retry: si falla, torna a intentar-ho als 15min
604800 ; Expire: el secundari descarta la zona als 7 dies sense resposta
86400 ; Negative TTL: quant temps es guarda en cau una resposta NXDOMAIN
)
; Servidors de noms de la zona
@ IN NS ns1.thos.local.
; Registres A (nom → IP)
ns1 IN A 192.168.10.1
www IN A 192.168.10.10
storage IN A 192.168.10.20
client01 IN A 192.168.10.100
; Àlies (CNAME)
ftp IN CNAME www.thos.local.
; Servidor de correu (MX)
@ IN MX 10 mail.thos.local.
mail IN A 192.168.10.30
; Registre TXT (exemple SPF)
@ IN TXT "v=spf1 mx ~all"
El número de sèrie (serial) ha d’incrementar-se
cada vegada que modifiquis el fitxer. El format
recomanat és AAAAMMDDNN, on NN és el número de
revisió del dia.
sudo named-checkzone thos.local /etc/bind/zones/db.thos.localSortida correcta:
zone thos.local/IN: loaded serial 2026061601
OKsudo nano /etc/bind/zones/db.192.168.10; Fitxer de zona inversa per a 192.168.10.0/24
; Última modificació: 2026-06-16
$TTL 86400
; Registre SOA
@ IN SOA ns1.thos.local. admin.thos.local. (
2026061601
3600
900
604800
86400
)
; Servidor de noms
@ IN NS ns1.thos.local.
; Registres PTR (IP → nom)
; Nota: s'escriu només l'últim octet de l'adreça IP
1 IN PTR ns1.thos.local.
10 IN PTR www.thos.local.
20 IN PTR storage.thos.local.
30 IN PTR mail.thos.local.
100 IN PTR client01.thos.local.
sudo named-checkzone 10.168.192.in-addr.arpa /etc/bind/zones/db.192.168.10Sortida correcta:
zone 10.168.192.in-addr.arpa/IN: loaded serial 2026061601
OKReinicia el servei:
sudo systemctl restart namedComprova l’estat:
sudo systemctl status named● named.service - BIND Domain Name Server
Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; preset: enabled)
Active: active (running) since Tue 2026-06-30 14:02:13 UTC; 1min 16s ago
Invocation: d75e0cbb344c4a91a6e17e96b6e30221
Docs: man:named(8)
Main PID: 11713 (named)
Status: "running"
Tasks: 8 (limit: 1718)
Memory: 6.2M (peak: 6.5M)
CPU: 24ms
CGroup: /system.slice/named.service
└─11713 /usr/sbin/named -f -u bindsudo ss -tulnp | grep namedHa de mostrar el servei escoltant al port 53 per TCP i
UDP.
udp UNCONN 0 0 192.168.10.1:53 0.0.0.0:* users:(("named",pid=11713,fd=43))
udp UNCONN 0 0 192.168.10.1:53 0.0.0.0:* users:(("named",pid=11713,fd=42))
udp UNCONN 0 0 127.0.0.1:53 0.0.0.0:* users:(("named",pid=11713,fd=29))
udp UNCONN 0 0 127.0.0.1:53 0.0.0.0:* users:(("named",pid=11713,fd=28))
tcp LISTEN 0 10 192.168.10.1:53 0.0.0.0:* users:(("named",pid=11713,fd=45))
tcp LISTEN 0 10 192.168.10.1:53 0.0.0.0:* users:(("named",pid=11713,fd=44))
tcp LISTEN 0 10 127.0.0.1:53 0.0.0.0:* users:(("named",pid=11713,fd=32))
tcp LISTEN 0 10 127.0.0.1:53 0.0.0.0:* users:(("named",pid=11713,fd=30))
tcp LISTEN 0 5 127.0.0.1:953 0.0.0.0:* users:(("named",pid=11713,fd=63)) digResolució directa (nom → IP):
dig @192.168.10.1 www.thos.localSortida esperada (fragment):
;; ANSWER SECTION:
www.thos.local. 86400 IN A 192.168.10.10Resolució inversa (IP → nom):
dig @192.168.10.1 -x 192.168.10.10Sortida esperada:
;; ANSWER SECTION:
10.10.168.192.in-addr.arpa. 86400 IN PTR www.thos.local.Consulta de registres NS:
dig @192.168.10.1 thos.local NSConsulta de registres MX:
dig @192.168.10.1 thos.local MXComprovació d’un CNAME:
dig @192.168.10.1 ftp.thos.localnslookupnslookup www.thos.local 192.168.10.1
nslookup 192.168.10.10 192.168.10.1hosthost www.thos.local 192.168.10.1
host -t MX thos.local 192.168.10.1sudo journalctl -u named -fEdita la configuració de la interfície de xarxa amb Netplan:
sudo nano /etc/netplan/00-installer-config.yamlnetwork:
version: 2
ethernets:
enp0s3:
addresses:
- 192.168.10.100/24
nameservers:
addresses:
- 192.168.10.1
search:
- thos.local
routes:
- to: default
via: 192.168.10.1
Aplica els canvis:
sudo netplan applyVerifica la resolució de noms:
resolvectl status
dig www.thos.local/etc/resolv.confcat /etc/resolv.confHa de contenir:
nameserver 192.168.10.1
search thos.localsudo journalctl -u named --no-pager | tail -30
sudo named-checkconf -z # Comprova tota la configuració i zonessudo named-checkzone thos.local /etc/bind/zones/db.thos.localErrors habituals:
ns1.thos.local en lloc de ns1.thos.local.)Corregeix els permisos:
sudo chown -R bind:bind /etc/bind/zones/
sudo chmod 640 /etc/bind/zones/*# Comprova connectivitat bàsica al servidor DNS
ping 192.168.10.1
# Prova una consulta directa
dig @192.168.10.1 www.thos.local
# Si funciona amb @IP però no sense, el problema és la configuració del client
cat /etc/resolv.confSi el servidor té ufw actiu, cal obrir el port 53:
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
sudo ufw reload| Símptoma | Ordre de diagnosi | Solució probable |
|---|---|---|
SERVFAIL |
journalctl -u named |
Error al fitxer de zona |
NXDOMAIN |
named-checkzone |
Registre no definit a la zona |
connection refused |
ss -tulnp | grep named |
Servei aturat o no escolta |
| El client no resol | cat /etc/resolv.conf |
DNS mal configurat al client |
| Canvis no reflectits | — | Serial no incrementat; reinicia named |
| Fitxer | Funció |
|---|---|
/etc/bind/named.conf.options |
Opcions globals: forwarders, ACL, recursió |
/etc/bind/named.conf.local |
Declaració de zones locals |
/etc/bind/zones/db.thos.local |
Fitxer de zona directa (nom → IP) |
/etc/bind/zones/db.192.168.10 |
Fitxer de zona inversa (IP → nom) |
sudo systemctl start named # Iniciar
sudo systemctl stop named # Aturar
sudo systemctl restart named # Reiniciar (aplica canvis)
sudo systemctl reload named # Recarregar zones sense reiniciar
sudo systemctl status named # Estat del servei
sudo named-checkconf # Verificar sintaxi de la configuració
sudo named-checkzone <zona> <fitxer> # Verificar un fitxer de zona| Recurs | URL | Descripció |
|---|---|---|
| BIND 9 ARM (Administrator Reference Manual) | bind9.readthedocs.io | Manual de referència oficial i complet de BIND9 — la font autoritativa |
| ISC BIND9 | isc.org/bind | Pàgina oficial del projecte BIND a l’Internet Systems Consortium (ISC) |
| Ubuntu Server Docs — DNS | documentation.ubuntu.com/server/…/install-dns | Guia oficial d’Ubuntu per instal·lar i configurar BIND9 |
| RFCs DNS a IETF | datatracker.ietf.org | Estàndards tècnics originals del DNS (RFC 1034, RFC 1035, etc.) |
| RFC | Títol | Rellevància |
|---|---|---|
| RFC 1034 | Domain Names — Concepts and Facilities | Conceptes generals del DNS |
| RFC 1035 | Domain Names — Implementation and Specification | Implementació i formats de registres |
| RFC 2308 | Negative Caching of DNS Queries | Comportament del TTL negatiu (NXDOMAIN) |
| RFC 4034 | Resource Records for the DNS Security Extensions | Base de DNSSEC |
Els RFCs es poden consultar a datatracker.ietf.org o a rfc-editor.org.
| Recurs | URL | Descripció |
|---|---|---|
| DNS for Rocket Scientists | zytrax.com/books/dns | Llibre en línia gratuït i molt complet sobre DNS i BIND — molt recomanat |
| LinuxTechi — BIND9 Ubuntu | linuxtechi.com/… | Guia pràctica d’instal·lació a Ubuntu 24.04 / 22.04 |
| AlphaVPS — BIND9 Ubuntu 24.04 | blog.alphavps.com/… | Configuració de BIND9 com a servidor autoritatiu |
| Eina | URL | Funció |
|---|---|---|
| MXToolbox DNS Lookup | mxtoolbox.com/DNSLookup.aspx | Consultes DNS (A, MX, NS, PTR…) des del navegador |
| DNSChecker | dnschecker.org | Comprova la propagació DNS des de múltiples ubicacions |
| intoDNS | intodns.com | Anàlisi completa de la configuració DNS d’un domini |
| RIPE WHOIS | apps.db.ripe.net | Informació de registres d’IP i dominis a Europa |
| Recurs | URL | Descripció |
|---|---|---|
| NIST DNS Deployment Guide | csrc.nist.gov | Guia de bones pràctiques de seguretat DNS del NIST |
| ISC Security Advisories | kb.isc.org/docs/security-advisories | Avisos de seguretat oficials per a BIND9 |