Je ne suis probablement pas le premier à faire cela, mais j'avais besoin d'utiliser le service DNS dynamique de NO-IP afin de pouvoir facilement configurer les appareils et les ordinateurs pour accéder aux ressources de mon réseau local lorsque je suis absent. Pour ceux qui ne connaissent pas NO-IP, il s’agit d’un service DNS dynamique gratuit. La plupart des connexions Internet des particuliers et des petits bureaux ont une adresse IP dynamique, ce qui signifie que les adresses IP changent à chaque fois que la connexion à partir du routeur est établie. Généralement, un nom de domaine nécessite une adresse IP statique pour fonctionner. Le DNS dynamique permet à un nom de domaine (c'est-à-dire sous-domaine.exemple.com) d'utiliser une adresse IP dynamique en mettant à jour NO-IP avec une nouvelle adresse IP lorsque l'adresse IP change. NO-IP associe ensuite cette adresse IP au nom de domaine afin que les services puissent être configurés sur le domaine plutôt que sur l'adresse IP qui change. Cela facilite la configuration des choses.
De nombreux routeurs ont un client NO-IP intégré, mais mon routeur ne prend pas en charge NO-IP et, pour une raison quelconque, je n'ai jamais pu faire fonctionner le client recommandé par NO-IP pour un hôte Linux. J'ai téléchargé la source et l'ai compilée en suivant les instructions, et elle semblait fonctionner, mais elle n'a jamais mis à jour mon adresse IP. Il n'y avait aucune sortie vers la console ou vers un fichier journal pour diagnostiquer le problème que j'ai pu trouver, j'ai donc décidé d'écrire le mien, ce qui n'était vraiment pas si difficile à faire en utilisant un script bash et quelques utilitaires simples. sur ma machine Linux. Voici mon guide pratique et ma documentation pour configurer cela. J'utilise le serveur Ubuntu, donc j'utilise apt et nano, mais cela devrait fonctionner sur tout ce qui est basé sur POSIX comme Mac OS X, BSD, n'importe quelle version de Linux - même le Raspberry Pi.
Le script peut être exécuté en tant qu'instance unique avec des paramètres de ligne de commande, en tant que démon, à l'aide de crontabs (un utilitaire permettant d'exécuter des programmes selon un planning) ou en tant que service Linux.
Ce script a une dépendance, qui est wget. Ceci est généralement installé par défaut sur la plupart des distributions Linux et BSD, mais sinon, utilisez votre gestionnaire de packages pour l'installer.
sudo apt-get install wget
-ou-
sudo yum install wget
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
Paramètres :
-u, --username
Nom d'utilisateur pour vous connecter à no-ip.com.
-p, --password
Mot de passe pour vous connecter à no-ip.com.
-h, --hostname
Le nom de domaine à mettre à jour.
-d, --detectip
Indique au script de détecter votre adresse IP externe. Ceci est prioritaire sur -i.
-i, --ip
Définit manuellement l'adresse IP à mettre à jour. Si ni -d ni -i ne sont spécifiés, no-ip utilisera l'adresse IP qu'il détecte.
-n, --interval
Lors de l'exécution du script en tant que démon/service (voir Installation), cela mettra à jour no-ip toutes les n minutes.
-l, --logfile
Définit le chemin d'accès à un fichier journal. Ce fichier doit être accessible en écriture.
-c, --config
Définit le chemin d'accès à un fichier de configuration. Ce fichier doit être lisible. Les paramètres du fichier de configuration ont priorité sur les paramètres de ligne de commande.
no-ip.sh
Exécute le script avec les paramètres du fichier de configuration à l'emplacement par défaut /etc/no-ip/no-ip.conf
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
Effectue une mise à jour unique, détectant l'UP et enregistrant les résultats
no-ip.sh -c=/home/username/no-ip.conf
Exécutez le script avec les paramètres du fichier de configuration.
no-ip.sh /dev/null 2>&1 &
Exécute le script en tant que démon avec les paramètres du fichier de configuration à l'emplacement par défaut /etc/no-ip/no-ip.conf.
Le fichier de configuration utilise une syntaxe simple pour définir les paramètres. Tout paramètre de ligne de commande (sauf --config) peut également être spécifié dans le fichier de configuration. Les mêmes règles s'appliquent aux paramètres du fichier de configuration en tant que paramètres de ligne de commande (c'est-à-dire que "detectip" remplace "ip" si les deux sont spécifiés).
Exemple:
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
Avant d'installer le script, téléchargez et extrayez les fichiers sur votre ordinateur local. Les instructions supposent que vous vous trouvez dans le dossier no-ip-master.
cd ~
wget https://github.com/theonemule/no-ip/archive/master.zip
unzip master.zip
cd no-ip-master
Méthode 1 : crontabs
Crontabs vous permet de spécifier un calendrier d'exécution du script et il exécutera également le script en tant qu'utilisateur pour lequel la crontab est configurée. Assurez-vous que l'utilisateur dispose des autorisations d'exécution sur le script, des autorisations de lecture sur le fichier de configuration et des autorisations d'écriture sur le fichier journal. Crontabs exécutera le script sur une base planifiée, il n'est donc pas nécessaire de spécifier un intervalle.
Voici comment exécuter le script en tant que root.
1.) Créez un dossier dans etc.
sudo mkdir /etc/no-ip
2.) Créez un fichier de configuration.
sudo touch /etc/no-ip/no-ip.conf
3.) Définissez les paramètres avec votre éditeur préféré. J'utilise nano. Voir la section Fichier de configuration ci-dessus pour plus de détails.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
detectip=true
4.) Copiez no-ip.sh dans /usr/sbin
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) Rendre le script exécutable
sudo chmod +x /usr/sbin/no-ip.sh
6.) Connectez-vous en tant que root
sudo -i
7.) Modifier la crontab de la racine
crontab -e
8.) Ajoutez l’entrée en bas. */10 indique à crontab d'exécuter le script chaque fois que l'heure actuelle est divisible par 10, ou toutes les 10 minutes, et de sauvegarder la crontab.
*/10 * * * * /usr/sbin/no-ip.sh
Méthode 2 : service Linux (écrit pour les distributions basées sur Debian. Cela variera pour les autres distributions)
Assurez-vous que root dispose des autorisations d'exécution sur le script, des autorisations de lecture sur le fichier de configuration et des autorisations d'écriture sur le fichier journal.
1.) Créez un dossier dans /etc.
sudo mkdir /etc/no-ip
2.) Créez un fichier de configuration.
sudo touch /etc/no-ip/no-ip.conf
3.) Définissez les paramètres avec votre éditeur préféré. J'utilise nano. Voir la section Fichier de configuration ci-dessus pour plus de détails.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
4.) Copiez no-ip.sh dans /usr/sbin
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) Rendre le script exécutable
sudo chmod +x /usr/sbin/no-ip.sh
6.) Copiez no-ip-service dans init.d
sudo cp no-ip-service /etc/init.d/no-ip-service
7.) Rendre no-ip-service exécutable
sudo chmod +x /etc/init.d/no-ip-service
8.) Démarrez le service
sudo service no-ip-service start
9.) Ajoutez le service pour démarrer au démarrage.
update-rc.d no-ip-service defaults