doc:dns
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
doc:dns [2014/04/03 16:17] – [Fonctionnement] julien.lepiller | doc:dns [2020/07/19 07:54] (Version actuelle) – typo fix chiahetcho | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | Le DNS (//Domain Name System//) est le nom du protocole permettant la traduction entre nom de domaine et addresse IP. | + | ====== |
- | ===== Comprendre le DNS ===== | + | Le DNS (//Domain Name System//) est le nom du protocole et de la base de données permettant la traduction entre nom de domaine et adresse IP. |
- | ==== Pourquoi | + | |
- | La section | + | ===== Pourquoi le DNS ? ===== |
+ | |||
+ | ==== Nom de domaine vs adresse IP ==== | ||
+ | |||
+ | Une correspondance entre noms de domaines et adresses IP a toujours été désirable, même avant que le DNS soit utilisé. | ||
+ | |||
+ | * **Les adresses IP sont difficiles à mémoriser** : '' | ||
+ | * **Elles dépendent de la topologie** : Si le réseau change, les noms restent les mêmes et pointent vers les nouvelles adresses IP | ||
+ | * **Elles sont limitées à un type de connectivité** : Contrairement à une adresse IP, un nom peut pointer vers plusieurs types d' | ||
+ | |||
+ | ==== DNS vs hosts.txt ==== | ||
+ | |||
+ | À l' | ||
+ | |||
+ | Grâce au DNS, aucun serveur n'est obligé de connaître toutes les correspondances entre noms et adresses. On dit que le système est réparti. En revanche, il n'est pas décentralisé car il y a une hiérarchie entre les serveurs DNS dans laquelle quelques serveurs //racine// sont au sommet. | ||
+ | |||
+ | ===== Comment ça marche ? ===== | ||
+ | |||
+ | ==== Protocole ==== | ||
+ | |||
+ | On a tendance à penser que le DNS envoie les données uniquement en [[UDP]] sur le port 53 mais en réalité le [[TCP]] peut également être utilisé. En effet, originellement, | ||
+ | |||
+ | [[http:// | ||
==== Fichier de zone ==== | ==== Fichier de zone ==== | ||
- | Le fichier de zone décrit une zone du DNS. Ce fichier a une syntaxe définie par la RFC 1035 (section 5) et la RFC 1034 (section 3.6.1) et ne dépend pas du serveur utilisé. | + | |
+ | Sur le serveur, un fichier de zone décrit une zone du domaine. Ce fichier a une syntaxe définie par la [[http:// | ||
Voici un exemple de fichier de zone : | Voici un exemple de fichier de zone : | ||
Ligne 38: | Ligne 60: | ||
la définition du TTL n’est pas obligatoire. '' | la définition du TTL n’est pas obligatoire. '' | ||
- | === Enregistrements | + | === Enregistrements |
* A : renseigne une adresse IPv4. | * A : renseigne une adresse IPv4. | ||
Ligne 48: | Ligne 70: | ||
* TXT : peut contenir n’importe quel texte, entre guillemets doubles. | * TXT : peut contenir n’importe quel texte, entre guillemets doubles. | ||
- | === Enregistrements DNSSEC | + | === Sécurité |
- | DNSSEC ajoute plusieurs types d’enregistrement : | + | Le système des DNS n'a pas pris en compte la sécurité lors de sa création. Une étude |
- | + | ||
- | * DS : Delegation Signer. Équivalent | + | |
=== Note sur le serial === | === Note sur le serial === | ||
- | Le serial est un numéro qui identifie la version de votre fichier de zone. Il est important de **toujours** l’augmenter à chaque modification. En effet, c’est sur ce nombre que se base les serveurs caches et // | + | Le serial est un numéro qui identifie la version de votre fichier de zone. Il est important de **toujours** l’augmenter à chaque modification. En effet, c’est sur ce nombre que se base les serveurs caches et esclave |
==== Résolution ==== | ==== Résolution ==== | ||
=== Utiliser dig === | === Utiliser dig === | ||
Ligne 123: | Ligne 144: | ||
</ | </ | ||
- | On peut aussi lui demander de vérifier les zones en utilisant [[#DNSSEC|DNSSEC]]. Si la zone est validée, le flag '' | + | On peut aussi lui demander de vérifier les zones en utilisant [[DNSSEC]]. Si la zone est validée, le flag '' |
$ dig +dnssec isc.org | $ dig +dnssec isc.org | ||
; <<>> | ; <<>> | ||
Ligne 174: | Ligne 195: | ||
</ | </ | ||
- | ===== DNSSEC ===== | + | '' |
- | ==== Fonctionnement ==== | + | |
- | + | ||
- | DNSSEC (//DNS SECurity Extensions// | + | |
- | + | ||
- | Le protocole utilise deux types de clefs : | + | |
- | + | ||
- | * Une clef signataire de zone (ou ZSK pour //Zone Signing Key//) : généralement petite (1024 bit par défaut) car elle doit être utilisée de nombreuses fois pour signer chaque enregistrement. Il est aussi bon de la changer souvent, tous les quelques mois par exemple. | + | |
- | * Une clef signataire de clef (ou KSK pour //Key Signing Key//) : généralement grande car elle ne sert qu’à signer la ZSK. | + | |
- | + | ||
- | Un enregistrement DS permet de déléguer la confiance d’une zone. Il contient le hash de la KSK de la zone fille. En connaissant ce hash, il est possible de vérifier et faire confiance à la KSK de la zone fille. On peut alors se servir de cette KSK pour vérifier la ZSK et lui faire confiance. On peut alors valider les domaines de la zone fille. | + | |
- | + | ||
- | De cette manière, seule la clef de la racine est nécessaire à valider les différentes zones du DNS. | + | |
- | + | ||
- | ==== Automatisation ==== | + | |
- | + | ||
- | Les outils disponibles dans le paquet | + | |
- | + | ||
- | Cette section est incomplète. | + | |
- | + | ||
- | ==== Génération des clefs ==== | + | |
- | Pour générer | + | |
< | < | ||
- | dnssec-keygen | + | $ dig -x 65.155.228.160 |
+ | … | ||
+ | ;; ANSWER SECTION: | ||
+ | 65.155.228.160.in-addr.arpa. 86400 IN PTR quigon.rez-gif.supelec.fr. | ||
+ | … | ||
</ | </ | ||
- | Cela va créer deux fichiers du type Kfederez.net.+007+049632.key et Kfederez.net.+007+049632.private. Pour plus de simplicité par la suite, renommez-les en, par exemple, federez.ksk.key et federez.ksk.private | ||
- | |||
- | |||
- | Pour générer la clef signataire de zone (//Zone Signing Key// ou ZSK), utilisez la commade suivante : | ||
- | < | ||
- | dnssec-keygen -a RSASHA256 -b 2048 federez.net | ||
- | </ | ||
- | |||
- | De même, renommez les fichiers avec un nom plus explicite. | ||
- | |||
- | ==== Signature d’une zone ==== | ||
- | |||
- | ajoutez en fin de fichier de zone : | ||
- | < | ||
- | $include / | ||
- | $include / | ||
- | </ | ||
- | |||
- | Pour signer la zone // | ||
- | < | ||
- | dnssec-signzone -e20480101000000 -p -t -g -k federez.ksk.key -o federez.net federez.net.zone federez.zsk.key | ||
- | </ | ||
- | |||
- | où 20480101000000 est au format AAAAMMJJHHMMSS. C’est la date d’expiration des signatures. Cela va créer un nouveau fichier de zone, federez.net.zone.signed, | ||
- | |||
- | Enfin, pour déléguer une zone, pensez à déléguer les signatures avec un enregistrement DS, qui n’est pas généré par la commande précédente. Il suffit alors de configurer DNSSEC avec son registrar pour que les signatures deviennent valides. | ||
===== Configuration de bind ===== | ===== Configuration de bind ===== | ||
Sous debian, bind se trouve dans le paquet '' | Sous debian, bind se trouve dans le paquet '' | ||
Ligne 282: | Ligne 260: | ||
===== Unbound comme résolveur récursif ===== | ===== Unbound comme résolveur récursif ===== | ||
- | [[https:// | + | [[https:// |
<Exemple de configuration avec contrôle d' | <Exemple de configuration avec contrôle d' | ||
Ligne 295: | Ligne 273: | ||
===== Liens externes ===== | ===== Liens externes ===== | ||
- | * [[https:// | ||
* [[https:// | * [[https:// | ||
- | * [[https:// | + | * [[https:// |
* [[https:// | * [[https:// | ||
- | * [[https:// | + |
doc/dns.1396541879.txt.gz · Dernière modification : 2014/04/03 16:17 de julien.lepiller