8.3 KiB
Le DNS
Le DNS (Domain Name System) est un système de distribution d'informations correspondant à des noms de domaines. Il est notamment utilisé pour obtenir des adresses IP à partir d'un nom de domaine, mais peut servir à obtenir n'importe quelle information suffisamment courte à partir d'un nom de domaine.
- Le client DNS demande l'adresse IPv6 de
fr.wikipedia.org.
à un résolveur DNS récursif - Le résolveur DNS récursif demande l'adresse de
fr.wikipedia.org.
à.
, l'un serveur racine. - Le serveur racine ne connait pas cette information, mais il sait comment s'en rapprocher : il répond l'adresse du serveur qui gère
org.
. - Le résolveur DNS récursif demande l'adresse de
fr.wikipedia.org.
au serveur deorg.
- Le serveur qui gère
org.
n'a pas cette information, mais sait comment s'en rapprocher et répond l'adresse du serveur qui gèrewikipedia.org.
. - Le résolveur DNS récursif demande l'adresse de
fr.wikipedia.org.
au serveur qui gèrewikipedia.org.
. - Cette information se trouve directement dans la zone servie par ce serveur, il lui répond donc l'adresse IPv6 de
fr.wikipedia.org.
. - Le résolveur DNS récusif répond finalement l'adresse IPv6 reçue au client DNS qui avait initié la demande.
Les enregistrements DNS
Un enregistrement DNS est composé de plusieurs parties :
<domaine> <classe> <type> <ttl> <contenu>
<domaine>
- Le domaine concerné par l'enregistrement
<classe>
- Toujours IN (pour Internet)
<type>
- Le type de donnée contenue, voir description des types possible après dans la page
<ttl>
- Temps pendant lequel l'enregistrement peut être gardé en cache
<contenu>
- Dépends du type d'enregistrement
Le cache
En réalité, un résolveur DNS récursif correct ne fera pas toutes ces requêtes à chaque fois. Il garde les données reçu des serveurs ayant autorité pendant la période de validité indiquée par ceux-ci, cette période s'appelle le TTL (Time-To-Live, temps à vivre). Cela permet de ne pas surcharger les serveurs ayant autorité les plus haut placés, qui devraient sans le cache des résolveurs répondre à beaucoup plus de requêtes.
Ce mécanisme signifie toutefois que la modification d'un enregisrement n'est assurée d'être effective partout qu'une fois que la durée du TTL précédent a expiré.
Les enregistrements multiples
Il peut exister plusieurs valeurs pour un même type d'enregistrement et même domaine.
Ainsi, il est probable que le résolveur reçoivent plusieurs adresses de serveurs ayant autorité pour un domaine ou que le client recoive plusieurs adresses IPv6 pour le domaine demandé ; le résolveur ou le client n'utilisera alors généralement qu'une seule de ces adresses, choisie aléatoirement. Si jamais l'adresse ne fonctionne pas, l'une des autres adresses reçues sera essayée, ce qui permet une meilleure résistance aux pannes de serveurs.
DNSSEC
DNSSEC est un système permettant de signer les données du DNS afin de permettre la vérification de leur intégrité.
Toutes les enregistrements DNS sont signés par le serveur ayant autorité dans la zone, et sa clé publique est publiée dans la zone parente. Pour la clé publique du serveur racine, qui n'a pas de zone parente, elle est préchargée dans les client DNS qui valident DNSSEC.
Types d'enregistrements
NS
Un enregistrements NS indique le serveur de noms qui a autorité pour un domaine. Pour s'assurer de la disponibilité du DNS, on en utilise généralement plusieus hébergés à des endroits différents, afin de mitiger les pannes.
Doit pointer vers un domaine qui dispose d'un enregistrement A/AAAA.
domain.exemple. 10800 IN NS ns1.dnshost.exemple.
domain.exemple. 10800 IN NS ns2.dnshost.exemple.
domain.exemple. 10800 IN NS ns3.dnshost.exemple.
A et AAAA
Permet l'enregistrement d'une adresse au format IPv4 pour A et IPv6 pour AAAA
Il est recommandé d'indiquer les 2 si possible :
- l'IPv4 pour être compatible avec les infrastructures internet vétustes qui sont encore nombreuses
- l'IPv6 pour être compatible avec l'internet moderne qui offre plus de possibilités
host.exemple. 10800 IN AAAA 2001:db8::3
host.exemple. 10800 IN A 203.0.113.42
TXT
Contient du texte.
antopie.org. 172800 IN TXT "v=spf1 a mx -all"
CAA
Limiter les autorités de certification autorisées à émettre des certificats
antopie.org. 172800 IN CAA 0 issue "letsencrypt.org"
antopie.org. 172800 IN CAA 0 iodef "mailto:miraty+caa@antopie.org"
SRV
Indiquer l'adresse d'un service spécifique.
Note : pour des raisons historiques et malgré la meilleure flexibilité permise par les enregistrements SRV
, le DNS utilise les enregistrements NS
, SMTP utilise le plus souvent les enregistrements MX
, et HTTP utilise le plus souvent directement les enregistrements A
/AAAA
.
Syntaxe
_<service>._<protocole>.exemple. 10800 IN SRV <malus> <poids> <port> <cible>
<service>
- Nom arbitraire du service (exemples :
submission
,imap
,imaps
,http
,mumble
,xmpp-server
,xmpp-client
,matrix
,ldap
,stun
,stuns
,turn
,turns
...) <protocole>
- Protocole de transport sur IP, selon le service généralement
tcp
ouudp
<malus>
[0-65535]- Les enregistrements avec la plus petite valeur seront utilisés d'abord Un enregistrement ne sera utilisé que si les enregistrements avec un malus moindre ne sont pas joignables.
<poids>
[0-65535]- Pour des enregistrements avec le même malus, la probabilité d'être d'utilisé est proportionnelle à cette valeur
<port>
- Port de l'hôte du service
<cible>
- Domaine absolu de l'hôte du service
Exemples
_matrix._tcp.im.exemple. 86400 IN SRV 10 0 8448 a.im.exemple.
_matrix._tcp.im.exemple. 86400 IN SRV 5 50 1312 b.im.exemple.
_matrix._tcp.im.exemple. 86400 IN SRV 5 25 8448 c.im.exemple.
Signifie : Pour le service Matrix de im.exemple
:
- Utiliser avec 1 chance sur 3
c.im.exemple:8448
et avec 2 chances sur 3b.im.exemple:1312
- Si aucun de ces 2 serveur n'est joignable, utiliser
a.im.exemple:8448
_xmpp-client._tcp.im.example. 86400 IN SRV 5 0 5222 xmpp.im.example.
_xmpp-server._tcp.im.example. 86400 IN SRV 5 0 5269 xmpp.im.example.
MX
Indiquer l'adresse du serveur recevant les courriels
example. 172800 IN MX 10 smtp.exemple.
SSHFP
Indiquer les empreintes des clés SSH
Algorithme
- 1
- RSA
- 2
- DSA
- 3
- ECDSA
- 4
- Ed25519
- 6
- Ed448
Type
- 1
- SHA-1
- 2
- SHA-256
Exemples
ssh.example. SSHFP 4 2 7df9c981c9228fc9e4bff50e1d1ef8774a0f3496179f48fc8041ba746315c87a
TLSA
Mettre en place DANE, pour permettre l'authentification des entitées nommée par le DNS
Usage
- 0 (PKIX-TA)
- Le certificat de l'entité doit être signé par ce certificat, ainsi que par une autorité de certification confiancée par le client
- 1 (PKIX-EE)
- Le certificat de l'entité doit être le même, et doit être signé par une autorité de certification confiancée par le client
- 2 (DANE-TA)
- Le certificat de l'entité doit être signé par ce certificat, et n'a pas à être signé par une autorité de certification
- 3 (DANE-EE)
- Le certificat de l'entité doit être le même, et n'a pas à être signé par une autorité de certification
Selecteur
- 0
- Certificat entier
- 1
- Seulement la clé publique du certificat
Méthode de correspondance
- 0
- Directe
- 1
- SHA-256
- 2
- SHA-512
Exemple
_443._tcp.host.example. 172800 IN TLSA 2 1 1 0B9FA5A59EED715C26C1020C711B4F6EC42D58B0015E14337A39DAD301C5AFC3
CNAME
Définir un domaine comme étant l'alias d'un autre
blog.example. 86400 IN CNAME host.example.
www.example. 86400 IN CNAME host.example.
play.example. 86400 IN CNAME host.example.
host.example. 10800 IN AAAA 2001:db8::3
host.example. 10800 IN A 203.0.113.42
DNAME
Définir les sous-domaines d'un domaine comme étant les alias des sous-domaines d'un autre domaine
LOC
Indiquer des coordonnées géographiques
d1 [m1 [s1]] "N"|"S" d2 [m2 [s2]] "E"|"W" alt["m"] [siz["m"] [hp["m"] [vp["m"]]]]
Avec :
d1
[0 .. 90]- Degrés en latitude
d2
[0 .. 180]- Degrés en longitude
m1
,m2
[0 .. 59]- Minutes
s1
,s2
[0 .. 59.999]:- Secondes
alt
[-100000.00 .. 42849672.95]- Altitude en mètres
siz
,hp
,vp
[0 .. 90000000.00]- (size/precision in meters)
exemple. 172800 IN LOC 49 0 0.000 N 2 0 0.000 W 0.00m 10m 0.00m 0.00m