Activitats

L’objectiu d’aquestes activitats és aprendre a instal·lar, configurar i utilitzar el servei DNS.

Primer l’alumne ha d’entendre el funcionament general del servei de noms de domini i com es realitza la recerca d’informació. També ha de conèixer les diverses eines client que permeten fer consultes DNS. Per acabar, ha de ser capaç d’instal·lar i configurar un servidor DNS per als equips d’un domini local.

Identificació dels RFC relatius al protocol DNS

L’objectiu d’aquesta activitat és familiaritzar-se amb el format dels 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 DNS.

A la web de l’Internet Engineering Task Force (IETF) hi ha els diferents RFC (Request for Comments) que gestionen els estàndards d’Internet. En aquesta adreça es poden consultar les especificacions dels diferents estàndards.

El principal document on es detallen les especificacions i la implementació del protocol és el RFC 1035.

No obstant, els protocols són vius, és a dir que s’actualitzen segons les necessitats, errors, etc. Això fa que aquests documents tinguin actualitzacions i que, al mateix temps, deixin obsolet el document. Això queda il·lustrat a la capçalera del RFC.

En aquest cas, el protocol DNS ha estat posteriorment actualitzat pels RFC 2136 (DDNS, Dynamic DNS), i els RFC 4033, 4034, 4035 (DNSSEC, Domain Name System Security Extensions) entre d’altres. Això deixa obsolets els RFC 882, 883 i 973.

Comparativa de programaris de servidor DNS

L’objectiu d’aquesta activitat és utilitzar Internet per examinar els diferents tipus de programaris DNS i les seves característiques, així com practicar l’ús de la xarxa per obtenir programari lliure d’administració de sistemes.

Busqueu a Internet quin programari hi ha per a sistemes GNU/Linux que faci la funció de servidor DNS. Anoteu les característiques que us semblin més destacades.

Feu-ho també per a sistemes Windows.

Podeu trobar una comparativa actualitzada i molt completa de programari DNS amb característiques com el tipus de llicència i les arquitectures disponibles entre altres a: Comparison of DNS server software.

Identificació de servidors DNS d'Internet

L’objectiu d’aquesta activitat és obtenir informació dels servidors actuals que proporcionen el servei DNS a Internet, i aprendre a localitzar aquesta informació a la xarxa i esbrinar quines empreses o organismes els gestionen.

Obteniu la llista dels servidors DNS de més alt nivell a Internet i esbrineu quin programari DNS utilitzen.

La llista dels servidors DNS de més alt nivell està incorporada a qualsevol programari DNS, ja que és informació crítica.

En el cas del programari BIND, que té els fitxers de configuració del servei a /etc/bind, el fitxer named.conf.default-zones defineix les zones per defecte. En el seu contingut s’observa la localització del fitxer on es troben els servidors arrel:

// prime the server with knowledge of the root servers
zone "." {
	type hint;
	file "/usr/share/dns/root.hints";
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

zone "localhost" {
	type master;
	file "/etc/bind/db.local";
};
...

En el contingut del fitxer /usr/share/dns/root.hints hi ha la informació sobre els 13 servidors arrel:

;       This file holds the information on root name servers needed to 
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  <file>"
;       configuration file of BIND domain name servers). 
; 
;       This file is made available by InterNIC 
;       under anonymous FTP as
;           file                /domain/named.cache 
;           on server           FTP.INTERNIC.NET
;       -OR-                    RS.INTERNIC.NET
; 
;       last update:     March 13, 2019 
;       related version of root zone:     2019031302
; 
; FORMERLY NS.INTERNIC.NET 
;
.                        3600000      NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:ba3e::2:30
; 
; FORMERLY NS1.ISI.EDU 
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     199.9.14.201
B.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:200::b
; 
; FORMERLY C.PSI.NET 
;
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
C.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2::c
; 
; FORMERLY TERP.UMD.EDU 
;
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     199.7.91.13
D.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2d::d
; 
; FORMERLY NS.NASA.GOV
;
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
E.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:a8::e
; 
; FORMERLY NS.ISC.ORG
;
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
; 
; FORMERLY NS.NIC.DDN.MIL
;
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
G.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:12::d0d
; 
; FORMERLY AOS.ARL.ARMY.MIL
;
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     198.97.190.53
H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::53
; 
; FORMERLY NIC.NORDU.NET
;
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
I.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fe::53
; 
; OPERATED BY VERISIGN, INC.
;
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:c27::2:30
; 
; OPERATED BY RIPE NCC
;
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129
K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
; 
; OPERATED BY ICANN
;
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
L.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:9f::42
; 
; OPERATED BY WIDE
;
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35

No obstant, per saber el programari utilitzat per aquest servidor, cal cercar la informació en un altre lloc. Consulteu Root name server per veure la llista de dominis d’alt nivell, el tipus de programari que utilitzen i les seves IP.

Instal·lació i configuració d'un servidor DNS amb BIND9

En aquesta activitat es practica la instal·lació i configuració del servidor DNS BIND9 (Berkeley Internet Name Domain). BIND 9 és un programari de codi obert i està distribuït sota una llicència MPL 2.0 (Mozilla Public License) i mantingut per l’Internet System Consortium (ISC).

En una xarxa amb la següent estructura de noms:

server.ioc.cat	10.0.2.10
www.ioc.cat		  10.0.2.11
ftp.ioc.cat		  10.0.2.11 (àlies)
pc1.ioc.cat		  10.0.2.101
pc2.ioc.cat		  10.0.2.102
...

Realitzeu les següents tasques:

  1. Instal·leu el servidor DNS BIND. Observeu els seus components: fitxers executables (en especial el dimoni), fitxers de configuració, fitxers de documentació i fitxers de monitoratge.
  2. Consulteu l’estat del servei i els nivells d’arrancada en què s’executa per defecte el servei.
  3. Monitoreu les activitats realitzades pel servidor a través del registre de logs del sistema. Identifiqueu el PID (número de procés) del servidor.
  4. Configureu el servei DNS per tal que resolgui l’estructura de noms de la xarxa i els d’Internet.
  5. Comproveu amb el servidor que es resolen totes les peticions DNS.
  6. Monitoreu el trànsit que genera el servidor DNS utilitzant Wireshark amb un client fent una petició no autoritativa.

1. Instal·lació del servidor DNS BIND i els seus components.

Instal·lem el servidor amb la comanda apt-get:

[root@portatil ~]# apt-get install bind9
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:
  bind9utils dns-root-data python3-ply
Paquets suggerits:
  bind9-doc dnsutils resolvconf ufw python-ply-doc
S'instal·laran els paquets NOUS següents:
  bind9 bind9utils dns-root-data python3-ply
0 actualitzats, 4 nous a instal·lar, 0 a suprimir i 0 no actualitzats.
S'ha d'obtenir 1136 kB d'arxius.
Després d'aquesta operació s'empraran 4116 kB d'espai en disc addicional.
Voleu continuar? [S/n] 

Si volem veure les dependències del paquet principal:

[root@portatil ~]# apt-cache depends bind9
bind9
  Depèn: adduser
  Depèn: bind9utils
 |Depèn: debconf
  Depèn: <debconf-2.0>
    cdebconf
    debconf
  Depèn: dns-root-data
  Depèn: libbind9-161
  Depèn: libdns1104
  Depèn: libisc1100
  Depèn: libisccc161
  Depèn: libisccfg163
  Depèn: liblwres161
  Depèn: lsb-base
  Depèn: net-tools
  Depèn: netbase
  Depèn: libc6
  Depèn: libcap2
  Depèn: libcom-err2
  Depèn: libfstrm0
  Depèn: libgeoip1
  Depèn: libgssapi-krb5-2
  Depèn: libjson-c3
  Depèn: libk5crypto3
  Depèn: libkrb5-3
  Depèn: liblmdb0
  Depèn: libprotobuf-c1
  Depèn: libssl1.1
  Depèn: libxml2
  Suggereix: bind9-doc
  Suggereix: dnsutils
  Suggereix: resolvconf
    openresolv
  Suggereix: ufw

Per obtenir informació del paquet del servei bind (podem veure també les seves dependències):

