DNS

Domini

  • Un domini d'internet és una xarxa de identificació associada a un grup de dispositius o equips connectats a la xarxa internet.
    • El propòsit principal dels noms de domini en internet i del sistema dels noms de domini (DNS) és traduir les adreces IP de cada node actiu a la xarxa, en termes fàcils de trobar i memoritzar.
    • Aquesta abastracció fa possible que un servei de xarxa pugui moures d'un lloc geogràfic a un altre en la xarxa encara que el canvi implique que tindrà una IP diferent.
    • Els noms de domini no són sensibles a majúscules i minúscules (case sensitive) i per tant poden escriure's de qualsevol de les dues formes.
  • Un domini és un conjunt d’ordinadors que estan interconnectats en xarxa mitjançant medis físics: cables, aparells electrònics o inalàmbrics i formen part d’una estructura jeràrquica que permet compartir recursos i accedir a ells depenent dels privilegis configurats als usuaris del domini.
  • Una zona és igual o més petita que un domini.
    • Un domini privat o petit com ies.mvm pot tenir suficient amb una sola zona, però els dominis grans com els dominis de primer nivell (.com) o dominis de segon nivells grans (p.ex. hp.com) poden delegar la gestió de la resolució de noms en diferents zones.
    • Un servidor de DNS pot gestionar una o més zones i no totes les zones d'un mateix domini han de ser gestionades per un sol servidor de DNS.

