« LINUX:DNS-GSLB » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(6 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 3 : | Ligne 3 : | ||
---- | ---- | ||
=But= | =But= | ||
Il existe la possibilité de créer un nom de domaine gratuit et d'en gérer sa zone DNS. Malheureusement ce nom de domaine ne sera pas totalement personnel. Nous allons utiliser le service de GSLB.ME. | |||
Ligne 112 : | Ligne 101 : | ||
L'explication de cette application se trouve à l'URL <nowiki>https://docs.gslb.me/clients/</nowiki> et l'application est téléchargeable à l'URL '''<nowiki>https://docs.gslb.me/files/20131227-GSLB.ME-RestClient.zip</nowiki>''' Cette application transforme les enregistrements de type "A" mais pas les autres. | L'explication de cette application se trouve à l'URL <nowiki>https://docs.gslb.me/clients/</nowiki> et l'application est téléchargeable à l'URL '''<nowiki>https://docs.gslb.me/files/20131227-GSLB.ME-RestClient.zip</nowiki>''' Cette application transforme les enregistrements de type "A" mais pas les autres. | ||
Notons que ce script "GSLB.me-RestClient.jar" que nous allons utiliser, est écrit en Java (version 8). Il faut donc que l'interpréteur Java soit installé. | |||
Cette application ne fonctionne pas avec les nouvelles versions de Java. Elle s'exécute correctement avec la version 8. | Cette application ne fonctionne pas avec les nouvelles versions de Java. Elle s'exécute correctement avec la version 8. | ||
Ligne 131 : | Ligne 122 : | ||
On rafraichit la liste des paquets et des dépôts avec la commande classique: | On rafraichit la liste des paquets et des dépôts avec la commande classique: | ||
dnf upgrade --refresh | dnf upgrade --refresh | ||
et on installe le paquet de Java 8: | et on installe le paquet de Java 8 de Temurin: | ||
dnf install temurin-8-jre | dnf install temurin-8-jre | ||
La clé | La clé du dépôt est chargée et ensuite le paquet. | ||
On peut passer au logiciel écrit en Java. | On peut passer au logiciel écrit en Java. | ||
Dans nos exemples de scripts qui suivent, nous les placerons dans un répertoire nommé "/manager/gdlb.me". | Dans nos exemples de scripts qui suivent, nous les placerons dans un répertoire nommé "/manager/gdlb.me". | ||
Nous y décompressons le fichier "20131227-GSLB.ME-RestClient.zip" téléchargé ci-dessous. Un sous-répertoire "GSLB.ME-RestClient" est alors créé dans le répertoire "/manager/gdlb.me". | Nous y décompressons le fichier "20131227-GSLB.ME-RestClient.zip" téléchargé ci-dessous. Un sous-répertoire "GSLB.ME-RestClient" est alors créé dans le répertoire "/manager/gdlb.me". | ||
Ligne 281 : | Ligne 266 : | ||
---- | ---- | ||
--> | --> | ||
=DDCLIENT= | |||
Le logiciel DDCLIENT est un paquet qui offre un service de mise à jour de la zone DNS. | |||
Il est compatible à bon nombre de situations. Nous allons l'appliquer à notre cas. | |||
Son principe de fonctionnement est analogue aux scripts présentés dans cet article. Mais au lieu d'utiliser le CRON du système, il utilise le système SYSTEMD. | |||
==Installation== | |||
On commence par installer le logiciel avec la commande: | |||
dnf install ddclient | |||
==Fichier de configuration du service== | |||
Le premier fichier "/etc/sysconfig/ddclient" sert à paramétrer le service. | |||
Voici son contenu: | |||
---- | |||
DDCLIENT_OPTIONS="--file /etc/ddclient.conf" | |||
---- | |||
On force l'utilisation du fichier de paramètres "/etc/ddclient.conf". C'est le fichier installé par défaut. Alors que le logiciel demande par défaut le fichier "/etc/ddclient/ddclient.conf". | |||
==Fichier de configuration du logiciel== | |||
Comme désigné ci-dessus, on utilise le fichier de paramétrage du logiciel "/etc/ddclient.conf". Il est important que ce fichier appartiennent à l'utilisateur "ddclient". | |||
Voici une configuration conforme à notre zone DNS: | |||
---- | |||
# Options générales | |||
ssl=no | |||
daemon=3600 | |||
syslog=yes | |||
mail=root | |||
mail-failure=root | |||
mail-from=ddclient | |||
pid=/run/ddclient/ddclient.pid | |||
# Méthode récupération de l'adresse IP publique de notre serveur | |||
usev4=webv4 , webv4=ifconfig.co | |||
# Paramètres de connexion à la zone DNS pour mail.adbweb.gslb.eu | |||
protocol=dyndns2 | |||
server=dynupdate.gslb.me | |||
login=adresse@email | |||
password=mot-de-passe | |||
mail.adbweb.gslb.eu | |||
# Paramètres de connexion à la zone DNS pour www.adbweb.gslb.eu | |||
protocol=dyndns2 | |||
server=dynupdate.gslb.me | |||
login=adresse@email | |||
password=mot-de-passe | |||
www.adbweb.gslb.eu | |||
# Paramètres de connexion à la zone DNS pour adbweb.gslb.eu | |||
protocol=dyndns2 | |||
server=dynupdate.gslb.me | |||
login=adresse@email | |||
password=mot-de-passe | |||
adbweb.gslb.eu | |||
---- | |||
Explication des paramètres: | |||
* Paramètres généraux | |||
** ssl=0 : accès au site de la zone sans cryptage - GSLB n'accepte pas le protocole HTTPS | |||
** daemon=3600 : le service teste les noms de domaine toute les heures (3600s) | |||
** syslog=yes : les messages sont envoyés le système de journalisation de l'OS | |||
* Méthode récupération de l'adresse IP publique de notre serveur | |||
** usev4=webv4 , webv4=ifconfig.co : comme la machine n'est pas connectée directement sur Internet car elle fait partie de notre LAN local, on interroge le site Web "ifconfig.co" spécialisé dans ce traitement. La requête se fait pour l'IPV4. | |||
* Paramètres de connexion à la zone DNS du domaine à mettre à jour - à répéter pour chaque domaine | |||
** protocol=dyndns2 : protocole de mise à jour accepté par GSLB selon sa documentation | |||
** serverdynupdate.gslb.me : nom de machine de GSLB traitant la mise à jour | |||
** login=adresse@email : nom de compte d'accès de gestion de la zone DNS à GSLB | |||
** password=mot-de-passe : mot de passe d'accès de gestion de la zone DNS à GSLB | |||
** enfin le nom de domaine à mettre à jour | |||
==Debuggage en ligne de commande== | |||
Il est possible de tester interractivement en ligne de commande avant de le mettre en production via le service "ddclient.service". | |||
Ce programme doit être lancé par l'utilisateur "ddclient" (commande : sudo -u ddclient). En mode "debug", on peut suivre le déroulement des traitements et donc voir laquelle pose problème: | |||
sudo -u ddclient ddclient -file /etc/ddclient.conf --verbose --debug --foreground | |||
==Activation du service== | |||
De façon classique, on active et lance le service: | |||
systemctl enable ddclient.service | |||
systemctl start ddclient.service | |||
On peut vérifier son état: | |||
systemctl status ddclient.service | |||
=Script personnel= | |||
On peut aussi utiliser un script simple qui va récupérer l'adresse IP de notre machine et la comparer à celle reprise dans la zone DNS et en cas de non concordance, l'adresse est mise à jour dans la zone DNS. | |||
Voici le script que l'on "dynme.bat" également placé dans le répertoire "/manager/gdlb.me". | |||
---- | |||
#!/bin/bash | |||
#################################### | |||
# | |||
# Configuration à adapter selon votre situation | |||
# | |||
# LISTEHOST : nom de la machine | |||
# LOGIN : utilisateur GSLB.ME | |||
# PASSWORD : mot de passe | |||
# | |||
LISTEHOST="mail.adbweb.gslb.eu www.adbweb.gslb.eu adbweb.gslb.eu" | |||
LOGIN=adresse@email | |||
PASSWORD=mot-de-passe | |||
##################################### | |||
# Journal | |||
PATH_LOG=/var/log/dynme.log | |||
# | |||
# Journalisation | |||
# | |||
echo > $PATH_LOG | |||
echo "Run dyndns" >> $PATH_LOG | |||
date >> $PATH_LOG | |||
# | |||
# Récupération IP de la machine | |||
# | |||
CURRENT_IP=`curl -s ifconfig.co` | |||
echo "Current IP" >> $PATH_LOG | |||
echo "$CURRENT_IP" >> $PATH_LOG | |||
# | |||
# Passage en revue de tous les domaines | |||
# | |||
for HOST in ${LISTEHOST} | |||
do | |||
echo "----------------------------" >> $PATH_LOG | |||
echo "Machine $HOST" >> $PATH_LOG | |||
HOST_IP=`dig @ns1.gslb.me. +short $HOST` | |||
echo "Host IP" >> $PATH_LOG | |||
echo "$HOST_IP" >> $PATH_LOG | |||
# | |||
# Comparaison de l'adresse IP réelle et de celle du serveur DNS | |||
# Si elles sont différentes, celle du serveur DNS est adaptée | |||
# | |||
if [ -z "$CURRENT_IP" ] || [ -z "$HOST_IP" ] | |||
then | |||
echo "Pas d'IP récupérée" >> $PATH_LOG | |||
else | |||
if [ "$HOST_IP" != "$CURRENT_IP" ] | |||
then | |||
echo "IP changée" >> $PATH_LOG | |||
RES=`curl -s --user "$LOGIN:$PASSWORD" "<nowiki>http://dynupdate.gslb.me/nic/update?system=dyndns&hostname=$HOST&myip=$CURRENT_IP</nowiki>"` | |||
echo "Résultat de la requête DynDns" >> $PATH_LOG | |||
echo "$RES" >> $PATH_LOG | |||
else | |||
echo "IP n'a pas été changée" >> $PATH_LOG | |||
fi | |||
fi | |||
done | |||
---- | |||
Les paramètres du script "dynme.bat" sont à adapter selon vos besoins: | |||
* LOGIN correspond à votre nom de compte d'accès au site de GSLB | |||
* PASSWORD correspond au mot de passe de ce compte | |||
* NOMDNS reprend votre nom de domaine (la valeur reprise en exemple est celle du cas exposé plus haut) | |||
* LISTEHOST reprend les différentes entrées des enregistrements de type A (les valeurs reprisent en exemple sont celles du cas exposé plus haut) | |||
Pour que ce script s'exécute automatiquement à intervalle régulier, il faut ajouter cet appel dans le CRON. | |||
Ajoutez cette entrée dans le fichier "/etc/crontab": | |||
---- | |||
# dyndns GSLB.ME | |||
5,20,35,50 * * * * root /manager/gslb.me/dynme.bat >& /manager/gslb.me/dynme.log | |||
---- | |||