La dernière version est toujours disponible auprès de GitHub à
https://github.com/troglobit/inadyn/releases
Astuce: Le manuel HTML Unix est sur https://man.troglobit.com, par exemple, inadyn.conf (5)
Inadyn, ou In-A-Dyn, est un DNS dynamique petit et simple, DDNS, client avec support HTTPS. Généralement disponibles dans de nombreuses distributions GNU / Linux, utilisées dans les routeurs hors étagère et les passerelles Internet pour automatiser la tâche de maintenir votre nom Internet en synchronisation avec votre adresse IP publique. Il peut également être utilisé dans les installations avec des connexions redondantes (de sauvegarde) à Internet.
La plupart des gens ignorent qu'ils partagent un pool d'adresses Internet avec d'autres utilisateurs du même fournisseur de services Internet (ISP). Des protocoles comme DHCP, PPPoE ou PPPOA sont utilisés pour vous donner une adresse et un moyen de vous connecter à Internet, mais généralement pas un moyen pour les autres de vous connecter à vous. Si vous souhaitez exécuter un serveur Internet sur une telle connexion, vous risquez de perdre votre adresse IP à chaque fois que vous vous reconnectez, ou comme dans le cas du DHCP même lorsque le bail est renégocié.
En utilisant un client DDNS comme inadyn vous pouvez enregistrer un nom Internet avec un fournisseur DDNS, comme Freedns. Le client DDNS met à jour votre enregistrement DNS périodiquement et / ou à la demande lorsque votre adresse IP change. Inadyn peut maintenir plusieurs enregistrements hôtes avec la même adresse IP, utiliser une combinaison d'un script, l'adresse à partir d'une interface orientée Internet ou par défaut à l'aide du détecteur de changement d'adresse IP du fournisseur DDNS.
__
¹ L'adresse IP publique est la valeur par défaut, les adresses privées peuvent également être utilisées.
Certains de ces services sont gratuits pour une utilisation non commerciale, certains prennent une somme modique, mais fournissent également plus de domaines à choisir.
Les fournisseurs de niveau-un suivants ont dédié des "plugins", même si beaucoup partagent le plugin Dyndns d'origine. Vous trouverez ci-dessous une liste des fournisseurs DDNS connus, commandés par le plugin qui les soutiennent:
Pour la liste complète, voir inadyn -L , pour la sortie JSON conviviale conviviale, utilisez inadyn -L -j .
Les fournisseurs DDNS non pris en charge nativement peuvent être activés à l'aide du plugin DDNS personnalisé ou générique. Voir ci-dessous pour des exemples de configuration.
IN-A-DYN par défaut HTTPS, mais tous les fournisseurs ne peuvent pas prendre en charge cela, alors essayez de désactiver SSL pour la mise à jour ( ssl = false ) ou la phase Checkip ( checkip-ssl = false ) dans la section provider , au cas où vous rencontrerez des problèmes.
HTTPS est activé par défaut car il protège vos informations d'identification contre l'espionnage et réduit le risque que quelqu'un détourne votre compte.
IN-A-DYN prend en charge la mise à jour de plusieurs serveurs DDNS, plusieurs comptes, même sur différents fournisseurs DDNS. L'exemple suivant /etc/inadyn.conf montre comment cela peut être fait. Pour vérifier votre configuration, sans démarrer le démon, utilisez:
inadyn --check-config
Cela recherche le fichier .conf par défaut, pour vérifier n'importe quel fichier, utilisez:
inadyn --check-config -f /path/to/file.conf
# In-A-Dyn v2.0 configuration file format
period = 300
user-agent = Mozilla/5.0
# The FreeDNS username must be in lower case
# The password (max 16 chars) is case sensitive
provider freedns {
username = lower-case-username
password = case-sensitive-pwd
hostname = some.example.com
}
# We override checkip server with the In-a-dyn built-in 'default',
# http://ifconfig.me/ip, for details on this, see below.
provider freemyip {
password = YOUR_TOKEN
hostname = YOUR_DOMAIN.freemyip.com
checkip-server = default
}
provider dyn {
ssl = false
username = charlie
password = snoopy
hostname = { peanuts, woodstock }
user-agent = Mozilla/4.0
}
provider duckdns.org {
username = YOUR_TOKEN
password = noPasswordForDuckdns
hostname = YOUR_DOMAIN.duckdns.org
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:1 {
username = ian
password = secret
hostname = flemming.no-ip.com
user-agent = inadyn/2.2
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:2 {
username = james
password = bond
hostname = spectre.no-ip.com
checkip-ssl = false
checkip-server = ifconfig.me
checkip-path = /ip
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:3 {
username = spaceman
password = bowie
hostname = spaceman.no-ip.com
checkip-command = "/sbin/ifconfig eth0 | grep 'inet6 addr'"
}
# Google Domains - notice use of '@' to update root entry
provider domains.google.com:1 {
hostname = @.mydomain.com
username = your_username
password = your_password
}
# Wildcard subdomains - notice the quotes (required!)
provider domains.google.com:2 {
hostname = "*.mydomain.com"
username = your_username
password = your_password
}
# Note: hostname == update-key from Advanced tab in the Web UI
provider tunnelbroker.net {
username = futurekid
password = dreoadsad/+dsad21321 # update-key-in-advanced-tab
hostname = 1234534245321 # tunnel-id
}
# dynv6.com update using a custom checkip-command, which works
# if you have access to an Internet-connected interface. Make
# sure to verify the command works on your system first
allow-ipv6 = true # required option for IPv6 atm.
provider dynv6.com {
username = your_token
password = not_used
hostname = { host1.dynv6.net, host2.dynv6.net }
checkip-command = "/sbin/ip -6 addr | grep inet6 | awk -F '[ t]+|/' '{print $3}' | grep -v ^::1 | grep -v ^fe80"
}
provider cloudxns.net {
username = your_api_key
password = your_secret_key
hostname = yourhost.example.com
}
provider dnspod.cn {
username = your_api_id
password = your_api_token
hostname = yourhost.example.com
}
# Create a unique custom API token with the following permissions:
# -> Zone.Zone - Read, Zone.DNS - Edit.
provider cloudflare.com {
username = zone.name
password = api_token_important_read_comment
hostname = hostname.zone.name
ttl = 1 # optional, value of 1 is 'automatic'.
proxied = false # optional.
}
provider goip.de {
username = user.name
password = user.password
hostname = hostname.zone.name
}
Remarquez comment la configuration a trois utilisateurs différents du fournisseur NO-IP - ceci est réalisé en ajoutant A :ID au nom du fournisseur.
Nous définissons également un répertoire de cache personnalisé, par défaut est d'utiliser /var/cache . Dans notre cas /mnt , un magasin persistant spécifique au système pour mettre en cache votre adresse IP comme indiqué à chaque fournisseur. Inadyn utilise ceci pour vous assurer que vous n'êtes pas verrouillé de votre compte pour des mises à jour excessives, ce qui peut se produire si votre passerelle Internet en cours d'exécution Inadyn est coincée dans une boucle de redémarrage, ou similaire.
Cependant, pour que le mécanisme de mise en cache soit à 100% infaillible, l'horloge du système doit être réglée correctement - si vous avez des problèmes avec l'horloge système qui ne soit pas correctement défini au démarrage, par exemple en attendant la réception d'un message NTP, utilisez l'option de ligne de commande --startup-delay=SEC . Pour dire inadyn il est acceptable de procéder avant le délai d'expiration SEC , utilisez SIGUSR2 .
Le dernier système défini est le service IPv6 https://tunnelbroker.net fourni par Hurricane Electric. Ici, hostname est défini sur l'ID de tunnel et le mot de passe doit être la clé de mise à jour trouvée dans l'onglet Configuration avancée .
Remarque: le
checkip-commandpour DynV6, ci-dessus, n'est qu'une façon de le faire. Voici une autre variante, à partir de leur propre script:ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 ([0-9a-f:]+).*/1/p' | head -n 1
Parfois, le checkip-server par défaut pour un fournisseur DDNS peut être lent à répondre, voire un temps d'arrêt. IN-A-DYN Prise en charge de la dépassement du paramètre par défaut du fournisseur avec une commande personnalisée ou une commande personnalisée. La façon la plus simple de le modifier est de définir checkip-server = default dans votre configuration de fournisseur, déclenchant en-a-dyn pour utiliser le http://ifconfig.me/ip par défaut, qui est également la valeur par défaut de toute configuration DDNS personnalisée. Voir les pages de l'homme, ou la section ci-dessous, pour plus d'informations.
Certains fournisseurs nécessitent l'utilisation d'un navigateur spécifique pour envoyer des mises à jour, cela peut être déterminé à l'aide du paramètre user-agent = STRING , comme indiqué ci-dessus. Il est disponible à la fois au niveau global et au niveau par fournisseur.
Remarque: Dans une configuration de serveur multi-utilisateurs, assurez-vous de chmod votre .conf à 600 (lecture-écriture uniquement par vous / root) pour vous protéger contre les autres utilisateurs lisant vos informations d'identification DDNS Server.
En plus des fournisseurs DDNS par défaut pris en charge par Inadyn, les fournisseurs DDNS personnalisés peuvent être définis dans le fichier de configuration. Utilisez custom {} dans au lieu de la section provider {} utilisée dans les exemples ci-dessus.
IN-A-DYN Utilisez HTTP Basic Authentication (Base64 Encoded) pour communiquer le nom d'utilisateur et le mot de passe au serveur. Si vous n'avez pas de nom d'utilisateur et / ou de mot de passe, vous pouvez laisser ces champs à côté. L'authentification de base sera toujours utilisée dans la communication avec le serveur, mais avec le nom d'utilisateur et le mot de passe vides.
Un fournisseur DDNS personnalisé peut être configuré comme ceci:
custom example {
username = myuser
password = mypass
checkip-server = checkip.example.com
checkip-path = /
ddns-server = update.example.com
ddns-path = "/update?hostname="
hostname = myhostname.example.net
}
Les variables suivantes peuvent être remplacées dans la configuration:
%u - username
%p - password, if HTTP basic auth is not used
%h - hostname
%i - IP address
Pour https://www.namecheap.com, il peut ressembler comme suit. Remarquez comment la syntaxe du nom d'hôte diffère de ci-dessus:
custom namecheap {
username = YOURDOMAIN.TLD
password = mypass
ddns-server = dynamicdns.park-your-domain.com
ddns-path = "/update?domain=%u&password=%p&host=%h&ip=%i"
hostname = { "@", "www", "test" }
ddns-response = "<ErrCount>0</ErrCount>"
}
Ici, trois noms d'hôtes sont mis à jour, un HTTP obtient une demande de mise à jour pour chaque nom d'hôte répertorié. Certains fournisseurs, comme Freedns, prennent en charge la configuration des enregistrements CNAME (alias) pour réduire la quantité d'enregistrements que vous devez mettre à jour. Freedns même par défaut en liant plusieurs enregistrements à la même mise à jour, ce qui peut être très déroutant si vous souhaitez que chaque enregistrement DNS soit mis à jour à partir d'une adresse IP unique - assurez-vous de vérifier vos paramètres au fournisseur DDNS !
Le plugin générique peut également être utilisé avec des fournisseurs qui nécessitent la nouvelle adresse IP du client dans la demande de mise à jour. Voici un exemple de la façon dont cela peut être fait si nous prétendons que http://dyn.com n'est pas pris en charge par Inadyn. Le ddns-path diffère entre les fournisseurs et est quelque chose que vous devez comprendre. Les pages de support répertorient parfois cela dans une section API, ou similaire.
# This emulates dyndns.org
custom dyn {
username = DYNUSERNAME
password = DYNPASSWORD
ddns-server = members.dyndns.org
ddns-path = "/nic/update?hostname=%h.dyndns.org&myip=%i"
hostname = { YOURHOST, alias }
}
Ici, un ddns-path entièrement personnalisé avec des spécificateurs de format est utilisé, consultez la page inadyn.conf(5) Man pour plus de détails à ce sujet.
Un autre exemple:
# Custom configuration for dnsmadeeasy
custom dyn {
username = DNSMADEEASYUSERNAME
password = DNSMADEEASYPASSWORDFORTHISHOST
ddns-server = cp.dnsmadeeasy.com
ddns-path = "/servlet/updateip?username=%u&password=%p&id=DNSMADEEASYHOSTID&ip=%i"
hostname = HOST
}
Lorsque vous utilisez le plugin générique, vous devez d'abord inspecter la réponse du fournisseur DDNS. Par défaut, Inadyn recherche un code OK Response 200 HTTP et les chaînes "good" , "OK" , "true" , "success" ou "updated" dans le corps de réponse HTTP. Si le fournisseur DDNS renvoie autre chose, vous pouvez ajouter une liste de ddns-response = { Arrr, kilroy } , ou simplement un seul ddns-response = Cool - si votre fournisseur donne une réponse, utilisez ddns-response = "" .
Si votre fournisseur DDNS ne vous fournit pas de checkip-server , vous pouvez utiliser d'autres services, comme http://ifconfig.me/ip, qui est la valeur par défaut si vous n'en spécifiez pas pour votre configuration de fournisseur personnalisé:
checkip-server = ifconfig.me
checkip-path = /ip
checkip-ssl = false
ou même utiliser un script ou une commande:
checkip-command = /sbin/ifconfig eth0 | grep 'inet addr'
Ces deux paramètres peuvent également être utilisés dans des sections provider{} .
Remarque: hostname est requis, même si tout est codé dans le ddns-path ! Le nom d'hôte donné est annexé au ddns-path utilisé pour les mises à jour, sauf si vous utilisez le paramètre append-myip , auquel cas votre adresse IP sera ajoutée à la place. Lorsque vous utilisez append-myip vous devez probablement encoder votre nom d'hôte DNS dans le ddns-path à la place, comme cela est fait dans le dernier exemple ci-dessus.
Un problème commun est de commencer, ce qui est compréhensible car In-A-DYN a beaucoup d'options déroutantes.
Après avoir enregistré votre /etc/inadyn.conf , essayez d'abord de le démarrer au premier plan avec des journaux de débogage complets:
inadyn -l debug --foreground --force
Toute erreur de configuration ou de mauvaises réponses du serveur devrait être beaucoup plus facile à repérer. N'oubliez pas de censurer vos journaux à partir de tout mot de passe et informations de domaine si vous déposez un rapport de bogue ou posez une question dans le forum / IRC!
Essayez d'effacer le cache:
sudo systemctl stop inadyn.servicesudo rm -rf /var/cache/inadyn/*sudo systemctl restart inadyn.service Pendant longtemps, le projet a maintenu son propre emballage .deb et l'infrastructure de base APT. Cependant, le niveau croissant des fonctionnalités dans IN-A-DYN, et donc le nombre de dépendances, ainsi que les demandes de support de plus d'architectures et de différentes distributions, le support .deb .
Le projet Debian a désormais un mainteneur actif pour Inadyn, qui est en amont pour Ubuntu et autres. Veuillez signaler les problèmes et les demandes à votre distribution respective:
Remarque: Les fichiers d'emballage du projet ont été déplacés vers une succursale Debian distincte dans le référentiel GIT. Il n'est pas activement mis à jour ou pris en charge pour les versions. Pour l'utiliser, consultez la succursale et modifiez
debian/changelog) pour créer de nouveaux fichiers.debpour votre système.
Images construites automatiquement disponibles ici:
Un dockerfile est fourni pour simplifier la construction et la gestion inadyn .
docker build -t inadyn:latest .
docker run --rm -v "$PWD/inadyn.conf:/etc/inadyn.conf" inadyn:latest
Si vous ne voulez pas exécuter dans un dyn en tant que démon d'arrière-plan, vous pouvez configurer un cronjob:
inadyn.confcrontab -e * * * * * docker run --rm -v " path/to/inadyn.conf:/etc/inadyn.conf " -v " path/to/cache:/var/cache/inadyn " troglobit/inadyn:latest -1 --cache-dir=/var/cache/inadyn > /dev/null 2>&1Pour exécuter la dernière version stable sur macOS, Type:
brew install inadyn
Pour exécuter la dernière version à partir de la branche maître, installez le Tap Git à la place:
brew install --HEAD troglobit/inadyn/inadyn
L'une ou l'autre installera toutes les dépendances.
Vous pouvez également installer dans un dyn sur macOS à l'aide de macports:
sudo port install inadyn
Vous pouvez trouver plus d'informations sur la page des ports d'In-A-Dyn.
Téléchargez d'abord la dernière version officielle de GitHub:
IN-A-DYN nécessite quelques bibliothèques à construire. Le système de construction les recherche, dans leurs versions requises, en utilisant l'outil pkg-config :
Ils sont disponibles dans la plupart des distributions UNIX en tant que packages prédéfinis. Assurez-vous d'installer le package -dev ou -devel des packages de distribution lors de la construction d'Inadyn. Sur Debian / Ubuntu (dérivés):
$ sudo apt install gnutls-dev libconfuse-dev
Pour construire, vous avez également besoin d'un compilateur C, l'outil pkg-config et de faire:
$ sudo apt install build-essential pkg-config
Lors de la construction avec la prise en charge de HTTPS (SSL / TLS), assurez-vous également d'installer le package ca-certificates sur votre système, sinon Inadyn ne pourra pas valider les certificats HTTPS du fournisseur DDNS.
Le GNU Configure & Build System Use /usr/local comme préfixe d'installation par défaut. Dans de nombreux cas, cela est utile, mais cela signifie que les fichiers de configuration et les fichiers de cache utiliseront également ce même préfixe. La plupart des utilisateurs sont venus à s'attendre à ce que ces fichiers dans /etc/ et /var/run/ et configure ont quelques options utiles qui sont recommandées à utiliser:
$ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
$ make -j5
$ sudo make install-strip
Vous voudrez peut-être supprimer l'option --prefix=/usr .
Par défaut, Inadyn essaie de construire avec GNUTLS pour le support HTTPS. GNUTLS est la bibliothèque SSL recommandée à utiliser sur les distributions UNIX qui ne fournissent pas OpenSSL / Libressl en tant que bibliothèque système. Cependant, lorsque OpenSSL ou Libressl est disponible en tant que bibliothèque système, par exemple dans de nombreux systèmes intégrés:
./configure --enable-openssl
Pour désactiver complètement le support Inadyn HTTPS (non recommandé!):
./configure --disable-ssl
Pour plus de détails sur le problème de licence OpenSSL et GNU GPL, voir:
Certaines personnes veulent construire statiquement, pour le faire avec autoconf ajoutez le LDFLAGS= après le script de configuration. Vous devrez peut-être également ajouter LIBS=... , qui dépendra de votre système particulier:
./configure LDFLAGS="-static" ...
Sur certains systèmes, le chemin d'installation de configuration par défaut, /usr/local , est désactivé et n'est pas recherché par des outils comme ldconfig et pkg-config . Donc, si la configuration ne parvient pas à trouver les bibliothèques libconfuse ou les fichiers .pc , créez le fichier /etc/ld.so.conf.d/local.conf avec ce contenu:
/usr/local/lib
Mettez à jour le cache de linker:
sudo ldconfig -v |egrep libconfuse
et exécutez le script de configuration d'Inadyn comme ceci:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure
Pour l'intégration SystemD, vous devez installer pkg-config , ce qui aide le système Inadyn Build System Out les chemins SystemD. Lorsqu'il est installé, appelez simplement systemctl pour activer et démarrer inadyn :
$ sudo systemctl enable inadyn.service
$ sudo systemctl start inadyn.service
Vérifiez qu'il a commencé correctement en inspectant le journal système, ou:
$ sudo systemctl status inadyn.service
Pour arrêter le service:
$ sudo systemctl stop inadyn.service
Lorsqu'ils sont intégrés dans un routeur, certaines fonctionnalités ne sont généralement pas utilisées et peuvent être désactivées pour économiser de l'espace. L'option de configuration --enable-reduced créera un tel binaire de fonctions réduit. Actuellement, cela désactive les messages de journal verbeux et les chaînes d'erreur et élimine la vérification des fichiers de configuration et une compatibilité vers l'arrière.
Si vous souhaitez contribuer, ou simplement essayer simplement les fonctionnalités les plus récentes mais inédites, vous devez savoir quelques choses sur le système de construction GNU:
configure.ac et une Makefile.am par directrice sont des fichiers clésconfigure et Makefile.in sont générés à partir d' autogen.sh , ils ne sont pas stockés en git mais générés automatiquement pour les tarball de versionMakefile est généré par le script configure Construire à partir de git; Clone le référentiel et exécutez le script autogen.sh . Cela nécessite l'installation de l'installation de l' automake outils GNU Tools, autoconf et libtool sur votre système. Les tarball libérés ne nécessitent pas ces outils.
$ sudo apt install git automake autoconf
Ensuite, vous pouvez cloner le référentiel et créer le script configure , qui ne fait pas partie du repos git:
git clone https://github.com/troglobit/inadyn.git
cd inadyn/
./autogen.sh
./configure && make
La construction de GIT nécessite, au moins, les dépendances de la bibliothèque mentionnées précédemment. Les sources GIT sont une cible en mouvement et ne sont pas recommandées pour les systèmes de production, sauf si vous savez ce que vous faites!
Ceci est la continuation d'Inadyn originale de Narcis Ilisei. Maintenant maintenu par Joachim Wiberg. Veuillez déposer des rapports de bogues ou envoyer des demandes de traction pour les corrections de bogues et les extensions proposées sur GitHub.
Un merci personnel! Se rend à Robert Högberg, qui a parrainé un petit routeur D-Link Dir-645 afin que je puisse revenir sur les interwebs :-)