<?xml version="1.0"?>
<rss xmlns:php="http://php.net/xsl" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Interroger le DNS avec Python - Chicoree</title><link>http://www.chicoree.fr/w/Interroger_le_DNS_avec_Python</link><atom:link href="http://www.chicoree.fr/w/Interroger_le_DNS_avec_Python?action=toFeed" rel="self" type="application/rss+xml"/><description><![CDATA[Python dispose en standard de fonctions pour la résolution de noms comme socket.gethostbyname ou socket.getaddrinfo. Pour beaucoup d'applications, c'est suffisant. Mais le DNS permet bien plus de choses que simplement associer une adresse IP à un nom. Si vous voulez exploiter toutes les possibilités offertes par le DNS, il faudra aller au delà. Et c'est exactement cela que permet la bibliothèque Python dnspython.
Celle-ci intéressera autant le développeur qui a besoin d'interroger le DNS dans un de ses programmes, que l'administrateur réseau qui y trouvera, moyennant l'écriture de quelques lignes de Python, une alternative plus souple aux outils classiques dig(1), nslookup(1), nsupdate(1) et autres.
]]></description><item><title>1 dnspython</title><link>http://www.chicoree.fr/w/Interroger_le_DNS_avec_Python#dnspython</link><description><![CDATA[<p>Pour citer le <a>site officiel</a>, <b>dnspython</b> est une boîte à outils Python pour le DNS. Toujours d'après ce cite, <i>dnspython</i> était un projet interne développé par la société <a>Nominum</a> pour tester leur solution DNS. Par la suite, cette société en a autorisé la diffusion sous une licence de type BSD.
</p>]]></description></item><item><title>2 Utiliser le resolver pour interroger le DNS</title><link>http://www.chicoree.fr/w/Interroger_le_DNS_avec_Python#Utiliser_le_resolver_pour_interroger_le_DNS</link><description><![CDATA[<p>Le site officiel de <i>dnspython</i> est assez avare en documentation. Le point de départ pour apprendre à utiliser ce paquet reste donc de se référer aux quelques <a>exemples</a> fournis sur le site. Le premier d'entre eux montre comment interroger le DNS pour trouver l'enregistrement <a>MX</a> associé à un nom de domaine. Ceci pourra par exemple être utile pour déterminer le serveur de messagerie vers lequel acheminer les mails destinés aux membres d'un domaine:
</p>]]></description></item><item><title>2.1 Accéder au MX</title><link>http://www.chicoree.fr/w/Interroger_le_DNS_avec_Python#Acc.C3.A9der_au_MX</link><description><![CDATA[<p>Le site officiel de <i>dnspython</i> est assez avare en documentation. Le point de départ pour apprendre à utiliser ce paquet reste donc de se référer aux quelques <a>exemples</a> fournis sur le site. Le premier d'entre eux montre comment interroger le DNS pour trouver l'enregistrement <a>MX</a> associé à un nom de domaine. Ceci pourra par exemple être utile pour déterminer le serveur de messagerie vers lequel acheminer les mails destinés aux membres d'un domaine:
</p>]]></description></item><item><title>2.2 Accéder à l'adresse d'un hôte (enregistrements A et AAAA)</title><link>http://www.chicoree.fr/w/Interroger_le_DNS_avec_Python#Acc.C3.A9der_.C3.A0_l.27adresse_d.27un_h.C3.B4te_.28enregistrements_A_et_AAAA.29</link><description><![CDATA[<p>Une très brève section si vous avez compris l'exemple précédent: pour accéder à l'adresse d'un hôte, il suffit d'interroger les enregistrements <a>A</a> ou <a>AAAA</a> correspondants:
</p>]]></description></item><item><title>2.3 Reverse DNS (enregistrement PTR)</title><link>http://www.chicoree.fr/w/Interroger_le_DNS_avec_Python#Reverse_DNS_.28enregistrement_PTR.29</link><description><![CDATA[<p>Cette utilisation est exactement l'inverse de la précédente: moyennant une adresse IP, on cherche à déterminer l'hôte correspondant. Ceci est rendu possible par l’existence d'enregistrements <a>PTR</a> dans le DNS. Par contre, la <i>résolution inverse</i> nécessite que les adresses soient passées sous une forme particulière. <i>dnspython</i> propose une fonction spécifique pour cela: <tt><a>dns.reversename.from_address</a></tt>. Cette fonction est compatible IPv4 et IPv6.
</p>]]></description></item><item><title>2.4 Accès aux services (enregistrement SVR)</title><link>http://www.chicoree.fr/w/Interroger_le_DNS_avec_Python#Acc.C3.A8s_aux_services_.28enregistrement_SVR.29</link><description><![CDATA[<p>Un enregistrement potentiellement très intéressant est <a>SRV</a>. Celui-ci est d'introduction assez récente puisqu'il n'a été formalisé qu'en 2000 dans la <a>RFC2782</a> — <i>A DNS RR for specifying the location of services (DNS SRV)</i>.
</p>]]></description></item><item><title>2.5 Gestion des exceptions</title><link>http://www.chicoree.fr/w/Interroger_le_DNS_avec_Python#Gestion_des_exceptions</link><description><![CDATA[<p><i>dnspython</i> utilise les exceptions pour rapporter les situations ... <i>exceptionnelles</i>. Ainsi, jusqu'à présent, mes exemples renvoyaient tous <i>au moins</i> un résultat. Mais dans le cas ou <i>aucun</i> résultat n'est trouvé une exception <tt><a>dns.resolver.NoAnswer</a></tt> est générée:
</p>]]></description></item><item><title>3 Mise à jour dynamique du DNS</title><link>http://www.chicoree.fr/w/Interroger_le_DNS_avec_Python#Mise_.C3.A0_jour_dynamique_du_DNS</link><description><![CDATA[<p>A l'origine, le DNS était conçu pour être <i>consulté</i> en ligne. Les mises à jour consistant pour l'administrateur à modifier (éventuellement manuellement) les fichiers de <i>zone</i> – puis à indiquer au serveur DNS de prendre en compte ces modifications.
</p>]]></description></item><item><title>4 Sécuriser les transactions avec TSIG</title><link>http://www.chicoree.fr/w/Interroger_le_DNS_avec_Python#S.C3.A9curiser_les_transactions_avec_TSIG</link><description><![CDATA[<p>Je dois avouer que pour les exemples de mises à jour ci dessus, les autorisations sur le serveur étaient basées sur l'adresse IP du client. Ce qui est fort peu sécurisé! En production, vous reposerez sans doute sur quelque-chose de plus sérieux comme <i>TSIG</i>. Cette technique introduite par <i>BIND8.2</i> et formalisée dans la <a>RFC2845</a> — <i>Secret Key Transaction Authentication for DNS (TSIG)</i> repose sur un <i>secret partagé</i> entre le client et le serveur. Ce secret servant à construire et valider un <i>hash</i> envoyé avec le message.
</p>]]></description></item><item><title>5 Conclusion</title><link>http://www.chicoree.fr/w/Interroger_le_DNS_avec_Python#Conclusion</link><description><![CDATA[<p>Voila: cette présentation de <i>dnspython</i> est terminée. Mon but n'était certainement pas de fournir un inventaire exhaustif des possibilités de cette bibliothèque, mais simplement de donner un aperçu de ses possibilités et de sa simplicité d'utilisation. Son point faible restant clairement son manque de documentation. Au moins aurais-je ajouté ma petite pierre à l'édifice. Et j'espère vous avoir convaincu d'inclure cet outil à votre panoplie lorsqu'il s'agira de travailler avec le DNS.
</p>]]></description></item><item><title>6 Ressources</title><link>http://www.chicoree.fr/w/Interroger_le_DNS_avec_Python#Ressources</link><description/></item></channel></rss>
