Activitat AC101 - Comandes client DNS
Objectiu
• Investigar i treballar amb les diferents comandes client a Windows i Linux per a consultes DNS.
Instruccions
• Es reaprofiten les màquines que heu utilitzat al NF1.
Introducció
Abans de començar a muntar i administrar el servei de DNS, és convenient que entenguem quin tipus d'informació podem obtenir del DNS, i sobretot, com la podem obtenir. En aquest exercici veurem comandes senzilles des de Windows i Linux per tal d'obtenir i contrastar aquesta informació en cas que s'hagi de comprovar si és certa o no.
Dins Windows, si volem consultar per consola quines DNS tenim configurades al sistema, ho podem fer a través de la comanda ipconfig /all. Amb l'execució, per cada interfície, ens apareixen els servidors DNS configurats.
A teoria hem parlat de que el concepte de memòria cau en l'ambient del DNS és molt important, pel que podem veure què tenim catxejat actualment al nostre resolver DNS amb ipconfig /displaydns.
Si volem fer net, és a dir, esborrar la memòria cau des del nostre client, ho podem fer amb ipconfig /flushdns. Veureu que si ara torneu a fer la comanda de displaydns, no us sortirà pràcticament res.
Amb la comanda ping sobre un hostname es fa primer una petició de resolució, de forma que podeu fer per exemple 'ping , i després ipconfig /displaydns, i veureu com ha catxejat la resposta.
Podeu veure un exemple del contingut a la següent imatge:

-
Aquí hi trobarem diversos valors:
- Evidentment el primer serà el registre DNS en qüestió. El segon valor ens indica quin tipus de RR és (podeu consultar l'equivalència numèrica aquí).
- Després el temps de vida del registre a nivell de memòria cau, en segons.
- Els dos següents paràmetres no cal dedicar-hi atenció en el punt on som, i evidentment, a l'últim si, que és el que mostra el valor en qüestió.
Si el que volem però, és fer directament peticions DNS, cal que ho fem amb l'eina nslookup. La seva funció bàsica és trobar la IP d'un nom de domini o realitzar una consulta de DNS inversa. Per defecte, la resposta l'obtindrà dels valors de la memòria cau del DNS de l'ordinador on s'executa, però es pot forçar a utilitzar-lo contra un servidor DNS en concret. Vegem-ne el seu ús:
Si llancem nslookup sense cap paràmetre, el que veurem serà el servidor DNS primari que tenim configurat. Així i tot, això no ens aporta massa.
Nslookup funciona sota dos modes:
- Mode normal (no interactiu)
- Mode interactiu
El normal consisteix en executar la comanda i els paràmetres addicionals tot seguit a la mateixa comanda.
La sintaxi és:

En canvi, en el mode interactiu, es fa la consulta en temps real i de manera consecutiva en línies diferents, on ens mostrarà un caràcter > abans de cada comanda introduïda. Per entrar-hi, només cal teclejar 'nslookup' i veureu com al final ja us apareix el caràcter >. Si volem especificar un servidor DNS diferent del que s'anuncia cal utilitzar la comanda server seguida de la IP del servidor. A partir de la comanda 'set' i algunes opcions i paràmetres podem fer pràcticament tota la resta d'opcions disponibles.
Des del caràcter > podem posar el nom de host a buscar directament. Vegem-ne un exemple:

Tal com veieu, s'indica a través de quin servidor es fa la consulta, i com aquesta no és autoritativa. Evidentment es retorna també el valor de resposta a la consulta.
Si volem buscar alguna cosa concreta, com per exemple, quins son els autoritatius pel domini grn.cat, cal que prèviament ho marqueu amb un SET tal com veieu a la imatge:

La resposta és no autoritativa perquè ens la retorna el servidor DNS de 80.58.61.250, però ara ja sabem quins són els servidors autoritatius pel domini en concret.
Si ara per exemple volem fer la consulta del principi (el host grn.cat on apunta?) però als autoritatius, ho podem fer de la següent manera.

En aquest cas que no veieu res, la resposta és autoritativa.
Si el que voleu, és veure amb més debug la consulta, on hi consten les parts del protocol DNS, primer cal fer 'set debug' i després la consulta en si. Teniu un exemple a la imatge:

Per aquell nom de domini també podem conèixer tota la seva informació DNS. Per això caldrà utilitzar la opció 'set type=ANY" tal com veieu a l'exemple :

Compte, això ens mostra tot allò vinculat directament al nom de domini, no els seus subdominis ni la informació associada als mateixos.
Amb Linux també tenim diferents eines per fer aquesta feina. No obstant, el primer que hem de tenir clar però és com funciona el sistema resolver de la Ubuntu 22.
Antigament, Linux configurava el resolver a partir dels paràmetres introduïts a /etc/resolv.conf. Ara però, si mireu aquest fitxer, hi trobareu que diu:
This file is managed by systemd-resolved. Do not edit.
I si feu un 'netstat -putan' veureu una entrada com la següent:

Pel que systemd-resolved és qui controla ara la resolució de DNS.
Per configurar-lo caldrà editar el fitxer de /etc/systemd/resolved.conf. Penseu però que en casos en que hàgiu obtingut la configuració IP via DHCP, les DNS s'hauran obtingut d'aquesta manera. En cas d'haver fet configuració fixa amb el netplan, s'hauran obtingut d'aquí.
En tot cas, amb la comanda 'resolvectl status' podeu obtenir-ne la informació. Ho podeu veure a la següent imatge:

Amb Linux treballarem amb dues comandes, la comanda 'host' i la comanda 'dig'. A més, si ens hi fixem, també tenim disponible la comanda 'nslookup' vista anteriorment. Aquestes comandes ja haurien de venir instal·lades, però si pel que sigui no les teniu, cal instal·lar el paquet 'dnsutils'.
La comanda 'host' és la utilitat més fàcil per utilitzar a nivell de DNS per consola, i ens permet realitzar cerques DNS que es tradueixen en IPs i viceversa. La manera més simple es la comanda 'host' seguida del nom de domini a buscar. Vegeu-ne l'exemple:

Ara bé, tal com veieu, no és com abans, on només obteníem la resposta de resolució directa, sinó que aquí se'ns proporciona informació vinculada, com per exemple els servidors MX. Per altra banda, aquí no se'ns indica a quin servidor DNS s'ha fet la consulta.
Per consultar els servidors autoritatius d'un domini, ho fem amb el paràmetre -t, tal com podeu veure de la següent manera:

El paràmetre -t pot anar acompanyat de NS, MX, CNAME, .....Ara doncs, també podem fer la consulta que hem fet abans, però contra un servidor en concret, com pot ser per exemple, un dels autoritatius.

El valor és el mateix que al principi però aquí s'indica contra quin servidor específicament s'ha fet la consulta.
Per obtenir els valors del registre SOA, ens cal utilitzar el paràmetre -C.

Si volem obtenir tota la informació i a més amb detall, cal fer servir la opció -v tal com veieu:

Per fer aquestes consultes, també podem utilitzar l'eina dig. Aquesta ens permet moltes més funcionalitats tot i que de moment només treballarem amb les més bàsiques.
La seva sintaxi bàsica és:
On:
- Tipus: el tipus de la consulta (RR de tipus A, de tipus MX, ...)
- Nom: el nom del registre a buscar
- Servidor: el servidor a qui consultar. És opcional i s'especifica acompanyat d'una @.
Cal tenir en compte que normalment servidor es posa a final de línia però ho podeu trobar al principi. També a vegades el nom i el tipus també van intercanviats d'ordre, pel que cal tenir molt clar quin és cada paràmetre.
La consulta més simple seria consultar a quina IP apunta una entrada de domini. Per defecte dig mostrarà el registre A si no s'especifiquen altres opcions. Com a diferencia principal, tenim el debug que obtenim a la sortida. Vegem-ne un exemple:

Veiem les parts del protocol DNS, l'estat, el temps de la resposta, a quin servidor s'ha fet, etc.
Ara vegem un exemple sobre la consulta de RR de tipus NS.

Ara que hem obtingut els autoritatius, repetim la primera cerca, però especificant directament el servidor a consultar, utilitzant l'@.

Observeu com el servidor on s'ha fet la consulta ha canviat. Tal com hem vist en els altres casos, podem demanar diferents tipus com MX, CNAME, ANY, o SOA, per exemple.
Com a opció addicional, amb el paràmetre -x podem fer cerques de resolució inversa, com per exemple la que veieu a continuació:

Ara ja tot és qüestió de investigar més sobre les eines i els seus paràmetres, les opcions de cada consulta, i la situació de cada domini DNS.
Resum comandes DNS a Windows
Configuració DNS del sistema
Mostra els servidors DNS configurats per cada interfície.
Gestió de la memòria cau DNS
# Veure contingut de la memòria cau
ipconfig /displaydns
# Esborrar la memòria cau
ipconfig /flushdns
Exemple de consulta amb ping
Després del ping, la resposta queda catxejada i es pot veure amb displaydns.
Els valors mostren:
- Registre DNS
- Tipus de RR (Resource Record)
- TTL en segons
- Valor de la resposta
Comanda nslookup
L'eina nslookup permet fer peticions DNS directes. Pot treballar en dos modes:
Mode no interactiu
Mode interactiu
Consultes específiques amb nslookup
Buscar servidors autoritatius:
Consulta a servidor autoritatiu:
Mode debug:
Tota la informació DNS:
Resum comandes DNS a Linux
Sistema resolver a Ubuntu 22
El DNS es gestiona amb systemd-resolved. El fitxer /etc/resolv.conf està gestionat automàticament.
Veure configuració actual:
Comanda host
Consulta bàsica:
Consultar servidors autoritatius:
Consulta a servidor específic:
Registre SOA:
Mode verbose:
Comanda dig
Sintaxi:
Consulta bàsica:
Consulta NS:
Consulta a servidor específic:
Resolució inversa:
Resum d'eines
| Eina | Sistema | Funcionalitat principal |
|---|---|---|
ipconfig |
Windows | Gestió configuració i cau DNS |
nslookup |
Windows/Linux | Consultes DNS interactives |
host |
Linux | Consultes DNS simples |
dig |
Linux | Consultes DNS detallades |
resolvectl |
Linux | Gestió systemd-resolved |
Notes
- Instal·lar paquet
dnsutilssi les comandes Linux no estan disponibles systemd-resolvedcontrola la resolució DNS a Ubuntu 22- Configuració DNS via DHCP o netplan segons el cas.