root@portatil ~]# dpkg -s bind9
Package: bind9
Status: install ok installed
Priority: optional
Section: net
Installed-Size: 2145
Maintainer: Debian DNS Team <team+dns@tracker.debian.org>
Architecture: amd64
Version: 1:9.11.5.P4+dfsg-5.1
Depends: adduser, bind9utils (= 1:9.11.5.P4+dfsg-5.1), debconf (>= 0.5) | debconf-2.0, dns-root-data, libbind9-161 (= 1:9.11.5.P4+dfsg-5.1), libdns1104 (= 1:9.11.5.P4+dfsg-5.1), libisc1100 (= 1:9.11.5.P4+dfsg-5.1), libisccc161 (= 1:9.11.5.P4+dfsg-5.1), libisccfg163 (= 1:9.11.5.P4+dfsg-5.1), liblwres161 (= 1:9.11.5.P4+dfsg-5.1), lsb-base (>= 3.2-14), net-tools, netbase, libc6 (>= 2.28), libcap2 (>= 1:2.10), libcom-err2 (>= 1.43.9), libfstrm0 (>= 0.2.0), libgeoip1, libgssapi-krb5-2 (>= 1.6.dfsg.2), libjson-c3 (>= 0.11), libk5crypto3 (>= 1.6.dfsg.2), libkrb5-3 (>= 1.6.dfsg.2), liblmdb0 (>= 0.9.7), libprotobuf-c1 (>= 1.0.0), libssl1.1 (>= 1.1.0), libxml2 (>= 2.7.4)
Suggests: bind9-doc, dnsutils, resolvconf, ufw
Conffiles:
 /etc/apparmor.d/usr.sbin.named 34502426376b676b22e36c63d3cbb5a9
 /etc/bind/bind.keys 4c562437426d0569ce142a0f0e20f020
 /etc/bind/db.0 8aba258068c8c60a7ade3952a285f57d
 /etc/bind/db.127 64f5cf50e8d8192109dad43b779e5e36
 /etc/bind/db.255 8aba258068c8c60a7ade3952a285f57d
 /etc/bind/db.empty 4e7a0ebff9a8936e5a72ec18c0c49214
 /etc/bind/db.local e5d27ead2d238928a08d33c7a7333477
 /etc/bind/named.conf 32be43ecfcb37f69bf967c15c368e184
 /etc/bind/named.conf.default-zones 9fbdc4657090b3b2a45f7e7b8468cf96
 /etc/bind/named.conf.local fb15a27656eafd86ff870effabc72f1e
 /etc/bind/named.conf.options 642e258554b7bd95f4fc71062ca82101
 /etc/bind/zones.rfc1918 d04252b4368b66e28376f92613842888
 /etc/init.d/bind9 50383513c5543a5fc98b47e9f6a719d5
 /etc/insserv.conf.d/bind9 2f36010c32cff9acc445bb9b577aecf7
 /etc/network/if-down.d/bind9 dd11845d860cd2e30dce8556aa478eb2
 /etc/network/if-up.d/bind9 dd11845d860cd2e30dce8556aa478eb2
 /etc/ppp/ip-down.d/bind9 dd11845d860cd2e30dce8556aa478eb2
 /etc/ppp/ip-up.d/bind9 dd11845d860cd2e30dce8556aa478eb2
 /etc/ufw/applications.d/bind9 ac2316819866611a68b976db9125c9a7
Description: Internet Domain Name Server
 The Berkeley Internet Name Domain (BIND) implements an Internet domain
 name server.  BIND is the most widely-used name server software on the
 Internet, and is supported by the Internet Software Consortium, www.isc.org.
 .
 This package provides the server and related configuration files.
Homepage: https://www.isc.org/downloads/bind/

Observem els components del paquet:

  • Fem la llista dels components del paquet bind:
root@portatil ~]# dpkg -L bind9
/.
/etc
/etc/apparmor.d
/etc/apparmor.d/force-complain
/etc/apparmor.d/local
/etc/apparmor.d/usr.sbin.named
/etc/bind
/etc/bind/bind.keys
/etc/bind/db.0
/etc/bind/db.127
/etc/bind/db.255
/etc/bind/db.empty
/etc/bind/db.local
/etc/bind/named.conf
/etc/bind/named.conf.default-zones
/etc/bind/named.conf.local
/etc/bind/named.conf.options
/etc/bind/zones.rfc1918
/etc/init.d
/etc/init.d/bind9
/etc/insserv.conf.d
/etc/insserv.conf.d/bind9
/etc/network
/etc/network/if-down.d
/etc/network/if-down.d/bind9
/etc/network/if-up.d
/etc/network/if-up.d/bind9
/etc/ppp
/etc/ppp/ip-down.d
/etc/ppp/ip-down.d/bind9
/etc/ppp/ip-up.d
/etc/ppp/ip-up.d/bind9
/etc/ufw
/etc/ufw/applications.d
/etc/ufw/applications.d/bind9
/lib
/lib/systemd
/lib/systemd/system
/lib/systemd/system/bind9-pkcs11.service
/lib/systemd/system/bind9-resolvconf.service
/lib/systemd/system/bind9.service
/usr
/usr/bin
/usr/bin/arpaname
/usr/bin/bind9-config
/usr/bin/named-rrchecker
/usr/lib
/usr/lib/tmpfiles.d
/usr/lib/tmpfiles.d/bind9.conf
/usr/sbin
/usr/sbin/ddns-confgen
/usr/sbin/dnssec-importkey
/usr/sbin/genrandom
/usr/sbin/isc-hmac-fixup
/usr/sbin/named
/usr/sbin/named-journalprint
/usr/sbin/named-nzd2nzf
/usr/sbin/named-pkcs11
/usr/sbin/nsec3hash
/usr/share
/usr/share/bind9
/usr/share/doc
/usr/share/doc/bind9
... 

Segons el directori on s’ubiquen es pot intuir si són executables, de configuració o de documentació. També es pot provar de filtrar la sortida en cada cas.

  • Fitxers de configuració:
root@portatil ~]# dpkg -L bind9 | grep /etc/bind
/etc/bind
/etc/bind/bind.keys
/etc/bind/db.0
/etc/bind/db.127
/etc/bind/db.255
/etc/bind/db.empty
/etc/bind/db.local
/etc/bind/named.conf
/etc/bind/named.conf.default-zones
/etc/bind/named.conf.local
/etc/bind/named.conf.options
/etc/bind/zones.rfc1918
  • Fitxers de documentació:
root@portatil ~]# dpkg -L bind9 | grep share 
/usr/share
/usr/share/bind9
/usr/share/doc
/usr/share/doc/bind9
/usr/share/doc/bind9/NEWS.Debian.gz
/usr/share/doc/bind9/README.Debian.gz
/usr/share/doc/bind9/README.gz
/usr/share/doc/bind9/changelog.Debian.gz
/usr/share/doc/bind9/changelog.gz
/usr/share/doc/bind9/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/arpaname.1.gz
/usr/share/man/man1/bind9-config.1.gz
/usr/share/man/man1/isc-config.sh.1.gz
/usr/share/man/man1/named-rrchecker.1.gz
/usr/share/man/man5
/usr/share/man/man5/named.conf.5.gz
/usr/share/man/man5/rndc.conf.5.gz
/usr/share/man/man8
/usr/share/man/man8/ddns-confgen.8.gz
/usr/share/man/man8/dnssec-coverage.8.gz
/usr/share/man/man8/dnssec-importkey.8.gz
/usr/share/man/man8/genrandom.8.gz
/usr/share/man/man8/isc-hmac-fixup.8.gz
/usr/share/man/man8/named-journalprint.8.gz
/usr/share/man/man8/named-nzd2nzf.8.gz
/usr/share/man/man8/named.8.gz
/usr/share/man/man8/nsec3hash.8.gz
/usr/share/man/man8/tsig-keygen.8.gz

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

root@portatil ~]# dpkg -L bind9 | grep bin/
/usr/bin/arpaname
/usr/bin/bind9-config
/usr/bin/named-rrchecker
/usr/sbin/ddns-confgen
/usr/sbin/dnssec-importkey
/usr/sbin/genrandom
/usr/sbin/isc-hmac-fixup
/usr/sbin/named
/usr/sbin/named-journalprint
/usr/sbin/named-nzd2nzf
/usr/sbin/named-pkcs11
/usr/sbin/nsec3hash
/usr/sbin/tsig-keygen