Noms de domini

  • Els noms de domini tenen una estructura d'arbre similar a la dels sistemes de fitxers en linux.
  • Tot nom de domini parteix d'una arrel (representada per "." ). Així l'adreça iesmvm.xtec.cat és en realitat iesmvm.xtec.cat. (amb punt).
  • El punt indica que la resolució de nom de domini s'ha d'iniciar al servidor root.
    • Root servers
      • Els servidors d'arrel de DNS són els servidors principals de DNS i els que saben on estan els servidors de noms per a cadascuna de les zones de més alt nivell d'Internet (Top Level Domains).
      • Hi ha tretze servidors arrel d'Internet (cadascun amb les seves repliques de seguretat) distribuïts per tota la xarxa.
      • Aquests servidors reben milers de consultes per segon.
      • Cadascun d'aquests servidors té una lletra (de la A a la M) i amb el nom de màquina lletra.root-servers.net, per exemple A.ROOT-SERVERS.NET.
    • Top Level Domains (TLD)
      • Un domini de primer nivell és l'última part d'un domini d'Internet; és a dir, les lletres que segueixen l'últim punt del domini.
      • Per exemple, al nom de domini iesmvm.xtec.cat, el domini de primer nivell és cat.
      • Existeixen un nombre limitat de dominis de primer nivell gestionats normalment per la ICAAN.
      • La Internet Assigned Numbers Authority - IANA (Autoritat per l'assignació de nombres a Internet) actualment classifica els dominis de primer nivell en tres tipus:
        • Domini de primer nivell territorial (en anglès: country code top-level domain o ccTLD): És el tipus que té cada estat o territori depenent.
          • Té dues lletres, per exemple jp pel Japò.
        • Domini de primer nivell genèric (en anglès: generic top-level domain o gTLD): En teoria els fan servir les organitzacions d'una classe particular (per exemple, com per organitzacions comercials).
          • Té tres o més lletres.
          • La majoria de gTLDs són d'ús internacional, però per raons històriques els dominis mil i gov són restringits pel govern federal i l'exèrcit dels EUA respectivament.
          • Aquests dominis es subclassifiquen en dominis de primer nivell patrocinats sTLD, com .cat, .aero, .coop i .museum, i dominis de primer nivell no patrocinats uTLD, com .biz, .info, .name i .pro.
        • Domini de primer nivell d'infraestructura: L'únic d'aquest tipus confirmat és arpa, encara que se sap que .root ha existit per raons no conegudes.
      • Una llista completa dels TLDs existents, en preparació i retirats, es pot trobar aquí.
    • Subdominis
      • La resta de parts del nom de domini són subdominis del domini precedent (xtec és subdomini de cat).
    • Host
      • Normalment, encara que no sempre, l'última part del nom de domini (p.e. iesmvm) correspon al nom d'una màquina dins d'un domini (xtec.cat).

Sistemes de noms plans i jeràrquics

  • Hi ha dos tipus de sistemes de resol·lució de noms:
    • Plans: els noms de màquina de la xarxa són plans i no existeix el concepte de zona. Aquest tipus de sistemes no permeten reutilitzar noms de màquina ni definir els conceptes de domini, subdomini, etc.
    • Jeràrquics: Es poden definir dominis, zones i subdominis de forma que els noms de màquina puguin ser reutilitzats. Per exemple, el nom de màquina www, es pot tornar a utilitzar en diferents dominis. Exemples: www.iesebre.com, www.google.com, www.domini.com...
  • També podem parlar de sistemes:
    • Centralitzats: un sol servidor de DNS (o servidor que comparteix el fitxer /etc/hosts). Aquest sistemes són poc escabal·lables ja que les peticions al servidor centralitzat augmenten molt amb el nombre de clients.
    • Distribuïts: Múltiples servidors de noms es reparteixen la càrrega de proveir de resol·lució de noms als clients d'una xarxa. És el cas del sistema actual de DNS utilitzat a Internet i moltes xarxes LAN. Els servidors es reparteixen la feina, encarregant-se de zones de la xarxa. Aquests tipus de sistemes normalment s'apliquen a sistemes jerarquics.

Definició

  • DNS és un conjunt de protocols i serveis, la funció principal dels quals és l'assignació de dominis d'Internet a adreces IP numèriques.
  • El fet d'assignar un nom (p.e. iesmvm.xtec.cat) a una adreça IP (p.e 85.192.114.53) permet als usuaris utilitzar noms en comptes d'haver de recordar un codi numèric.
  • Un altre dels avantatges de DNS és que permet abstraure el nom de màquina de la seva adreça IP (poden així variar sense tenir que modificar el nom de la màquina).

Antecedents de DNS: fitxer /etc/hosts

  • Guarda la taula local de resolució de noms. Normalment aquesta taula és prioritària respecte a DNS.
  • Es pot utilitzar per resoldre problemes amb la resolució de noms DNS o fins i tot per prohibir l'accés a certes pàgines web. Per exemple podem "redireccionar webs prohibides" amb una entrada com la següent:
192.168.0.3 sex.com
  • Si la IP 192.168.0.3 és la màquina que té el servidor web d'una escola, i els fitxers /etc/hosts dels alumnes tenen aquesta entrada, cada cop que un alumne intenti entrar a la web sex.com es trobarà amb la pàgina de l'escola.
  • Cal que tingueu en compte la història d'aquest fitxer: abans d'existir DNS, sistema jeràrquic i distribüit, el sistema utilitzar per a fer la resolució de noms era un sistema pla on totes les màquines d'un domini havien de tenir un fitxer /etc/hosts actualitzat.

Característiques

  • Domain Name System (DNS) és una base de dades distribuïda i jeràrquica que emmagatzema la informació associada als dominis de xarxes com per exemple Internet.
  • L'assignació de noms a adreces IP és la funcionalitat més comuna però no l'única.
  • Inicialment, DNS va néixer de la necessitat de recordar fàcilment els noms de les màquines.
  • S'utilitzava el fitxer /etc/hosts per traduir IPs en noms de domini.
  • El creixement explosiu de la xarxa va demostrar la poca escalabilitat d'aquest sistema i va sorgir el sistema DNS modern, on la càrrega i la informació de DNS es troba distribuïda de forma jeràrquica a diferents màquines d'Internet.

Servidor de noms autoritzat

  • Un servidor de noms autoritzat (authoritative) és un servidor de noms que dona respostes aconseguides per ell mateix, ja sigui de la seva base de dades (fitxers locals) o de fitxers locals que s'ha obtingut per tècniques de transferència de zona (per exemple un servidor esclau pot ser autoritzat).
  • Els servidors sempre són autoritzats per a una o varies zones d'Internet però no per a totes.
  • Existeix una jerarquia DNS que permet repartir la responsabilitat dels dominis d'Internet entre varies màquines. Quan a un servidor de DNS li fan un pregunta sobre un domini del qual no és el servidor autoritzat, aleshores el servidor de DNS ha de consultar a altres servidors per a obtenir la resposta (en el cas que la pregunta sigui recursiva) o informarà al client de a quin servidor li pot fer la consulta (si la pregunta és iterativa).
  • És diu que un servidor de DNS és només autoritzat (authoritative-only) quan només respon a preguntes sobre dominis dels quals és un servidor autoritzat.
  • Cada nom de domini ha de tenir assignat un conjunt de servidors dns autoritzats. Aquests servidors es registren al domini pare com a registres NS.
  • Quan es registra un nom de domini tipus elmeudomini.com cal proveir al top level domain (.com) de la IP de com a mínim un servidor de DNS primari i un de secundari. Això es fa així per garantir que si el servidor de DNS primari falla, al menys tenir l'opció d'un de secundari.
  • Sovint els servidors primaris són servidors master i els secundaris es configuren com esclaus (encara que pot no ser així ja que no és normatiu).
  • Tant els servidors esclaus com els servidors masters poden ser servidors autoritzats.
  • Resposta autoritzada:
    • Un servidor DNS autoritzat indica que les respostes són autoritzades utilitzant una marca a les respostes DNS.
    • Aquesta marca s'anomena AA (Authoritative Answer). Aquesta marca la podem observar amb ordres com dig.
    • Per exemple, si feu una consulta al servidor DNS de ya.com dig @dns1.wanadoo.es xtec.cat us retornara una resposta normal (no autoritzada).
    • En canvi, si feu una consulta al servidor DNS de XTEC com dig @vega.xtec.net xtec.cat veureu que hi ha una secció anomenada AUTHORITY SECTION.

Com es resol una adreça IP amb DNS

  • Tal i com podem observar en el següent gràfic, el procés de resolució DNS es composa d'una sèrie de peticions a servidors DNS per tal de resoldre la pregunta: quina és la IP de la màquina www.utsc.toronto.ca?.
  • Tal i com veurem més endavant, el primer pas per resoldre aquesta pregunta és consultar la cache.
  • Si la cache no disposa de la informació aleshores la petició es redirecciona a algun dels servidors root.
  • Aquest procés es repeteix fins trobar amb el servidor DNS final capaç de contestar a la pregunta.
  • En el nostre exemple (iesmvm.xtec.cat) el procés seria:
    • El client demana al root server (A.ROOT-SERVERS.NET) l'adreça de la màquina iesmvm.xtec.cat. Si executem dig +norec +noques +nostats +nocmd @A.ROOT-SERVERS.NET iesmvm.xtec.cat. obtindrem una llista de les màquines que resolen els dominis .cat (entre elles ns.nic.cat).
    • Repetim el procés. Aquest cop executem dig +norec +noques +nostats +nocmd @NS.NIC.cat iesmvm.xtec.cat. Un altre cop obtindrem una llista de les màquines que resolen el domini xtec.cat (entre elles vega.xtec.net).
    • Repetim el procés i executem dig +norec +noques +nostats +nocmd @dns1.nominalia.com iesmvm.xtec.cat. Finalment aquest servidor DNS és capaç de resoldre la IP.

Peticions iteratives versus peticions recursives

  • Si us fixeu en l'exemple de l'apartat anterior, no tots els servidors de DNS que hi intervenen realitzen la mateixa tasca.
  • De fet, excepte el servidor local, la resta de servidors no responen a la pregunta si no que delegen la feina a una altre servidor.
  • En canvi el servidor local, realitza de forma recursiva la mateixa pregunta a diferents servidors.
  • Això és així per què la petició del client al servidor local ha estat una petició recursiva.
  • Hi ha dos tipus de peticions (querys):
    • Recursives: Es demana al servidor que sigui ell qui proveeixi d'una resposta a la petició o en tot cas que mostri un missatge d'error si no pot respondre a la petició.
    • Iteratives (no recursives): El servidor pot delegar la resposta a la petició a un altre servidor. El servidor respon amb la millor resposta possible que coneix (poden intervenir les memòries cau...). Sempre es respon amb tots els servidors de DNS possibles i és que hi ha fet la petició qui decidirà a qui fer la següent petició.
  • Normalment les peticions de clients a servidors de DNS locals són recursives i les peticions entre servidors de DNS són iteratives. Aquestes últimes només succeïxen quan el servidor local no té la resposta a la petició (per no tenir-la en memòria cau i no ser l'encarregat de la zona a la qual pertany la petició).
  • Amb nslookup es fa una consulta no recursiva.

Com s'escull entre els diferents servidors d'una zona?

  • Com ja hem comentat, pot haver-hi més d'un servidor que siguin els encarregats d'una zona. Quin escollim? Doncs bé DNS utilitza el que s'anomena RoundTrip Time (RTT).
  • Cada cop que un servidor fa una consulta a un altre servidor de DNS, es mesura quan temps tarda en rebre la resposta.
  • Si un servidor de DNS rep una resposta conforme una zona està gestionada per dos servidors del quals encara no coneix el seu RTT, aleshores pregunta a tots dos per obtenir un valor de RTT.
  • El pròxim cop només preguntarà al que té el RTT més baix (el més ràpid).

Cache, ttl i propagació

  • L'alt volum de peticions que genera un sistema com DNS ha provocat que els dissenyadors busquessin una forma alternativa per tal de reduir la carrega dels servidors DNS.
  • El mecanisme utilitzat és que un cop un client de DNS rep una resposta de resolució de nom de domini d'un servidor DNS emmagatzema aquesta resposta en una cache durant un cert temps anomenat TTL (time to live).

NOTA: tingueu en compte que un servidor no pot memoritzar en memòria cau un valor de forma indefinida. Això provocaria que els canvis no es propaguessin mai

  • La contrapartida d'aquest sistema de cache és que apareix l'efecte de propagació.
  • La cache i el TTL provoquen que si un nom de domini canvia d'IP aquest canvi tardi un cert temps en propagar-se per tot els servidors DNS del mon (en alguns casos pot arribar a tardar 3 dies).
  • En el procés de resolució vist als apartats anteriors hem suposat que no intervenen les memòries cau (cache).
  • Per optimitzar el procés, el servidor local pot referir-se directament al servidor que té l'autoritat de la zona demanada, sempre i quan sàpiga quin és el servidor de DNS encarregat d'aquesta zona.
  • D'aquesta manera les peticions són més ràpides.
  • Hi ha dos tipus de cache:
    • Cache positiva: On s'emmagatzemen les IP de les màquines que s'han resolt correctament
    • Cache negativa: On s'emmagatzemen les màquines que no han tingut resolució.
  • Sol haver-hi un TTL (Time To Live) per a cada tipus de cache.

DNS Records

  • SOA record: Especifica el servidor de DNS que proveïx d'informació de la zona (authoritative server). Controla paràmetres com el correu de l'administrador de la zona, el número de sèrie, i temps per al refresc de la zona. També conegut com start of authority record.
  • NS record: Assigna un nom de domini a un servidors de DNS o llista de servidors encarregats del domini (authoritative DNS servers). També conegut com name server record.
  • A record: tradueix una adreça de màquina a la seva adreça IP de versió 4 (IPv4) (utilitzat per a les resolucions directes). També anomenat address record.
  • AAAA record: tradueix una adreça de màquina a la seva adreça IP de versió 6 (IPv6). També anomenat IPv6 address record
  • CNAME record: alias d'un nom a un altre, L'alias a d'apuntar a un registre de tipus A. També anomenat canonical name record. El registre al qual apunta pot ser local al servidor de DNS o un extern.
  • MX record: Assigna un nom de domini a un servidor o una llista de servidors de correu d'aquest domini. També anomenat mail exchange record.
  • PTR record: Assigna una adreca IPv4]] a el nom canònic d'una màquina (utilitzat per a les resolucions inverses). Al establir un registre PTR per a una màquina en un xarxa privada (in-addr.arpa) s'activa la resolució inversa per aquesta adreça. Això permet que al cridar l'host des de la xarxa local es cridi la seva IP pública i no pas la privada (P. ex. un servidor web accessible des de la xarxa local i des d'Internet). També conegut com pointer record.
  • TXT record: Permet a l'administrador afegir registres DNS de text. Proporciona suport per a especificacions com "Sender Policy Framework" o "DomainKeys".
  • NAPTR records: Nou tipus igual que suporta expressions regulars. També conegut com Naming Authority Pointer.

TCP vs UDP

  • Els RFC indiquen que el port UDP s'ha d'utilitzar per a les peticions (querys) DNS de clients i el port TCP per a les transferències de zona.
  • Ara bé, Windows té un algoritme una mica impacient, la primera petició és fa amb UDP, però les següents es fan amb TCP.

NOTA: Cal tenir en compte que si fem transferències de zona o tenim clients Windows val la pena deixar el port 53 de TCP obert en el nostre firewall