From 75f5bf679eb084c8082b12ab285bf976b1fa5c10 Mon Sep 17 00:00:00 2001 From: Miraty Date: Sun, 7 Aug 2022 18:06:02 +0200 Subject: [PATCH 1/2] Split DNS records in multiple pages --- src/authoritative.md | 5 + src/dns.md | 212 +------------------------------------------ src/dnssec.md | 5 + src/http.md | 4 +- src/index.md | 2 + src/record-caa.md | 8 ++ src/record-cname.md | 11 +++ src/record-dname.md | 3 + src/record-loc.md | 32 +++++++ src/record-mx.md | 8 ++ src/record-srv.md | 46 ++++++++++ src/record-sshfp.md | 34 +++++++ src/record-tlsa.md | 42 +++++++++ src/record-txt.md | 7 ++ src/registry.md | 13 +++ src/ttl.md | 5 + 16 files changed, 225 insertions(+), 212 deletions(-) create mode 100644 src/authoritative.md create mode 100644 src/dnssec.md create mode 100644 src/record-caa.md create mode 100644 src/record-cname.md create mode 100644 src/record-dname.md create mode 100644 src/record-loc.md create mode 100644 src/record-mx.md create mode 100644 src/record-srv.md create mode 100644 src/record-sshfp.md create mode 100644 src/record-tlsa.md create mode 100644 src/record-txt.md create mode 100644 src/registry.md create mode 100644 src/ttl.md diff --git a/src/authoritative.md b/src/authoritative.md new file mode 100644 index 0000000..fc6faf2 --- /dev/null +++ b/src/authoritative.md @@ -0,0 +1,5 @@ +# Serveurs de noms ayant autorité + +Un serveur de nom ayant autorité est un serveur DNS qui connait la bonne information pour une zone DNS et qui est donc capable de répondre un enregistrement DNS sans devoir interroger un autre serveur DNS, contrairement à un serveur de noms récursif (alias résolveur DNS), qui se contente de reporter les requêtes aux serveurs ayant autorité adéquats. + +Une zone DNS est généralement servie simultanément par plusieurs serveurs de noms ayant autorité, afin d'éviter que la panne d'un seul serveur provoque l'indisponibilité du domaine. diff --git a/src/dns.md b/src/dns.md index 629809b..6703a52 100644 --- a/src/dns.md +++ b/src/dns.md @@ -30,28 +30,17 @@ Un enregistrement DNS est composé de plusieurs parties : `` : Temps pendant lequel l'enregistrement peut être gardé en cache + [ttl.md](Explications détaillées) `` : 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 @@ -78,202 +67,3 @@ Il est recommandé d'indiquer les 2 si possible : 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 - -``` -_._.exemple. 10800 IN SRV -``` - -`` -: Nom arbitraire du service (exemples : `submission`, `imap`, `imaps`, `http`, `mumble`, `xmpp-server`, `xmpp-client`, `matrix`, `ldap`, `stun`, `stuns`, `turn`, `turns`...) - -`` -: Protocole de transport sur IP, selon le service généralement `tcp` ou `udp` - -`` [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. - -`` [0-65535] -: Pour des enregistrements avec le même malus, la probabilité d'être d'utilisé est proportionnelle à cette valeur - -`` -: Port de l'hôte du service - -`` -: 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` : -1. Utiliser avec 1 chance sur 3 `c.im.exemple:8448` et avec 2 chances sur 3 `b.im.exemple:1312` -2. 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 -``` diff --git a/src/dnssec.md b/src/dnssec.md new file mode 100644 index 0000000..903328d --- /dev/null +++ b/src/dnssec.md @@ -0,0 +1,5 @@ +# 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. diff --git a/src/http.md b/src/http.md index c979e64..0b02009 100755 --- a/src/http.md +++ b/src/http.md @@ -1,3 +1,5 @@ # Le protocole HTTP -HTTP, acronyme de HyperText Transfert Protocol, en français protocole de transfert pour l'hypertexte, est un protocole Internet pris en charge par les navigateurs et serveurs Web pour transférer des fichiers. À l'origine, il avait été créé pour transférer des document HTML, mais l'immense succès du Web a généralisé son utilisation à la plupart des échanges de données entre client et serveurs. +HTTP, acronyme de HyperText Transfert Protocol, en français protocole de transfert pour l'hypertexte, est un protocole Internet pris en charge par les navigateurs et serveurs Web pour transférer des fichiers. + +Son utilisation principale est le transfert de contenu [HTML](html.md), mais n'importe quelles ressources peuvent être transmises par ce protocole. diff --git a/src/index.md b/src/index.md index 4093a1a..6813e95 100755 --- a/src/index.md +++ b/src/index.md @@ -12,6 +12,8 @@ [Le DNS](dns.md) [Les zones DNS](zone.md) +[Les registres](registry.md) +[DNSSEC](dnssec.md) [Les glue records](glue-record.md) [Le logiciel Dig](dig.md) diff --git a/src/record-caa.md b/src/record-caa.md new file mode 100644 index 0000000..1a3dc43 --- /dev/null +++ b/src/record-caa.md @@ -0,0 +1,8 @@ +# 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" +``` diff --git a/src/record-cname.md b/src/record-cname.md new file mode 100644 index 0000000..7f6f46d --- /dev/null +++ b/src/record-cname.md @@ -0,0 +1,11 @@ +# 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 +``` diff --git a/src/record-dname.md b/src/record-dname.md new file mode 100644 index 0000000..859134c --- /dev/null +++ b/src/record-dname.md @@ -0,0 +1,3 @@ +# DNAME + +Définir les sous-domaines d'un domaine comme étant les alias des sous-domaines d'un autre domaine diff --git a/src/record-loc.md b/src/record-loc.md new file mode 100644 index 0000000..3f68ab7 --- /dev/null +++ b/src/record-loc.md @@ -0,0 +1,32 @@ +# 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 +``` diff --git a/src/record-mx.md b/src/record-mx.md new file mode 100644 index 0000000..aea722e --- /dev/null +++ b/src/record-mx.md @@ -0,0 +1,8 @@ +# MX + +Indiquer l'adresse du serveur recevant les courriels + +``` +example. 172800 IN MX 10 smtp.exemple. +``` + diff --git a/src/record-srv.md b/src/record-srv.md new file mode 100644 index 0000000..bec0207 --- /dev/null +++ b/src/record-srv.md @@ -0,0 +1,46 @@ +# 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 + +``` +_._.exemple. 10800 IN SRV +``` + +`` +: Nom arbitraire du service (exemples : `submission`, `imap`, `imaps`, `http`, `mumble`, `xmpp-server`, `xmpp-client`, `matrix`, `ldap`, `stun`, `stuns`, `turn`, `turns`...) + +`` +: Protocole de transport sur IP, selon le service généralement `tcp` ou `udp` + +`` [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. + +`` [0-65535] +: Pour des enregistrements avec le même malus, la probabilité d'être d'utilisé est proportionnelle à cette valeur + +`` +: Port de l'hôte du service + +`` +: 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` : +1. Utiliser avec 1 chance sur 3 `c.im.exemple:8448` et avec 2 chances sur 3 `b.im.exemple:1312` +2. 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. +``` diff --git a/src/record-sshfp.md b/src/record-sshfp.md new file mode 100644 index 0000000..55a16ce --- /dev/null +++ b/src/record-sshfp.md @@ -0,0 +1,34 @@ +# 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 +``` diff --git a/src/record-tlsa.md b/src/record-tlsa.md new file mode 100644 index 0000000..65c20db --- /dev/null +++ b/src/record-tlsa.md @@ -0,0 +1,42 @@ +# 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 +``` diff --git a/src/record-txt.md b/src/record-txt.md new file mode 100644 index 0000000..4ed5473 --- /dev/null +++ b/src/record-txt.md @@ -0,0 +1,7 @@ +# TXT + +Contient du texte. + +``` +antopie.org. 172800 IN TXT "v=spf1 a mx -all" +``` diff --git a/src/registry.md b/src/registry.md new file mode 100644 index 0000000..2e25a0f --- /dev/null +++ b/src/registry.md @@ -0,0 +1,13 @@ +# Registre + +Un registre de domaine est un organisme gérant une zone DNS qui autorise la délégation vers d'autres zones DNS. + +L'obtention d'un nom de domaine se fait soit en demandant directement auprès du registre concerné si celui-ci l'autorise, soit en passant par l'intermédiaire d'un registraire (ou bureau d'enregistrement). + +C'est le registre qui doit indiquer notamment les serveurs de noms de la zone délégué ainsi que leur signature DNSSEC si souhaité, afin de permettre le fonctionnement du DNS. + +Par exemple, si je veux un domaine `carotte.exemple.`, je dois communiquer au registre, ici `exemple.`, l'adresse des serveurs de noms sur lesquels je vais administrer ce domaine. (Si l'adresse de ce serveur de noms se termine elle-même par `.carotte.exemple.`, je dois utiliser un [glue record](glue-record.html)). + + + + diff --git a/src/ttl.md b/src/ttl.md new file mode 100644 index 0000000..bfbcf08 --- /dev/null +++ b/src/ttl.md @@ -0,0 +1,5 @@ +## 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é. From eab7312caae19bb4812178858f14718c7d45127e Mon Sep 17 00:00:00 2001 From: Miraty Date: Thu, 11 Aug 2022 16:40:20 +0200 Subject: [PATCH 2/2] Dedicated pages for NS and A/AAAA records --- src/dns.md | 44 ++++++++++++++++++++++++++------------------ src/record-ip.md | 12 ++++++++++++ src/record-ns.md | 11 +++++++++++ 3 files changed, 49 insertions(+), 18 deletions(-) create mode 100644 src/record-ip.md create mode 100644 src/record-ns.md diff --git a/src/dns.md b/src/dns.md index 6703a52..a7e2c45 100644 --- a/src/dns.md +++ b/src/dns.md @@ -30,7 +30,7 @@ Un enregistrement DNS est composé de plusieurs parties : `` : Temps pendant lequel l'enregistrement peut être gardé en cache - [ttl.md](Explications détaillées) + [Explications détaillées](ttl.md) `` : Dépends du type d'enregistrement @@ -43,27 +43,35 @@ Ainsi, il est probable que le résolveur reçoivent plusieurs adresses de serveu ## Types d'enregistrements -### NS +[NS](record-ns.md) +: Serveurs ayant autorité -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. +[A et AAAA](record-ip.md) +: Adresse IP -Doit pointer vers un domaine qui dispose d'un enregistrement A/AAAA. +[TXT](record-txt.md) +: Texte -``` -domain.exemple. 10800 IN NS ns1.dnshost.exemple. -domain.exemple. 10800 IN NS ns2.dnshost.exemple. -domain.exemple. 10800 IN NS ns3.dnshost.exemple. -``` +[CAA](record-caa.md) +: Autorités de certification autorisées à émettre des certificats -### A et AAAA +[SRV](record-srv.md) +: Adresse d'un service -Permet l'enregistrement d'une adresse au format IPv4 pour A et IPv6 pour AAAA +[MX](record-mx.md) +: Serveur recevant les courriels -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 +[SSHFP](record-sshfp.md) +: Empreinte des clé SSH -``` -host.exemple. 10800 IN AAAA 2001:db8::3 -host.exemple. 10800 IN A 203.0.113.42 -``` +[TLSA](record-tlsa.md) +: DANE : Empreinte d'un certificat TLS + +[CNAME](record-cname.md) +: Nom canonique + +[DNAME](record-dname.md) +: Arbre canonique + +[LOC](record-loc.md) +: Coordonnées géographiques diff --git a/src/record-ip.md b/src/record-ip.md new file mode 100644 index 0000000..d17a2fd --- /dev/null +++ b/src/record-ip.md @@ -0,0 +1,12 @@ +# 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 +``` diff --git a/src/record-ns.md b/src/record-ns.md new file mode 100644 index 0000000..03f28fb --- /dev/null +++ b/src/record-ns.md @@ -0,0 +1,11 @@ +# 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. +```