Salta el contingut

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.

ipconfig /all

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.

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.

ipconfig /flushdns

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.

ping twitter.com

Podeu veure un exemple del contingut a la següent imatge:

Imagen1

  • 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

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:

Imagen2

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:

Imagen3

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:

Imagen4

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.

Imagen5

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:

Imagen6

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 :

Imagen7

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:

Imagen9

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:

Imagen10

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:

Imagen11

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:

Imagen12

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.

Imagen13

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.

Imagen14

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

Imagen15

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:

dig [tipus] [nom] [servidor]

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:

Imagen16

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.

Imagen17

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

Imagen18

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ó:

Imagen19

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

ipconfig /all

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

ping hostname
ipconfig /displaydns

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

nslookup [hostname] [servidor_dns]

Mode interactiu

nslookup
> hostname_a_buscar

Consultes específiques amb nslookup

Buscar servidors autoritatius:

> set type=NS
> asixsapa.cat

Consulta a servidor autoritatiu:

> server IP_autoritatiu
> hostname

Mode debug:

> set debug
> hostname

Tota la informació DNS:

> set type=ANY
> asixsapa.cat

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:

resolvectl status

Comanda host

Consulta bàsica:

host asixsapa.cat

Consultar servidors autoritatius:

host -t NS asixsapa.cat

Consulta a servidor específic:

host asixsapa.cat servidor_dns

Registre SOA:

host -C asixsapa.cat

Mode verbose:

host -v asixsapa.cat

Comanda dig

Sintaxi:

dig [tipus] [nom] [@servidor]

Consulta bàsica:

dig asixsapa.cat

Consulta NS:

dig NS asixsapa.cat

Consulta a servidor específic:

dig asixsapa.cat @servidor_autoritatiu

Resolució inversa:

dig -x IP_address

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 dnsutils si les comandes Linux no estan disponibles
  • systemd-resolved controla la resolució DNS a Ubuntu 22
  • Configuració DNS via DHCP o netplan segons el cas.