Resum

  • Els fitxers de documentació normalment són a /usr/share/doc i a /usr/share/man (manual).
  • Els fitxers de configuració són a /etc, /etc/bind.
  • El dimoni del servei és a /usr/sbin/named. La d és de dimoni, com la majoria de serveis a Linux.
  • El fitxer principal de configuració del servei és /etc/bind/named.conf.
  • El fitxer de govern del servei és /etc/init.d/bind9.

2. Estat del servei

Per saber l’estat del servei i quines opcions tenim:

root@server:~# service bind9
[info] Usage: /etc/init.d/bind9 {start|stop|reload|restart|force-reload|status}.
root@server:~#

Veiem que podem 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:

  • start: inicia el servei.
  • stop: atura el servei.
  • reload: recarrega els fitxers de configuració.
  • restart: reinicia el servei.
  • force-reload: fa el mateix que reload (es pot comprovar mirant en contingut del fitxer /etc/init.d/bind9).
  • 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 bind9
● bind9.service - BIND Domain Name Server
   Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-05-30 08:56:00 CEST; 2 days ago
     Docs: man:named(8)
 Main PID: 592 (named)
    Tasks: 4 (limit: 1138)
   Memory: 17.2M
   CGroup: /system.slice/bind9.service
           └─592 /usr/sbin/named -u bind

Per consultar en quins nivells d’arrancada (runlevels) s’executen els serveis podem usar l’eina sysv-rc-conf, que permet també administrar-los:

root@server:~# apt install sysv-rc-conf
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:
  insserv libcurses-perl libcurses-ui-perl libterm-readkey-perl startpar sysv-rc
Paquets suggerits:
  bootchart2
S'instal·laran els paquets NOUS següents:
  insserv libcurses-perl libcurses-ui-perl libterm-readkey-perl startpar sysv-rc sysv-rc-conf
0 actualitzats, 7 nous a instal·lar, 0 a suprimir i 0 no actualitzats.
S'ha d'obtenir 543 kB d'arxius.
Després d'aquesta operació s'empraran 1748 kB d'espai en disc addicional.
Voleu continuar? [S/n] 

Des de la línia de comandes:

root@server:~# sysv-rc-conf

L’eina és una aplicació on poden interactuar activant i desactivant serveis per als diferents nivells d’arrancada:

I per saber en quin nivell d’arrancada estem:

root@server:~# runlevel
N 5
root@server:~# 

El nivell d’arrancada 5 és el del sistema operatiu en un entorn gràfic.

3. Monitorització del servei

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

root@server:~# cat /var/log/messages | grep named
May 27 11:40:54 debian kernel: [44318.707318] audit: type=1400 audit(1590572454.798:22): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/named" pid=21684 comm="apparmor_parser"
Mar 14 06:04:09 ioc kernel: [    1.540974] e1000 0000:00:03.0 enp0s3: renamed from eth0
Mar 14 06:08:15 server kernel: [    1.729718] e1000 0000:00:03.0 enp0s3: renamed from eth0
May 30 08:55:50 server kernel: [    1.630598] e1000 0000:00:03.0 enp0s3: renamed from eth0

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@server:~# ps ax | grep bind
  592 ?        Ssl    0:00 /usr/sbin/named -u bind
 4613 pts/0    S+     0:00 grep bind
root@server:~# ls -l /var/run/named/named.pid
-rw-r--r-- 1 bind bind 4 de maig  30 09:00 /var/run/named/named.pid
root@server:~#  cat /var/run/named/named.pid
592
root@server:~#

4. Configuració del servei DNS

L’estructura dels fitxers de configuració es basa en un fitxer principal, ”/etc/bind/named.conf”, que està organitzat en 3 fitxers més:

root@server:~# cat /etc/bind/named.conf
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
root@server:~# 

El contingut de cada un dels tres fitxers és el següent:

  • ”/etc/bind/named.conf.options”: conté les opcions del servei DNS.
  • ”/etc/bind/named.conf.local”: conté les zones noves que volem afegir.
  • ”/etc/bind/named.conf.default-zones”: conté la zona arrel i les zones per defecte especificades al RFC 1912.

Per tant, definim les zones de la nostra xarxa local al fitxer named.conf.local:

zone "ioc.cat" {
    type master;
    file "/etc/bind/db.ioc.cat";
};
zone "2.0.10.in-addr.arpa" {
    type master;
    file "/etc/bind/db.ioc.rev.cat";
};

Definim la zona directa /etc/bind/db.ioc.cat:

;
; Fitxer de configuració de la zona directa del domini ioc.cat
;
$TTL 1D
ioc.cat. IN SOA server.ioc.cat. admin.ioc.cat. (
    20200915 ; Serial
    1H       ; Refresh
    2H       ; Retry
    5D       ; Expire
    2D       ; Negative cache TTL
);
ioc.cat.         IN NS server.ioc.cat.
server           IN A      10.0.2.10
www              IN A      10.0.2.11
ftp              IN CNAME  www
pc1              IN A      10.0.2.101
pc2              IN A      10.0.2.102

Definim la zona inversa /etc/bind/db.ioc.rev.cat:

;
; Fitxer de configuració de la zona inversa del domini ioc.cat
;
$TTL 1D
@ IN SOA server.ioc.cat. admin.ioc.cat. (
    20200915 ; Serial
    1H       ; Refresh
    2H       ; Retry
    5D       ; Expire
    2D       ; Negative cache TTL
);
@ IN NS  server.ioc.cat.
10 IN PTR server.ioc.cat.
11 IN PTR www.ioc.cat.
11 IN PTR ftp.ioc.cat.
101 IN PTR pc1.ioc.cat.
102 IN PTR pc2.ioc.cat.

Un cop definides les zones directa i inversa cal reiniciar el servei:

root@server:~# /etc/init.d/bind9 restart
[ ok ] Restarting bind9 (via systemctl): bind9.service.
root@server:~# /etc/init.d/bind9 status
● bind9.service - BIND Domain Name Server
   Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-05-27 20:15:04 CEST; 9s ago
     Docs: man:named(8)
  Process: 2292 ExecStart=/usr/sbin/named $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 2293 (named)
    Tasks: 4 (limit: 1138)
   Memory: 11.9M
   CGroup: /system.slice/bind9.service
           └─2293 /usr/sbin/named -u bind

Comprovem si la sintaxi dels fitxers de configuració és correcta (compte que només comprova si està ben escrit, no si té sentit) amb les comandes named-checkconf i named-checkzone.

root@server:~# named-checkconf /etc/bind/named.conf
root@server:~# named-checkconf /etc/bind/named.conf.local
root@server:~# named-checkzone -D ioc.cat /etc/bind/db.ioc.cat
zone ioc.cat/IN: loaded serial 20200915
ioc.cat.				      86400 IN SOA	server.ioc.cat. admin.ioc.cat. 20200915 3600 7200 432000 172800
ioc.cat.				      86400 IN NS	server.ioc.cat.
ftp.ioc.cat.				      86400 IN CNAME	www.ioc.cat.
pc1.ioc.cat.				      86400 IN A	10.0.2.101
pc2.ioc.cat.				      86400 IN A	10.0.2.102
server.ioc.cat.				      86400 IN A	10.0.2.9
www.ioc.cat.				      86400 IN A	10.0.2.11
OK
root@server:~# named-checkzone -D ioc.rev.cat /etc/bind/db.ioc.rev.cat
zone ioc.rev.cat/IN: loaded serial 20200915
ioc.rev.cat.				      86400 IN SOA	server.ioc.cat. admin.ioc.cat. 20200915 3600 7200 432000 172800
ioc.rev.cat.				      86400 IN NS	server.ioc.cat.
101.ioc.rev.cat.			      86400 IN PTR	pc1.ioc.cat.
102.ioc.rev.cat.			      86400 IN PTR	pc2.ioc.cat.
11.ioc.rev.cat.				      86400 IN PTR	ftp.ioc.cat.
11.ioc.rev.cat.				      86400 IN PTR	www.ioc.cat.
9.ioc.rev.cat.				      86400 IN PTR	server.ioc.cat.
OK
root@server:~# 

