-
Notifications
You must be signed in to change notification settings - Fork 1
WAN et DDNS
Avant d’être en mesure d’activer le service de résolution de nom de domaine via une adresse WAN dynamique (DDNS) il est primordial d’avoir une adresse IP directement sur le segment publique (WAN) sans quoi il devient impossible de mettre cette mesure en place suivant la méthode proposée. Certains fournisseurs de service offrent une solution tout-en-un incluant un service de réseau LAN auquel il nous est impossible de se soustraire. Dans un tel cas notre routeur OpwnWRT devient masqué derrière le réseau LAN du fournisseur de service empêchant l’accès WAN natif et réduisant les performances dû au double-NAT.
Dans la procédure qui suit on présume que:
- votre routeur possède une adresse IPv4 ou IPv6 native sur le WAN
- vous possédez un nom de domaine valide chez un registraire de votre choix
Advenant que le registraire de votre choix où vous avez enregistré votre nom de domaine n'offre pas de service DDNS "compatible" avec openwrt (voir la liste des registraires DDNS compatibles) il est alors requis d'y créer un sous-domaine (exemple: “home”) et de le déléguer à un autre registraire reconnu. Mon expérience avec Hurricane Electric Internet Services fut somme toute positive et le service DDNS y est gratuit!
Dans l'exemple qui suit on ajoute à notre configuration DNS (type bind) chez notre registraire une délégation de type NS pour sous domaine "home" vers chacun des serveurs offerts par le fournisseurs DDNS (dans le cas présent Hurricane Electric):
home 10800 IN NS ns2.he.net.
home 10800 IN NS ns3.he.net.
home 10800 IN NS ns4.he.net.
home 10800 IN NS ns5.he.net.
Ensuite on souscrit un compte chez Hurricane Electric Internet Services et l'on y ajoute le domaine nouvellement délégué (dans notre exemple: home.). Si vous obtenez l'erreur: "Zone failed validation test. ERROR: Delegation was not found. Please delegate to ns1, ns2, ns3, ns4 and ns5.he.net then retry. (<domain> / home.<domain>).
" votre configuration de délégation est invalide ou encore que la propagation à l'ensemble des serveurs DNS du registraire d'origine n'est pas encore complétée. Vérifiez de nouveau votre configuration et allouez quelques minutes de plus afin que la propagation DNS aie lieu.
Une fois le domaine ajouté chez Hurricane Electric, éditer la nouvelle zone et ajouter une entrée de type “A Record” avec les propriétés suivante:
- Name:
@
(détectera votre adress IP WAN actuelle automatiquement) - Enable entry for dynamic dns
- “Time To Live” (TTL) à 3600 secondes (1h) - Certains registraires refusent un délai moindre (he.net propose par défaut 5 minutes i.e. 300 secondes)
À cette nouvelle entrée y générer une clé DDNS via l’icône 🔃.
La fenêtre suivante proposera l'option “Generate a key
” auquel il est essentiel de conserver copie pour les étapes suivantes. Vous obtiendrez alors le message "Successfully generated key for dynamic record home.<domain>
".
OpenWRT par défaut transmet les requêtes DNS en provenance des différents réseaux LAN vers les DNS reçus du WAN automatiquement via le démon DNSmasq. Cependant le routeur en lui-même n’est pas configuré pour traiter ses propres requêtes. Afin de changer ce comportement il suffit de lui spécifier d'utiliser un autre fichier de résolution:
root@OpenWRT|LEDE:~# ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 16 Feb 2 2016 /etc/resolv.conf -> /tmp/resolv.conf
root@OpenWRT|LEDE:~# rm /etc/resolv.conf
root@OpenWRT|LEDE:~# ln -nsf /tmp/resolv.conf.auto /etc/resolv.conf
root@OpenWRT|LEDE:~# ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 16 Feb 2 2016 /etc/resolv.conf -> /tmp/resolv.conf.auto
Autrement si le routeur n’est pas en mesure de traiter ses propres requêtes DNS alors le service DDNS ne fonctionnera tout simplement pas. Voici un extrait d'erreurs provenant des journaux contenus à /var/log/ddns/* dans un tel cas:
170914 ERROR : BusyBox nslookup error: '1'
170914 : nslookup: can't resolve 'home.<DOMAIN>': Name or service not known
170914 WARN : Get registered/public IP for 'home.<DOMAIN>' failed - retry 224/0 in 60 seconds
Il est donc primordial de tester la résolution de votre propre adresse via plusieurs fournisseurs DNS. Il est important d'allouer de 15 à 30 minutes avant que la propagation de nouvelles entrées DNS aie lieu (certains mentionne même jusqu'à 3h!).
Autre note importante, la commande dig
est très puissante mais son installation nécessite les paquets bind-dig
et bind-libs
qui à eux-seuls prennent près de 1MO d'espace! Sur un routeur à 4Mo à 8Mo cela revient à nous priver d'espace essentiel! Je recommande de d'installer puis désinstaller cet outil lorsque complété.
Hurricane Electric:
root@openwrt:~# dig @ns2.he.net +short home.<domain> NS
ns5.he.net.
ns3.he.net.
ns2.he.net.
ns1.he.net.
ns4.he.net.
root@openwrt:~# dig @ns2.he.net +short home.<domain>
<IP>
Votre fournisseur de service par défaut (voir /tmp/resolv.conf.auto):
root@openwrt:~# dig @<ISP-DNS> +short home.<domain> NS
root@openwrt:~# dig @<ISP-DNS> +short home.<domain>
Google:
root@openwrt:~# dig @8.8.8.8 +short home.<domain> NS
root@openwrt:~# dig @8.8.8.8 +short home.<domain>
OpenWRT par défaut (via 127.0.0.1 faisant appel à /tmp/resolv.conf.auto):
root@openwrt:~# dig @localhost +short home.<domain> NS
root@openwrt:~# dig @localhost +short home.<domain>
Il y a plusieurs variantes au niveau des prérequis à ddns-scripts
. Il est possible d'utiliser wget
seul, sinon ca-certificates
conjointement avec l'un ou l'autre des paquets suivants:
curl
libustream-mbedtls20150806
libustream-openssl20150806
-
libustream-wolfssl20150806
Sur un routeur avec très peu d'espace disque je recommande la conjonction deca-certificates
puisque requis pour plusieurs autres outils (ex:stubby
) conjointement aveclibustream-openssl20150806
.
Installer quelques paquets requis:
root@openwrt:~# opkg update
root@openwrt:~# opkg install ddns-scripts luci-app-ddns ca-certificates libustream-openssl20150806
Remplacer les paramètres et avec vos propres valeurs ainsi que avec la clé générée chez Hurricane Electric. À noter que Hurricane Electric utilise un certificat “Self-Signed” par conséquent il est nécessaire de désactiver la validation du certificat lorsque l’on active la mise à jour via HTTPS.
uci set ddns.myddns_ipv4.service_name='he.net'
uci set ddns.myddns_ipv4.lookup_host='home.<Domain>'
uci set ddns.myddns_ipv4.domain='home.<Domain>'
uci set ddns.myddns_ipv4.username='<Username>'
uci set ddns.myddns_ipv4.password='<GeneratedKey>'
uci set ddns.myddns_ipv4.enabled='1'
uci changes ddns
uci commit
Si l’on veut utiliser le HTTPS pour les mise à jour (recommandé):
uci set ddns.myddns_ipv4.use_https='1'
uci set ddns.myddns_ipv4.cacert='IGNORE'
uci changes ddns
uci commit
Procédure similaire à IPv4:
uci set ddns.myddns_ipv6.service_name='he.net'
uci set ddns.myddns_ipv6.lookup_host='home.<Domain>'
uci set ddns.myddns_ipv6.domain='home.<Domain>'
uci set ddns.myddns_ipv6.username='<Username>'
uci set ddns.myddns_ipv6.password='<GeneratedKey>'
uci set ddns.myddns_ipv6.enabled='1'
uci changes ddns
uci commit
Si l’on veut utiliser le HTTPS pour les mise à jour (recommandé):
uci set ddns.myddns_ipv6.cacert='IGNORE'
uci set ddns.myddns_ipv6.use_https='1'
uci changes ddns
uci commit
Si votre fournisseur de service n’offre pas le IPv6 alors l'instance du démon DDNS associé à IPv6 doit être désactivée par défaut.
uci set ddns.myddns_ipv6.enabled='0'
uci changes ddns
uci commit
Pour un accès rapide aux journaux DDNS:
uci set ddns.myddns_ipv4.use_logfile='1'
uci set ddns.myddns_ipv6.use_logfile='1'
uci changes ddns
uci commit
Démarrer le démon DDNS:
root@openwrt:~# /etc/init.d/ddns restart
Ne reste plus qu'à surveiller les journaux via logread ou avec les fichiers journaux associés à chacun des démons (si ddns.myddns_ipv4.enabled='1'
et/ou ddns.myddns_ipv6.enabled='1'
):
/tmp/log/ddns/myddns_ipv4.log
/tmp/log/ddns/myddns_ipv6.log
Si vous obtenez un succès un message se terminant par ce qui suit apparaîtra dans les journaux:
173829 : ddns version : 2.4.3-1
173829 : verbose mode : 0 - run normal, NO console output
173829 : check interval: 600 seconds
173829 : force interval: 259200 seconds
173829 : retry interval: 60 seconds
173829 : retry counter : 0 times
173829 : No old process
173829 : last update: never
173829 : Detect registered/public IP
...
173832 : DDNS Provider answered: good <IP>
173832 info : Update successful - IP '<IP>' send
173832 : Waiting 600 seconds (Check Interval)
Références: