From 0cc9f13ff85a9204b75fde0e5fac6d7932128771 Mon Sep 17 00:00:00 2001 From: Yann Verry Date: Sat, 28 May 2022 22:17:41 +0200 Subject: [PATCH] dnsupdate --- content/posts/dns/dnsupdate/index.md | 127 +++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 content/posts/dns/dnsupdate/index.md diff --git a/content/posts/dns/dnsupdate/index.md b/content/posts/dns/dnsupdate/index.md new file mode 100644 index 0000000..65819a0 --- /dev/null +++ b/content/posts/dns/dnsupdate/index.md @@ -0,0 +1,127 @@ ++++ +title = "Un peu de dynamic dans mon DNS" +date = 2022-05-28T18:40:11+02:00 +draft = false +categories = ["dns"] +tag = ["dns"] ++++ + +Aujourd'hui notre monde informatique fonctionne quasi à *100%* en API. +Les serveurs DNS n'en font pas exception, par exemple avec PowerDNS sans surprise +il éxiste une API mais explorons ce qui marche très bien depuis des années : **DNSUpdate** +avec sa petite RFC[2136](https://datatracker.ietf.org/doc/html/rfc2136.html). + +## DynDNS + +En 2022 beaucoup d'ISP ne fournissent pas d'*IPv4* ou *IPv6* fixe. Elle change donc régulièrement au gré d'une coupure éléctrique ou plus de votre opérateur. +Il éxiste beaucoup de service en ligne pour faire ce travail via une API, peut-être même votre registrar. +Mais quand on héberge soit même son DNS il y a plus simple avec l'utilisation de **nsupdate** bien souvent déjà installé sur votre machine dès que vous avez besoin de creuser la question (*dig*). Sinon il est présent par exemple via le paquet *bind9-dnsutils* sous debian. + +On va donc faire un tout petit script qui va obtenir son ipv4 et sa v6 public et les mettres à jours, ici sur le serveur **dnsupdate.verry.org** : + +```bash +DOMAIN="verry.org" +HOST="raoul.verry.org" +ORIG_IPv4=$(dig +short a $HOST @dnsupdate.verry.org) +ORIG_IPv6=$(dig +short aaaa $HOST @dnsupdate.verry.org) +IPv4=$(curl -4 https://ip.verry.org) +IPv6=$(curl -6 https://ip.verry.org) +SERVER=$(dig +short aaaa dnsupdate.verry.org) + +if [ "$ORIG_IPv4" != "$IPv4" ] || [ "$ORIG_IPv6" != "$IPv6" ]; +then + +nsupdate -y '::' <::' <::' <