Cal configurar també el fitxer ”/etc/resolv.conf” que indicarà quin és el servidor DNS, en aquest cas, ell mateix.

root@server:~# echo "nameserver 10.0.2.10" > /etc/resolv.conf
root@server:~# cat /etc/resolv.conf
nameserver 10.0.2.10
root@server:~# 

Configurem ara el servei DNS per què totes les peticions que no puguin ser resoltes (en aquest cas, les que no siguin del nostre domini), siguin redirigides cap a un altre servidor DNS per tal que doni respostes no autoritatives. Cal modificar el fitxer ”/etc/bind/named.conf.options”:

options {
	directory "/var/cache/bind";

	// If there is a firewall between you and nameservers you want
	// to talk to, you may need to fix the firewall to allow multiple
	// ports to talk.  See http://www.kb.cert.org/vuls/id/800113

	// If your ISP provided one or more IP addresses for stable 
	// nameservers, you probably want to use them as forwarders.  
	// Uncomment the following block, and insert the addresses replacing 
	// the all-0's placeholder.

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };

	//====================================================================================================================================
	dnssec-validation no;

	listen-on-v6 { any; };
};

Fem que el servei recarregui les configuracions realitzades:

root@server:~# /etc/init.d/bind9 reload
[ ok ] Reloading bind9 configuration (via systemctl): bind9.service.

5. Proves amb el servidor

Comprovem directament amb ping per veure si resol les IP de la nostra xarxa, i veiem que resol totes les IP (alguns no fa ping, doncs la màquina no hi és):

root@server:~# ping server.ioc.cat
PING server (10.0.2.10) 56(84) bytes of data.
64 bytes from server (10.0.2.10): icmp_seq=1 ttl=64 time=0.021 ms
64 bytes from server (10.0.2.10): icmp_seq=2 ttl=64 time=0.061 ms
^C
--- server ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 11ms
rtt min/avg/max/mdev = 0.021/0.041/0.061/0.020 ms
root@server:~# ping www.ioc.cat
PING www.ioc.cat (10.0.2.11) 56(84) bytes of data.
^C
--- www.ioc.cat ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 26ms

root@server:~# ping ftp.ioc.cat
PING www.ioc.cat (10.0.2.11) 56(84) bytes of data.
^C
--- www.ioc.cat ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 27ms

root@server:~# ping pc1.ioc.cat
PING pc1.ioc.cat (10.0.2.101) 56(84) bytes of data.
^C
--- pc1.ioc.cat ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 26ms

root@server:~# 

Comprovem també que resol les peticions no autoritatives:

root@server:~# ping www.google.cat
PING www.google.cat (216.58.209.67) 56(84) bytes of data.
64 bytes from mad07s22-in-f3.1e100.net (216.58.209.67): icmp_seq=1 ttl=53 time=51.8 ms
64 bytes from mad07s22-in-f3.1e100.net (216.58.209.67): icmp_seq=2 ttl=53 time=42.1 ms
64 bytes from mad07s22-in-f3.1e100.net (216.58.209.67): icmp_seq=3 ttl=53 time=48.8 ms
64 bytes from mad07s22-in-f3.1e100.net (216.58.209.67): icmp_seq=4 ttl=53 time=55.7 ms
^C
--- www.google.cat ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 7ms
rtt min/avg/max/mdev = 42.082/49.585/55.673/4.976 ms

Examinarem les peticions amb més profunditat. Per això instal·larem el paquet dnsutils que porta diferents eines:

root@server:~# apt-get install dnsutils
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:
  libirs161
Paquets suggerits:
  rblcheck
S'instal·laran els paquets NOUS següents:
  dnsutils libirs161
0 actualitzats, 2 nous a instal·lar, 0 a suprimir i 0 no actualitzats.
S'ha d'obtenir 602 kB d'arxius.
Després d'aquesta operació s'empraran 1023 kB d'espai en disc addicional.
Voleu continuar? [S/n] 
...
root@server:~# dpkg -L dnsutils
/.
/usr
/usr/bin
/usr/bin/delv
/usr/bin/dig
/usr/bin/dnstap-read
/usr/bin/mdig
/usr/bin/nslookup
/usr/bin/nsupdate
/usr/share
/usr/share/doc
/usr/share/doc/dnsutils

Verifiquem amb la comanda nslookup, i podem veure com emet respostes autoritatives (ioc.cat) i no autoritavies (google.cat). També distingeix si el nom és un àlies, i si és el cas, ens informa del nom canònic (el del registre A).

root@server:~# nslookup www.ioc.cat
Server:		10.0.2.10
Address:	10.0.2.10#53

Name:	www.ioc.cat
Address: 10.0.2.11

root@server:~# nslookup ftp.ioc.cat
Server:		10.0.2.10
Address:	10.0.2.10#53

ftp.ioc.cat	canonical name = www.ioc.cat.
Name:	www.ioc.cat
Address: 10.0.2.11

root@server:~# nslookup www.google.cat
Server:		10.0.2.10
Address:	10.0.2.10#53

Non-authoritative answer:
Name:	www.google.cat
Address: 172.217.16.227
Name:	www.google.cat
Address: 2a00:1450:4003:803::2003

Podem interrogar el DNS per saber qui emet la resposta autoritativa, entre d’altres coses. Es pot consultar el man per a més informació.

root@server:~# nslookup -query=hinfo google.cat
Server:		10.0.2.10
Address:	10.0.2.10#53

Non-authoritative answer:
*** Can't find google.cat: No answer

Authoritative answers can be found from:
google.cat
	origin = ns1.google.com
	mail addr = dns-admin.google.com
	serial = 313749649
	refresh = 900
	retry = 900
	expire = 1800
	minimum = 60

Verifiquem també amb la comanda dig, que en dóna més informació, i ens mostra el contingut dels registres DNS afectats. Les línies 4 i 5 mostren una informació molt valuosa:

  • status: el correcte és NOERROR. Si apareix algun altre és que potser no tenim ben configurat el servidor DNS.
  • ANSWER: número de respostes, per si hi ha àlies.
  • AUTHORITY: si és 1 la resposta és autoritativa.
root@server:~# dig www.ioc.cat

; <<>> DiG 9.11.5-P4-5.1-Debian <<>> www.ioc.cat
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41810
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: baa9db08e31d26cffbe881885ed205b6780cb9e1566ec024 (good)
;; QUESTION SECTION:
;www.ioc.cat.			IN	A

;; ANSWER SECTION:
www.ioc.cat.		86400	IN	A	10.0.2.11

;; AUTHORITY SECTION:
ioc.cat.		86400	IN	NS	server.ioc.cat.

;; ADDITIONAL SECTION:
server.ioc.cat.		86400	IN	A	10.0.2.9

;; Query time: 0 msec
;; SERVER: 10.0.2.10#53(10.0.2.10)
;; WHEN: ds. de maig 30 09:05:26 CEST 2020
;; MSG SIZE  rcvd: 121

root@server:~# dig ftp.ioc.cat

; <<>> DiG 9.11.5-P4-5.1-Debian <<>> ftp.ioc.cat
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12205
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 92bf460703ffedb487933e255ed205c749c732bcb268270a (good)
;; QUESTION SECTION:
;ftp.ioc.cat.			IN	A

;; ANSWER SECTION:
ftp.ioc.cat.		86400	IN	CNAME	www.ioc.cat.
www.ioc.cat.		86400	IN	A	10.0.2.11

;; AUTHORITY SECTION:
ioc.cat.		86400	IN	NS	server.ioc.cat.

;; ADDITIONAL SECTION:
server.ioc.cat.		86400	IN	A	10.0.2.9

;; Query time: 0 msec
;; SERVER: 10.0.2.10#53(10.0.2.10)
;; WHEN: ds. de maig 30 09:05:43 CEST 2020
;; MSG SIZE  rcvd: 139

root@server:~# dig www.google.cat

