This commit is contained in:
Miraty 2022-08-29 20:57:23 +02:00
commit fbe714909c
18 changed files with 270 additions and 226 deletions

5
src/authoritative.md Normal file
View File

@ -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.

View File

@ -30,250 +30,48 @@ Un enregistrement DNS est composé de plusieurs parties :
`<ttl>`
: Temps pendant lequel l'enregistrement peut être gardé en cache
[Explications détaillées](ttl.md)
`<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
[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
### TXT
[CNAME](record-cname.md)
: Nom canonique
Contient du texte.
[DNAME](record-dname.md)
: Arbre canonique
```
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` ou `udp`
`<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` :
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
```
[LOC](record-loc.md)
: Coordonnées géographiques

5
src/dnssec.md Normal file
View File

@ -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.

View File

@ -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.

View File

@ -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)

8
src/record-caa.md Normal file
View File

@ -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"
```

11
src/record-cname.md Normal file
View File

@ -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
```

3
src/record-dname.md Normal file
View File

@ -0,0 +1,3 @@
# DNAME
Définir les sous-domaines d'un domaine comme étant les alias des sous-domaines d'un autre domaine

12
src/record-ip.md Normal file
View File

@ -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
```

32
src/record-loc.md Normal file
View File

@ -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
```

8
src/record-mx.md Normal file
View File

@ -0,0 +1,8 @@
# MX
Indiquer l'adresse du serveur recevant les courriels
```
example. 172800 IN MX 10 smtp.exemple.
```

11
src/record-ns.md Normal file
View File

@ -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.
```

46
src/record-srv.md Normal file
View File

@ -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
```
_<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` ou `udp`
`<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` :
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.
```

34
src/record-sshfp.md Normal file
View File

@ -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
```

42
src/record-tlsa.md Normal file
View File

@ -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
```

7
src/record-txt.md Normal file
View File

@ -0,0 +1,7 @@
# TXT
Contient du texte.
```
antopie.org. 172800 IN TXT "v=spf1 a mx -all"
```

13
src/registry.md Normal file
View File

@ -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)).

5
src/ttl.md Normal file
View File

@ -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é.