; <<>> DiG 9.11.5-P4-5.1-Debian <<>> www.google.cat
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18671
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: bf2fac5f107aa8ab7f7de50f5ed205d27a1a839adf667399 (good)
;; QUESTION SECTION:
;www.google.cat.			IN	A

;; ANSWER SECTION:
www.google.cat.		93	IN	A	172.217.16.227

;; AUTHORITY SECTION:
.			86577	IN	NS	h.root-servers.net.
.			86577	IN	NS	b.root-servers.net.
.			86577	IN	NS	e.root-servers.net.
.			86577	IN	NS	k.root-servers.net.
.			86577	IN	NS	c.root-servers.net.
.			86577	IN	NS	d.root-servers.net.
.			86577	IN	NS	g.root-servers.net.
.			86577	IN	NS	m.root-servers.net.
.			86577	IN	NS	a.root-servers.net.
.			86577	IN	NS	j.root-servers.net.
.			86577	IN	NS	i.root-servers.net.
.			86577	IN	NS	f.root-servers.net.
.			86577	IN	NS	l.root-servers.net.

;; Query time: 0 msec
;; SERVER: 10.0.2.10#53(10.0.2.10)
;; WHEN: ds. de maig 30 09:05:54 CEST 2020
;; MSG SIZE  rcvd: 298

Una altra eina més simple és la comanda host, que també ens permet interrogar el servei DNS:

root@server:~# host www.ioc.cat
www.ioc.cat has address 10.0.2.11
root@server:~# host ftp.ioc.cat
ftp.ioc.cat is an alias for www.ioc.cat.
www.ioc.cat has address 10.0.2.11
root@server:~# host www.google.cat
www.google.cat has address 172.217.16.227
www.google.cat has IPv6 address 2a00:1450:4003:803::2003
root@server:~# 

Finalment, comprovem que la resolució inversa funciona:

root@server:~# dig -x 10.0.2.11

; <<>> DiG 9.11.5-P4-5.1-Debian <<>> -x 10.0.2.11
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54237
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: e2328c6bdbd885fb08f188255ed20ecdcd92b2ee207d8b46 (good)
;; QUESTION SECTION:
;11.2.0.10.in-addr.arpa.		IN	PTR

;; ANSWER SECTION:
11.2.0.10.in-addr.arpa.	86400	IN	PTR	www.ioc.cat.
11.2.0.10.in-addr.arpa.	86400	IN	PTR	ftp.ioc.cat.

;; AUTHORITY SECTION:
2.0.10.in-addr.arpa.	86400	IN	NS	server.ioc.cat.

;; ADDITIONAL SECTION:
server.ioc.cat.		86400	IN	A	10.0.2.10

;; Query time: 0 msec
;; SERVER: 10.0.2.10#53(10.0.2.10)
;; WHEN: ds. de maig 30 09:44:13 CEST 2020
;; MSG SIZE  rcvd: 159

6. Proves amb el client

Amb el client farem una petició que el servidor haurà de resoldre amb una resposta no autoritativa, per exemple un ping a Google. Primer de tot, esborrem la memòria cau del servidor DNS, doncs si tingués emmagatzemada la resposta, no veuríem com fa la petició al forwarder:

root@server:~# rndc flush
root@server:~# rndc reload
server reload successful

Pel que fa al client, la configuració seria la següent:

root@client:~# cat /etc/hostname
client.ioc.cat
root@client:~# cat /etc/hosts
127.0.0.1	localhost
root@client:~# cat /etc/resolv.conf 
nameserver 10.0.2.10

I des del client fem un ping:

jciberta@client:~$ ping www.google.cat

Veurem que si des del servidor capturem la petició amb el programari Wireshark la seqüència de paquets que s’intercanvien:

  1. Des del client 10.0.2.5 fa la petició al servidor 10.0.2.10.
  2. Aquest no pot emetre una resposta autoritativa i pregunta al forwarder que tenim definit en el servidor, el 8.8.8.8, que és un altre servidor DNS.
  3. El forwarder, potser al seu torn ha fet altres peticions (que no es poden veure des del servidor) i acaba emetent una resposta, la IP 172.217.16.227.
  4. Finalment el servidor 10.0.2.10 informa de la resposta al client 10.0.2.5.

Referències

* BIND9. Berkeley Internet Name Domain. [[https://www.isc.org/bind/]]
* RFC 1912: Common DNS Operational and Configuration Errors. [[https://tools.ietf.org/html/rfc1912]]
* RFC 1918: Address Allocation for Private Internets. [[https://tools.ietf.org/html/rfc1918]]
* Wireshark. [[https://www.wireshark.org/]]

Instal·lació i configuració d'un servidor cau DNS amb BIND9

En aquesta activitat es practica la instal·lació i configuració d’un servidor cau DNS amb el programari BIND9.

Realitzeu les següents tasques:

  1. Instal·leu el servidor cau DNS BIND.
  2. Mostreu evidències que la caché funciona.

1. Instal·lació del servidor cau DNS BIND.

Configurarem el servei DNS per a fer de servidor cau de la manera més senzilla. Hi hauria una segona opció que combina l’ús de forwarders, on indiquem quins servidors DNS cal consultar.

Només cal configurar el fitxer /etc/bind/named.conf.options de la següent manera:

options {
        directory "/var/cache/bind";

        allow-query-cache { any; };
        allow-query { any; };
        recursion yes;
        allow-recursion { any;};
};

Els servidors que consultarà (com que no hem indicat forwarders) seran els servidors arrel, que estan especificat en el fitxer /usr/share/dns/root.hints.

Reiniciem el servei:

root@server:~# service bind9 restart
root@server:~# service bind9 status
● bind9.service - BIND Domain Name Server
   Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-07-08 10:39:49 CEST; 3s ago
     Docs: man:named(8)
  Process: 14412 ExecStart=/usr/sbin/named $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 14413 (named)
    Tasks: 4 (limit: 1138)
   Memory: 12.0M
   CGroup: /system.slice/bind9.service
           └─14413 /usr/sbin/named -u bind

de jul. 08 10:39:49 server.ioc.cat named[14413]: network unreachable resolving './DNSKEY/IN': 2001:503:ba3e::2:30#53
de jul. 08 10:39:49 server.ioc.cat named[14413]: network unreachable resolving './NS/IN': 2001:503:ba3e::2:30#53
de jul. 08 10:39:49 server.ioc.cat named[14413]: network unreachable resolving './DNSKEY/IN': 2001:7fd::1#53
de jul. 08 10:39:49 server.ioc.cat named[14413]: network unreachable resolving './NS/IN': 2001:7fd::1#53
de jul. 08 10:39:49 server.ioc.cat named[14413]: network unreachable resolving './DNSKEY/IN': 2001:500:9f::42#53
de jul. 08 10:39:49 server.ioc.cat named[14413]: network unreachable resolving './NS/IN': 2001:500:9f::42#53
de jul. 08 10:39:49 server.ioc.cat named[14413]: network unreachable resolving './DNSKEY/IN': 2001:500:1::53#53
de jul. 08 10:39:49 server.ioc.cat named[14413]: network unreachable resolving './NS/IN': 2001:500:1::53#53
de jul. 08 10:39:50 server.ioc.cat named[14413]: managed-keys-zone: Key 20326 for zone . acceptance timer complete: key now trusted
de jul. 08 10:39:50 server.ioc.cat named[14413]: resolver priming query complete
root@server:~# 

També es pot veure a:

root@server:~# tail /var/log/syslog
Jul  8 10:39:49 server named[14413]: network unreachable resolving './DNSKEY/IN': 2001:503:ba3e::2:30#53
Jul  8 10:39:49 server named[14413]: network unreachable resolving './NS/IN': 2001:503:ba3e::2:30#53
Jul  8 10:39:49 server named[14413]: network unreachable resolving './DNSKEY/IN': 2001:7fd::1#53
Jul  8 10:39:49 server named[14413]: network unreachable resolving './NS/IN': 2001:7fd::1#53
Jul  8 10:39:49 server named[14413]: network unreachable resolving './DNSKEY/IN': 2001:500:9f::42#53
Jul  8 10:39:49 server named[14413]: network unreachable resolving './NS/IN': 2001:500:9f::42#53
Jul  8 10:39:49 server named[14413]: network unreachable resolving './DNSKEY/IN': 2001:500:1::53#53
Jul  8 10:39:49 server named[14413]: network unreachable resolving './NS/IN': 2001:500:1::53#53
Jul  8 10:39:50 server named[14413]: managed-keys-zone: Key 20326 for zone . acceptance timer complete: key now trusted
Jul  8 10:39:50 server named[14413]: resolver priming query complete
root@server:~# 

2. Evidències del funcionament de la caché.

Provem amb el servidor mateix:

echo "nameserver 10.0.2.9" > /etc/resolv.conf

Veiem que la mateixa comanda, la segona vegada s’executa més ràpid (darrer apartat, a Query time):

root@server:~# dig www.isc.org

; <<>> DiG 9.11.5-P4-5.1-Debian <<>> www.isc.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31179
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 036e3bc0ddfc94e7375e56a25f0710fe1bf796cd7ece590d (good)
;; QUESTION SECTION:
;www.isc.org.			IN	A

;; ANSWER SECTION:
www.isc.org.		60	IN	CNAME	dualstack.osff2.map.fastly.net.
dualstack.osff2.map.fastly.net.	30 IN	A	151.101.134.217

;; AUTHORITY SECTION:
fastly.net.		7200	IN	NS	ns2.fastly.net.
fastly.net.		7200	IN	NS	ns3.fastly.net.
fastly.net.		7200	IN	NS	ns1.fastly.net.
fastly.net.		7200	IN	NS	ns4.fastly.net.

;; ADDITIONAL SECTION:
ns1.fastly.net.		172799	IN	A	23.235.32.32
ns2.fastly.net.		172799	IN	A	104.156.80.32
ns3.fastly.net.		172799	IN	A	23.235.36.32
ns4.fastly.net.		172799	IN	A	104.156.84.32

;; Query time: 1185 msec
;; SERVER: 10.0.2.9#53(10.0.2.9)
;; WHEN: dj. de jul. 09 14:43:42 CEST 2020
;; MSG SIZE  rcvd: 264

root@server:~# dig www.isc.org

; <<>> DiG 9.11.5-P4-5.1-Debian <<>> www.isc.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45384
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 67b780255d296ce1e463bb945f071100e608451c5fccced4 (good)
;; QUESTION SECTION:
;www.isc.org.			IN	A

;; ANSWER SECTION:
www.isc.org.		57	IN	CNAME	dualstack.osff2.map.fastly.net.
dualstack.osff2.map.fastly.net.	28 IN	A	151.101.134.217

;; AUTHORITY SECTION:
fastly.net.		7198	IN	NS	ns2.fastly.net.
fastly.net.		7198	IN	NS	ns4.fastly.net.
fastly.net.		7198	IN	NS	ns1.fastly.net.
fastly.net.		7198	IN	NS	ns3.fastly.net.

;; ADDITIONAL SECTION:
ns1.fastly.net.		172797	IN	A	23.235.32.32
ns2.fastly.net.		172797	IN	A	104.156.80.32
ns3.fastly.net.		172797	IN	A	23.235.36.32
ns4.fastly.net.		172797	IN	A	104.156.84.32

;; Query time: 0 msec
;; SERVER: 10.0.2.9#53(10.0.2.9)
;; WHEN: dj. de jul. 09 14:43:44 CEST 2020
;; MSG SIZE  rcvd: 264

root@server:~# 

Anem a mirar el contingut de la caché. Primer de tot, s’ha de volcar en un fitxer de text i després podem comprovar si la nostra consulta està emmagatzemada.

root@server:~# rndc dumpdb -cache
root@server:~# ls -hl /var/cache/bind
total 60K
-rw-r--r-- 1 bind bind 221 de jul.   9 14:37 managed-keys.bind
-rw-r--r-- 1 bind bind 512 de jul.   9 14:37 managed-keys.bind.jnl
-rw-r--r-- 1 bind bind 51K de jul.   9 14:38 named_dump.db
root@server:~# grep isc.org /var/cache/bind/named_dump.db
isc.org.		86356	NS	ns.isc.afilias-nst.info.
			86356	NS	ams.sns-pb.isc.org.
			86356	NS	ord.sns-pb.isc.org.
			86356	NS	sfba.sns-pb.isc.org.
ams.sns-pb.isc.org.	86356	A	199.6.1.30
ord.sns-pb.isc.org.	86356	A	199.6.0.30
sfba.sns-pb.isc.org.	86356	A	149.20.64.3
www.isc.org.		16	CNAME	dualstack.osff2.map.fastly.net.
					20200806223132 20200707213623 27566 isc.org.
root@server:~# grep fastly /var/cache/bind/named_dump.db
fastly.net.		7129	NS	ns1.fastly.net.
			7129	NS	ns2.fastly.net.
			7129	NS	ns3.fastly.net.
			7129	NS	ns4.fastly.net.
ns1.fastly.net.		172728	A	23.235.32.32
ns2.fastly.net.		172728	A	104.156.80.32
ns3.fastly.net.		172728	A	23.235.36.32
ns4.fastly.net.		172728	A	104.156.84.32
root@server:~# 

En el cas que volguem esborrar la caché:

root@server:~# rndc flush
root@server:~# rndc reload
server reload successful

Instal·lació i configuració d'un servidor DNS amb Windows Server

En aquesta activitat es practica la instal·lació i configuració del servidor DNS del sistema operatiu Windows Server.

Tenim una xarxa amb la següent estructura de noms:

server.ioc.cat	10.0.2.1
www.ioc.cat		  10.0.2.10
ftp.ioc.cat		  10.0.2.10 (àlies)
pc1.ioc.cat		  10.0.2.101
pc2.ioc.cat		  10.0.2.102
...

Realitzeu les següents tasques:

  1. Instal·leu el servidor DNS de Windows Server.
  2. Consulteu l’estat del servei.
  3. Comenteu l’estructura del servidor DNS.
  4. Configureu el servei DNS per tal que resolgui l’estructura de noms de la xarxa i els d’Internet.
  5. Comproveu amb el servidor que es resolen totes les peticions DNS.

1. Instal·lació del servidor DNS.

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.

Seleccionem:

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

  • Add features.
  • Install.

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

2. Estat del servei.

Per saber l’estat del servei cal anar a l’apartat DNS del dashboard i anar a les opcions de serveis (services). Fent botó dret tindrem les opcions d’iniciar, aturar i reiniciar el servei.

També es pot veure des de l’intèrpret de comandes (Windows PowerShell) amb:

PS C:\> service dns

Status   Name               DisplayName
------   ----               -----------
Running  dns                DNS Server

PS C:\>

3. Estructura del servidor DNS.

Des de l’administrador del servidor, i dins del DNS, anem a l’apartat de Servers, i fent botó dret en el servidor actual, obrim l’administrador del servidor DNS:

A partir d’aquí s’obre l’administrador del servei DNS, que té la següent estructura:

Aquí es pot veure on es configuraran les zones directes (Forward Lookup Zones) i les zones inverses (Reverse Lookup Zones), i els forwarders. Hi ha també l’espai de missatges de monitoratge estàndard (Global Logs) i els 13 servidors arrel que ja estan entrats (Root Hints) com qualsevol programari DNS.

4. Configuració del servei DNS.

Afegim la zona directa fent botó dret sobre Forward Lookup Zones amb l’opció New Zone.

Creem una zona primària amb el nom ioc.cat, i ens proposa de crear un fitxer anomenat ioc.cat.dns, no permetem actualitzacions dinàmiques i finalitzem.

Un cop creada la zona, podem veure que s’han creat els registres SOA i NS automàticament. Es poden modificar els paràmetres anant a propietats, així com també el TTL, els temps de Refresh, Retry, Expire i Negative cache TTL.

Creem també la zona inversa, ja que quan afegim el registre A, ens permet de crear automàticament el PTR associat. Cal introduir la part de xarxa de la IP i el mateix servidor ja ens proposa un nom per a la zona inversa.

A partir d’aquí creem 4 registres A (server, www, pc1 i pc2) i un CNAME (ftp):

Un cop entrats tots, podem observar la configuració definitiva. La zona directa queda així:

I la zona inversa:

Cal configurar també la xarxa per indicar qui és el servidor DNS, en aquest cas, ell mateix.

I comprovem des del shell que els canvis s’han realitzat correctament:

PS C:\> ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : server
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Intel(R) PRO/1000 MT Desktop Adapter
   Physical Address. . . . . . . . . : 08-00-27-6D-DB-18
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::191d:9a5b:79e5:89e1%12(Preferred)
   IPv4 Address. . . . . . . . . . . : 10.0.2.1(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 10.0.2.2
   DHCPv6 IAID . . . . . . . . . . . : 302514215
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-26-14-5D-FD-08-00-27-6D-DB-18
   DNS Servers . . . . . . . . . . . : 10.0.2.1
   NetBIOS over Tcpip. . . . . . . . : Enabled

PS C:\>

Per acabar, configurem ara el servei DNS per què totes les peticions que no puguin ser resoltes, siguin redirigides cap a un altre servidor DNS per tal que doni respostes no autoritatives.

5. Proves amb el servidor.

Comprovem directament amb ping per veure si resol les IP de la nostra xarxa, i veiem que resol totes les IP (alguns no fa ping, doncs la màquina no hi és):

PS C:\> ping server.ioc.cat

Pinging server.ioc.cat [10.0.2.1] with 32 bytes of data:
Reply from 10.0.2.1: bytes=32 time<1ms TTL=255
Reply from 10.0.2.1: bytes=32 time<1ms TTL=255
Reply from 10.0.2.1: bytes=32 time<1ms TTL=255

Ping statistics for 10.0.2.1:
    Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
Control-C
PS C:\> ping www.ioc.cat

Pinging www.ioc.cat [10.0.2.10] with 32 bytes of data:
Reply from 10.0.2.1: Destination host unreachable.

Ping statistics for 10.0.2.10:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Control-C
PS C:\> ping pc1.ioc.cat

Pinging pc1.ioc.cat [10.0.2.101] with 32 bytes of data:
Reply from 10.0.2.1: Destination host unreachable.

Ping statistics for 10.0.2.101:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Control-C

Comprovem també que resol les peticions no autoritatives:

PS C:\> ping www.google.cat

Pinging www.google.cat [172.217.168.163] with 32 bytes of data:
Reply from 172.217.168.163: bytes=32 time=80ms TTL=116
Reply from 172.217.168.163: bytes=32 time=77ms TTL=116
Reply from 172.217.168.163: bytes=32 time=76ms TTL=116

Ping statistics for 172.217.168.163:
    Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 76ms, Maximum = 80ms, Average = 77ms
Control-C
PS C:\>

Examinarem les peticions amb més profunditat. Verifiquem amb la comanda nslookup, i podem veure com emet respostes autoritatives (ioc.cat) i no autoritatives (google.cat). També distingeix si el nom és un àlies, i si és el cas, ens informa del nom canònic (el del registre A).

PS C:\> nslookup www.ioc.cat
Server:  UnKnown
Address:  10.0.2.1

Name:    www.ioc.cat
Address:  10.0.2.10

PS C:\> nslookup ftp.ioc.cat
Server:  UnKnown
Address:  10.0.2.1

Name:    www.ioc.cat
Address:  10.0.2.10
Aliases:  ftp.ioc.cat

PS C:\> nslookup www.google.cat
Server:  UnKnown
Address:  10.0.2.1

Non-authoritative answer:
Name:    www.google.cat
Addresses:  2a00:1450:4003:80a::2003
          172.217.168.163

PS C:\>

Finalment, podem interrogar el DNS per saber qui emet la resposta autoritativa, entre altres coses.

PS C:\> nslookup -query=hinfo www.google.cat
Server:  UnKnown
Address:  10.0.2.1

google.cat
        primary name server = ns1.google.com
        responsible mail addr = dns-admin.google.com
        serial  = 322480606
        refresh = 900 (15 mins)
        retry   = 900 (15 mins)
        expire  = 1800 (30 mins)
        default TTL = 60 (1 min)
PS C:\>

Instal·lació i configuració d'un servidor DNS amb Dnsmask

En aquesta activitat es practica la instal·lació i configuració d’el servidor DNS Dnsmask. Dnsmasq és un servidor DNS lleuger que incorpora també un servidor DHCP. És ideal per a xarxes petites, per la seva senzilla configuració i pels pocs recursos que consumeix.

Realitzeu les següents tasques:

  1. Instal·leu el servidor DNS Dnsmask.
  2. Configureu el servei DNS per tal que resolgui l’estructura de noms de la xarxa i els d’Internet. Observeu els comentaris del fitxer de configuració.
  3. Comproveu amb el servidor que es resolen totes les peticions DNS (autoritatives i no autoritatives).
  4. Comproveu amb un client que també es resolen totes les peticions DNS.

1. Instal·lació de Dnsmasq

Per instal·lar Dnsmasq es pot fer a través del repositori:

root@server:~# apt-get install dnsmasq
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:
  dns-root-data dnsmasq-base
Paquets suggerits:
  resolvconf
S'instal·laran els paquets NOUS següents:
  dns-root-data dnsmasq dnsmasq-base
0 actualitzats, 3 nous a instal·lar, 0 a suprimir i 92 no actualitzats.
S'ha d'obtenir 450 kB d'arxius.
Després d'aquesta operació s'empraran 1011 kB d'espai en disc addicional.
Voleu continuar? [S/n] 

2. Configuració de Dnsmasq

El fitxer de configuració és /etc/dnsmasq.conf. La configuració més bàsica és la següent.

  • No reenviem peticions de noms plans (sense domini) i tampoc les que no estiguin en l’espai d’adreces no encaminables:
# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv
  • Resolem les peticions no autoritatives en l’estricte ordre que apareixen els altres servidors de domini al fitxer /etc/resolv.conf:
# By  default,  dnsmasq  will  send queries to any of the upstream
# servers it knows about and tries to favour servers to are  known
# to  be  up.  Uncommenting this forces dnsmasq to try each query
# with  each  server  strictly  in  the  order  they   appear   in
# /etc/resolv.conf
strict-order
  • Indiquem el domini de la nostra xarxa i l’opció d’afegir automàticament el domini als noms plans:
# Set this (and domain: see below) if you want to have a domain
# automatically added to simple names in a hosts-file.
expand-hosts

# Set the domain for dnsmasq. this is optional, but if it is set, it
# does the following things.
# 1) Allows DHCP hosts to have fully qualified domain names, as long
#     as the domain part matches this setting.
# 2) Sets the "domain" DHCP option thereby potentially setting the
#    domain of all systems configured by DHCP
# 3) Provides the domain part for "expand-hosts"
domain=ioc.cat 
  • Té bastants més opcions. Per exemple, es poden configurar també redireccions de domini per tal de bloquejar-los:
# Add domains which you want to force to an IP address here.
# The example below send any host in double-click.net to a local
# web-server.
#address=/double-click.net/127.0.0.1

Un cop configurat el servei, reiniciem el servei DNS, i comprovem que s’ha arrancat correctament:

root@server:~# systemctl restart dnsmasq
root@server:~# systemctl status dnsmasq
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
   Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-04-08 04:45:32 CEST; 5s ago
  Process: 21453 ExecStop=/etc/init.d/dnsmasq systemd-stop-resolvconf (code=exited, status=0/SUCCESS)
  Process: 21472 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/SUCCESS)
  Process: 21463 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS)
  Process: 21461 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, status=0/SUCCESS)
 Main PID: 21471 (dnsmasq)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/dnsmasq.service
           └─21471 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-o

abr 08 04:45:32 server.ioc.cat systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
abr 08 04:45:32 server.ioc.cat dnsmasq[21461]: dnsmasq: syntax check OK.
abr 08 04:45:32 server.ioc.cat dnsmasq[21471]: started, version 2.76 cachesize 150
abr 08 04:45:32 server.ioc.cat dnsmasq[21471]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 n
abr 08 04:45:32 server.ioc.cat dnsmasq[21471]: DNS service limited to local subnets
abr 08 04:45:32 server.ioc.cat dnsmasq[21471]: reading /etc/resolv.conf
abr 08 04:45:32 server.ioc.cat dnsmasq[21471]: using nameserver 8.8.8.8#53
abr 08 04:45:32 server.ioc.cat dnsmasq[21471]: using nameserver 8.8.4.4#53
abr 08 04:45:32 server.ioc.cat dnsmasq[21471]: read /etc/hosts - 21 addresses
abr 08 04:45:32 server.ioc.cat systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.

Comprovem que el servei està escoltant, és a dir que el port 53 està obert amb nmap. Obtenim també el programari i la versió del servei DNS que s’està executant en el servidor:

root@server:~# nmap server.ioc.cat -A

Starting Nmap 7.40 ( https://nmap.org ) at 2020-04-08 05:11 CEST
Nmap scan report for server.ioc.cat (10.0.2.1)
Host is up (0.000017s latency).
Not shown: 998 closed ports
PORT    STATE SERVICE VERSION
53/tcp  open  domain  dnsmasq 2.76
| dns-nsid: 
|_  bind.version: dnsmasq-2.76
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.8 - 4.6
Network Distance: 0 hops

Host script results:
|_clock-skew: mean: -29s, deviation: 0s, median: -29s

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 21.33 seconds

Per afegir els registres DNS, només cal afegir-los al fitxer /etc/hosts. Dnsmasq respondrà totes les peticions DNS dels clients amb aquestes dades.

root@server:~# cat /etc/hostname
server.ioc.cat
root@server:~# cat /etc/hosts
127.0.0.1	localhost
10.0.2.1	server.ioc.cat
10.0.2.5	client.ioc.cat
10.0.2.100	www ftp
root@server:~# cat /etc/resolv.conf 
nameserver 8.8.8.8
nameserver 8.8.4.4

3. Proves amb el servidor

Realitzem les proves des del servidor. Podem observar que per a la primera petició (client.ioc.cat) emet una resposta autoritativa usant el contingut de /etc/hosts, per la segona (www.google.cat) utilitza els servidors que hi ha a /etc/resolv.conf i per la tercera (www) torna a emetre una resposta autoritativa. Observem en aquesta, encara que el servidor no està disponible, la resolució es fa.

root@server:~# ping client.ioc.cat
PING client.ioc.cat (10.0.2.5) 56(84) bytes of data.
64 bytes from client.ioc.cat (10.0.2.5): icmp_seq=1 ttl=64 time=0.426 ms
64 bytes from client.ioc.cat (10.0.2.5): icmp_seq=2 ttl=64 time=0.696 ms
64 bytes from client.ioc.cat (10.0.2.5): icmp_seq=3 ttl=64 time=0.641 ms
^C
--- client.ioc.cat ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2021ms
rtt min/avg/max/mdev = 0.426/0.587/0.696/0.119 ms
root@server:~# ping www.google.cat
PING www.google.cat (216.58.211.227) 56(84) bytes of data.
64 bytes from mad01s24-in-f227.1e100.net (216.58.211.227): icmp_seq=1 ttl=53 time=52.4 ms
64 bytes from mad01s24-in-f227.1e100.net (216.58.211.227): icmp_seq=2 ttl=53 time=41.7 ms
64 bytes from mad01s24-in-f227.1e100.net (216.58.211.227): icmp_seq=3 ttl=53 time=48.9 ms
^C
--- www.google.cat ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 41.786/47.724/52.482/4.452 ms
root@server:~# ping www
PING www (10.0.2.100) 56(84) bytes of data.
From server.ioc.cat (10.0.2.1) icmp_seq=1 Destination Host Unreachable
From server.ioc.cat (10.0.2.1) icmp_seq=2 Destination Host Unreachable
From server.ioc.cat (10.0.2.1) icmp_seq=3 Destination Host Unreachable
^C
--- www ping statistics ---
5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4075ms

4. Proves amb el client

Pel que fa al client, la configuració seria la següent:

root@server:~# cat /etc/hostname
client.ioc.cat
root@server:~# cat /etc/hosts
127.0.0.1	localhost
root@server:~# cat /etc/resolv.conf 
nameserver 10.0.2.1

La resposta per a la primera petició és:

root@client:/home/jciberta# nslookup server.ioc.cat
Server:		10.0.2.1
Address:	10.0.2.1#53

Name:	server.ioc.cat
Address: 10.0.2.1

root@client:/home/jciberta# ping server.ioc.cat
PING server.ioc.cat (10.0.2.1) 56(84) bytes of data.
64 bytes from server.ioc.cat (10.0.2.1): icmp_seq=1 ttl=64 time=0.162 ms
64 bytes from server.ioc.cat (10.0.2.1): icmp_seq=2 ttl=64 time=0.744 ms
64 bytes from server.ioc.cat (10.0.2.1): icmp_seq=3 ttl=64 time=0.661 ms
^C
--- server.ioc.cat ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.162/0.522/0.744/0.257 ms

Observem com la segona resposta és una resposta no autoritativa (ho indica el resultat de la comanda nslookup):

root@client:/home/jciberta# nslookup www.google.cat
Server:		10.0.2.1
Address:	10.0.2.1#53

Non-authoritative answer:
Name:	www.google.cat
Address: 216.58.211.227

root@client:/home/jciberta# ping www.google.cat
PING www.google.cat (216.58.211.227) 56(84) bytes of data.
64 bytes from mad07s20-in-f3.1e100.net (216.58.211.227): icmp_seq=1 ttl=53 time=52.1 ms
64 bytes from mad07s20-in-f3.1e100.net (216.58.211.227): icmp_seq=2 ttl=53 time=45.8 ms
64 bytes from mad07s20-in-f3.1e100.net (216.58.211.227): icmp_seq=3 ttl=53 time=44.8 ms
^C
--- www.google.cat ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 44.815/47.623/52.171/3.245 ms

I finalment, en el tercer cas, torna a ser una resposta autoritativa:

root@client:/home/jciberta# nslookup www
Server:		10.0.2.1
Address:	10.0.2.1#53

Name:	www
Address: 10.0.2.100

root@client:/home/jciberta# ping www
PING www (10.0.2.100) 56(84) bytes of data.
From client.ioc.cat (10.0.2.1) icmp_seq=1 Destination Host Unreachable
From client.ioc.cat (10.0.2.1) icmp_seq=2 Destination Host Unreachable
From client.ioc.cat (10.0.2.1) icmp_seq=3 Destination Host Unreachable
^C
--- www ping statistics ---
4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3016ms
pipe 3
root@client:/home/jciberta# ping ftp
PING www (10.0.2.100) 56(84) bytes of data.
From client.ioc.cat (10.0.2.1) icmp_seq=1 Destination Host Unreachable
From client.ioc.cat (10.0.2.1) icmp_seq=2 Destination Host Unreachable
From client.ioc.cat (10.0.2.1) icmp_seq=3 Destination Host Unreachable
^C
--- www ping statistics ---
4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4023ms

Amb la comanda dig obtenim més informació:

root@client:/home/jciberta# dig server.ioc.cat

; <<>> DiG 9.10.3-P4-Ubuntu <<>> server.ioc.cat
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12465
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;server.ioc.cat.			IN	A

;; ANSWER SECTION:
server.ioc.cat.		0	IN	A	10.0.2.1

;; Query time: 0 msec
;; SERVER: 10.0.2.1#53(10.0.2.1)
;; WHEN: Wed Apr 08 05:19:50 CEST 2020
;; MSG SIZE  rcvd: 59

Per fer una resolució inversa, usem també la comanda dig:

root@client:/home/jciberta# dig -x 10.0.2.1

; <<>> DiG 9.10.3-P4-Ubuntu <<>> -x 10.0.2.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52633
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;1.2.0.10.in-addr.arpa.		IN	PTR

;; ANSWER SECTION:
1.2.0.10.in-addr.arpa.	0	IN	PTR	server.ioc.cat.

;; Query time: 0 msec
;; SERVER: 10.0.2.1#53(10.0.2.1)
;; WHEN: Wed Apr 08 05:29:25 CEST 2020
;; MSG SIZE  rcvd: 79

Anar a la pàgina següent:
Exercicis