Jump to content

Ddns Sur Ovh - Ou Modifier La Liste Des Ddns


Recommended Posts

bonjour,

problème de DDNS sur mon SS439 en raid5.

La liste des DDNS possibles est limitée. Dans "les temps anciens", j'étais sur dyndns.org ; puis sur no-ip... bref

dernièrement, j'ai voulu utiliser www.dyns.cx qui figure dans la liste de QNAP.

Je suis allé reserver un dynhost chez www.dyns.cx après avoir  payé mes 5 €. Mais quand je configure QNAP pour ce DDNS, QNAP renvoie le message "erreur interne du DDNS veuillez contacter lesupport technique du DDNS".

Bien entendu aucune réponse aux messages laissés sur les contacts de dyns.cx

Entre temps, j'ai "loué" un nom de domaine chez OVH chez lequel j'ai pu obtenir un dynhost fiable... LE PROBLEME, c'est que dans la liste des DDNS du QNAP, il n'y a pas mon domaine bien sur. MAis, me suis je dit, il ne doit pas êre difficile de remplacer l'un de ceux qui existe par le mien ou de l'ajouter (connaissant un peu linux ; sachant utiliser vi ; etc... bref, trop prétentieux, car si j'ai trouvé des fichiers relatifs à ddns, je n'ai pas trouvé celui contenant la liste !

J'ai contacté le support QNAP et JOE m'a répondu en me communicant un lien pour télécharger un script qui devrait permettre (après modification ) et via crontab de faire la redirection en récupérant les informations nécessaires auprès de mon domaine.

Malheureusement, quand je suis en telnet sur mon qnap, connecté en "admin" je ne vois pas les dossiers qui normalement sont ceux que l'on voit en utilisant "filestation" (notamment le dossier home de admin dans lequel j'ai stocké ce script).

Pour faire une comparaison, par exemple dans les synology, ces dossiers apparaissent dans "volume" . 

Comment faire pour faire apparaître (quel "montage" ?) pour accéder à tous les dossiers ? Est il nécessaire d'être "root" (ce qui ne semble pas prévu sur les qnap  !) ; j'ai installé ipkpg mais bien sur, sudo ne sert à rien...

Est ce que quelqu'un aurait une solution soit

- pour me permettre d'acceder au volume et ainsi installer le script dans /sbin par ex pour le lancer via crontab

- soit de rectifier la table des ddns existantes (et permettre d'y passer les paramètres domaine, host, user, mot de passe)

merci

Je peux vous faire passer ce script ; d'autres sont peut être interessés à personnaliser leur ddns ?

Link to post
Share on other sites

Bonjour,

 

Les QNAP sont des systèmes embarqués dont le système de fichiers root est en mémoire ... donc réinitialisé A CHAQUE BOOT

 

La table des dyndns est dans un base interne du QNAP mis à jour via des scripts java non disponible en source ... ni modifiables ...

 

Sinon :

admin est le root du QNAP UID=0 GID=0, donc pour utiliser sudo des ipkg il faut manipuler le sudoers dans /opt/etc et remplacer la ligne root ALL ... par admin ALL ... puis dans sudo utiliser -u admin

 

home est visible dans les partages sous le nom de partage home il est dynamique est lié au nom d'utilisateur connecté (celui de Windows ou celui entré dans la boite de dialogue de connexion sous un autre utilisateur)

... le mieux est évidemment d'avoir le même nom et le même mot de passe dans votre PC et dans le QNAP

 

Pour que home existe ... il faut dans le menu user avoir validé les "dossiers d’accueil"

 

Un autre accès existe via homes qui est la base des répertoires d’accueil ...

 

En mode console ... les "home" sont sous /share/homes/

 

ATTENTION il ne faut JAMAIS mettre vos scripts etc. dans un répertoire volatile (en mémoire) au boot comme /sbin, /bin, /usr/bin /usr/sbin

Il faut le mettre dans un répertoire non volatile

 

Sur un SS-439 ce sera un des répertoires par défaut ou en créer un dans /share/xxx_DATA/ (xxx=MD0 par ex.) qui est la partition utilisateur et vous l’exécuterez en spécifiant le chemin complet ex: /share/MD0_DATA/mon_rep/mon_script.sh

 

ATTENTION pour utiliser crontab ...

1 modifiez le fichier /etc/config/crontab (ne pas chercher à modifier le fichier crontab de admin il est régénéré à chaque fois)

2 redémarrez le crond : /etc/init.d/crond.sh start

ATTENTION dans crontab qui s’exécute sous le shell 1 (init) les chemins ne sont pas connus ... n'utilisez que des PATH (chemin) complet.

 

Philippe.

Link to post
Share on other sites

Un GIGANTESQUE merci à Philippe pour sa réponse dont je mesure toute l'importance (et toutes les aneries que j'aurais pu faire !). Je tarde un peu à répondre, parce que AVANT d'embeter encore avec mes questions pour regler ce problème, j'essaie de progresser et d'y voir plus clair (je n'ai pas encore fini !).
Bon

1 - Déjà, je m'étais mal expliqué à propos de l'architecture des dossiers du qnap que je ne trouvais pas ; mais j'ai désormais trouvé (moins évident que sur un synology !) ; les dossiers se trouvent dans /share/MD0_DATA

2 - j'ai donc pu récuperer un script (que j'ai appelé update_ovh.sh) dans lequel, avec vi, j'ai remplacé par MES informations,: username, password, host. Pour le rendre executable, j'ai appliqué chmod +x update_ovh.sh et, avant de le mettre en crontab, j'ai voulu voir ce que donnait son execution. J'ai donc fait ./update_ovh.sh MAIS, QNAP m'a mechamment répondu "/bin/bash^M:bad interpreter:no such file or directory"

J'en suis là pour l'instant....pas eu le temps d'aller plus loin.

3 - Pour JCCHAP, c'est avec plaisir que je mets à ta disposition le script : où puis je le mettre ? ici, en réponse avec un copier coller ??? Je vois comment insérer une image mais pas comment joindre un fichier. Pardon, je viens de voir : je joins donc le fichier update_ovh.sh

Link to post
Share on other sites

Bonjour,

 

Le ^M ... est un retour chariot ... car votre fichier est DOS-Windows pas Linux ... qui n'utilise QUE <LF> (line feed) comme séparateur de ligne, DOS Windows utilise <CR><LF>

soit vous enlevez ces parasites à la main ... soit mettez le fichier dans /share/Public et modifiez le en "Linux" avec un outil comme Notepad++ http://notepad-plus-plus.org/fr/

 

Avec vim il faut faire apparaître les ^M pour les supprimer ... ce devrait être :

en entrant 

:e ++ff=unix

Le : vous envoie en bas de page ...  et le ++FF change le file format

... là devrait apparaitre les ^M (aussi \r ou retour chariot ... en langage Linux ou humain ... )

 

Philippe.

Link to post
Share on other sites

toujours merci Philippe... en fait j'avais bien utilisé notepad++... mais comme j'étais sous windows, je n'ai pas fais attention quand j'ai capturé le fichier en "copier/coller"... moi, pas fier !

je joins à nouveau le fichier rectifié.

Mais il reste un problème que je ne sais pas résoudre : la ligne 26 contient une instruction qui n'est pas reconnue :

ip_in_dns='dig +short $host'

"dig" n'est pas reconnue (instruction permettant d'interroger des DNS) ; elle semble incluse dans le package "dnsutils" ...qui n'est pas accessible par ipkg (mais par apt-get..) y a til une solution de remplacement ?

Link to post
Share on other sites

Bonjour,

 

??? je ne vois pas vos fichiers ? les avez-vous bien inclus dans le message après import ???

Si c'est uniquement du bash ... (shell)

 

dig n'est pas disponible ... mais avec nslookup et un peu de traitement (dernière des lignes Address) avec du tr et du cut ... devrait donner le même résultat ...

ex. :

nslookup www.qnap.com | grep Address | tail -n 1 | tr -s " " | cut -f 2 -d " " | tr -d ","

 

le tr -d (delete) de la virgule n'est utile qu'en "round robin" multiple adresses  pour un même nom (ex. google ou même qnap ... )

 

pour vous la ligne devient ... (normalement c'est `et pas ' ???) ... avec chemin complet ... (PATH)

 

ip_in_dns=`/usr/bin/nslookup $host | /bin/grep Address | /usr/bin/tail -n 1 | /bin/tr -s " " | /bin/cut -f 2 -d " " | /bin/tr -d ","`

 

si c'est du bash ... bien sur ...

 

Philippe.

Link to post
Share on other sites

Avant de passer à l'explication de la solution que j'ai utilisée et QUI MARCHE, Philippe, pouvez vous me dire ce que représente "Adresse" dans votre ligne de code ? Je l'ai mise dans le fichier update_ovh.sh mais j'ai, provisoirement abandonné cette solution..

En revanche, grace au lien donné par JOE, lien qui vient d'OVH, j'ai récupéré 3 fichiers qui sont inclus dans le fichier DDNS.zip ci-joint.

il s'agit de

-dynhost : c'est le script à faire executer pour mettre à jour le ddns. J'ai récupéré dans le fichier update_ovh.sh la ligne de code qui m'intéressait (celle qui permet d'obtenir l'ip publique à partir du site www.monip.com). En effet, mon serveur QNAP se trouvant derrière un routeur, lequel se trouve derrière le modem cable (lamentable) fourni par NUMERICABLE, je ne pouvais pas obtenir l'ip publique à partir de mon routeur (ni de la box. Les modifications opérées sur le fichier dynhost permettent maintenant de l'utiliser dans mon cas, mais aussi dans le cas où le serveur QNAP est derrière un modem routeur quelqconque ou derrière une "box". Il convient donc de l'ouvrir (attention au mode UNIX !!!!) pour valider le cas dans lequel on se trouve MAiS AUSSI pour donner les informations indispensables que sont nom du sous domaine, nom d'utilisateur, mot de passe.

- old.ip : fichier qui est mis à jour par dynhost (il y est enregistré l'ip actuelle avant changement)

- ipcheck.py : c'est un script en python qui est appelé par dynhost.

 

Il me reste maintenant à mettre les informations dans le crontab (merci Philippe pour les conseils INDISPENSABLES sans lequels je me serais royalement planté) après avoir créé un répertoire "là où il faut" !
Je pense que JCCHAP pourra utiliser cette solution ; d'autres aussi surement, qui sont ennuyés par les limitations des DDNS proposés.
Il serait peut etre bon de faire un petit tutoriel bien propre sur la question ?.
 

Link to post
Share on other sites

Bonjour,

 

Même si ce n'est donc plus nécessaire ...

 

La commande utilise les "pipe" (la sortie de l'un est l'entrée de la suivante)

donc :

ip_in_dns=`/usr/bin/nslookup $host | /bin/grep Address | /usr/bin/tail -n 1 | /bin/tr -s " " | /bin/cut -f 2 -d " " | /bin/tr -d ","`

 

se décompose en 

résultat de ndlookup avec le host fourni en variable ($host)

ex. : ... ici recherche de(s) l'I.P. de www.qnap.com dans le QNAP le DNS est celui de google 8.8.8.8

[~] # host=www.qnap.com
[~] # nslookup $host
Server:     google-public-dns-a.google.com
Address:    8.8.8.8

Name:       a1638.w19.akamai.net
Addresses:  2.21.243.58, 2.21.243.75
[~] #

Puis le grep (recherche dans le résultat du nslookup des lignes contenant) sort les lignes contenant "Address"

[~] # nslookup $host | grep Address
Address:    8.8.8.8
Addresses:  2.21.243.75, 2.21.243.58
[~] #

tail permet de ne garder que la dernière ligne

[~] # nslookup $host | grep Address | tail -n 1
Addresses:  2.21.243.58, 2.21.243.75
[~] #

tr supprime (dans ce cas) les espaces multiples entre les éléments de la réponse pour n'en laisser qu'un

[~] # nslookup $host | grep Address | tail -n 1 | tr -s " "
Addresses: 2.21.243.75, 2.21.243.58
[~] #

cut va aller prendre uniquement le 2em champ de la ligne avec UN espace comme séparateur (ce qui explique le tr précédent) si il y a plusieurs adresses I.P. (round robin du DNS) seule la première sera gardée

[~] # nslookup $host | grep Address | tail -n 1 | tr -s " " | cut -f 2 -d " "
2.21.243.58,
[~] #

Et inutile pour vous, mais pour rester générique , en cas de réponses multiples suppression de la "," séparateur ... ou ne ferra rien si pas de virgule ...

[~] # nslookup $host | grep Address | tail -n 1 | tr -s " " | cut -f 2 -d " " | tr -d ","
2.21.243.58
[~] #

Et voilà votre adresse I.P. externe vu des D.N.S. basé sur votre nom de site

 

L'avantage et l'inconvénient de Linux c'est qu'il y a de multiples solutions dépendant des outils disponibles ...

 

ex. mon I.P. externe en une commande (wget) :

[/share/Public] # ./myip.sh
xx.231.xx.43
[/share/Public] # cat myip.sh
wget -qO- ipecho.net/plain
echo ""
[/share/Public] #

etc. etc. etc.

 

Philippe.

Link to post
Share on other sites

Bonsoir,

 

Merci pour votre travail d’adaptation.

Je suis absent deux semaines et je ne veux pas tester à distance .

Une petite synthèse de l’installation  serait sympa pour éviter de tâtonner.

 

Cordialement

JCCHAP

 

 

 

Link to post
Share on other sites

Pour JCCHAP,

je vais demander à Philippe si "la petite synthèse" peut être faite ICI ou sous un autre titre

 

Pour Philippe

VRAIMENT MERCI pour toute votre aide (très précise et... très courtoise) sans laquelle je n'aurais pas pu arriver au résultat. 

Deux questions:

 - la première ci-dessus ! (pour JCCHAP)

- la deuxième : à propos de crontab ;
       + dans un premier temps, j'ai utilisé la commande crontab -e ; j'ai vu le crontab existant et j'ai réussi à ajouter la commande 0 12 * * * * /share/MD0_DATA/dd/dynhost. Bien, en faisant crontab -l, j'ai bien vu ma ligne de commande.

       + dans un deuxième temps, ne trouvant le fichier "log" pour voir le résultat, j'ai fait un cat vers etc/config/crontab et là j'ai eu la surprise de voir que ma ligne n'y était pas ; alors j'ai utilisé la commande vi /etc/config/crontab pour modifier ce crontab (qui contenait EXACTEMENT la même chose que celui vu par crontab -l) et après avoir rajouté ma ligne, le cat m'a montré qu'elle etait bien présente. Depuis, le fichier de log, présent dans le dossier admin, montre bien que l'opération est effectuée tous les jours à midi

Y a til quelque chose à modifier ?

Ah j'oubliais une 3ème : quand il y aura des mises à jour de firmware, il faudra refaire l'opération je pense, non ?
 

Link to post
Share on other sites

Bonjour,

 

Si vous arrivez à écrire dans le forum tutoriels (faites un test court avec juste une ligne) ...

... mettez le dedans

Sinon écrivez ici et j'ajouterai un lien direct dans tutoriels vers le message ...

 

Contab ... du au caractère "volatile" du firmware (système embarqué reconstruit à chaque boot)

... Qnap utilise un méthode particulière

1 rappel : crontab travaille au niveau utilisateur ... ET sur QNAP l'utilisateur root n'existe pas et est remplacé par admin

2 crontab utilise donc un fichier PAR utilisateur qui se nomme (le fichier) donc "admin"

3 cron se sert donc d'un fichier qui est en mémoire (pour ne pas risquer de plantage) sous /tmp/cron/crontabs/ ... nommé donc admin

4 QNAP a un fichier pivot (résident) dans /etc/config/crontab ... ce fichier est recopié par le shell de lancement du cron /etc/init.d/crond.sh dans la "bonne" structure

 

... quand vous utilisez crontab -e ou -l ... vous ciblez /tmp/cron/crontabs/admin ET PAS le fichier de base ... donc cela disparaît ... et n'est pas pris en compte dès redémarrage du crond ou du QNAP

 

DONC pour utiliser les crontab sur QNAP

1 modifiez le fichier /etc/config/crontab

2 relancez le shell (qui va s'occuper de le mettre là ou il faut) : /etc/init.d/crond.sh restart

 

Ces modifications ( dans /etc/config/crontab ) sont sur disque et seront réutilisés lors du prochain démarrage de crond ... donc résistent au reboot

De même ce fichier résiste à la mise à jour ... et ne sera PAS perdu lors d'une update (sauf indication explicite (mais jamais encore) de QNAP)

 

Philippe.

Link to post
Share on other sites

Voilà Philippe pour ceux que cela intéresserait une synthèse que j'espère précise et juste. Si elle peut faire l'objet d'un tuto, pas de problème ! (MERCI de la parcourir et bien sur de la rectifier : je ne voudrais pas que des utilisateurs soient plantés ou ennuyés par des erreurs ou anomalies) :

- le fichier tuto DDNS.txt (en mode texte ; je peux le refaire en format .doc ou .docx ; son titre peut être changé par quelque chose de + explicite)

- le fichier DDNS.zip contenant les 3 fichiers nécessaires

- le fichier putty.jpg (bof... l'utilité n'est pas flagrante !)

 

 

ah... encore oublié un fichier

 

 

 

 

post-837-0-36572100-1414682968_thumb.jpg

post-837-0-10197300-1414683030_thumb.jpg

DDNS.ZIP

tuto DDNS.txt

Link to post
Share on other sites
  • 3 weeks later...
  • 4 weeks later...
  • 2 years later...

Bonjour 

Les deux liens sont mort, vu la date du post c'est comprhénsible. J'ai installé Ovh-Dynhost depuis le Qnap-store.

Je n'arrive pas à faire tourner une tâche Cron depuis mon serveur QNAP TS-451.

Voici ce code que j'ai inscris dans le dossier crontab  /etc/.config/

*/10 * * * * /share/CACHEDEV1_DATA/.qpkg/ovh-dynhost-updater/ovh-dynhost-updater.sh --username MONID --password MONPASS

J'ai bien relancer /etc/init.d/crond.sh restart , et même rebooté le NAS. Si vous pouvez m'aidez.

Merci d'avance.

Link to post
Share on other sites

Bonjour,

J'ai l'impression qu'il manque quelque quelque chose dans la fréquence dans les minutes dans crontab

Voici le schéma d'une ligne : m h dom m dow cmd mais je pense qu'il manque une constante devant le /10 pour démarrer. ceci dit, ça fait quand même beaucoup de fois lancé avec les minutes..

m minutes

h heure

dom day of month

m month

dow day of week : 0= dimanche juste pour rappel.

Mais je ne suis pas un pro de cet ordonnancer :-)

Cordialement

FredP

 

Link to post
Share on other sites

Bonjour,

Petit complément:

Un rafraichissement toutes les 12 heures: à midi et minuit pourrait peut-être suffire: voici le(s) contenu(s) de crontab que je vous propose de tester, si déjà le script marche puisque c'est la base...
0 0,12 * * * /share/CACHEDEV1_DATA/.qpkg/ovh-dynhost-updater/ovh-dynhost-updater.sh --username MONID --password MONPASS
Si la commande supporte les redirections, je serais tenté de mettre dans le crontab la ligne suivante qui crée un fichier journal au format texte dans votre dossier personnel en remplaçant le terme <user-homes-directory par le nom de votre compte.
Si je me rappelle bien, le compte admin a accès par défaut à tous les homes directory en lecture écriture...
0 0,12 * * * /share/CACHEDEV1_DATA/.qpkg/ovh-dynhost-updater/ovh-dynhost-updater.sh --username MONID --password MONPASS >> /share/homes/<user-homes-directory>/ovh-dynhost-updater.txt

Bon Week-end.

Cordialement.

FredP

PS : un petit retour d'expérience est toujours apprécié pour ceux qui rencontreront la même problématique. Merci d'avance pour eux.

Link to post
Share on other sites

Bonsoir, 

J'ai juste retiré le .sh du script pour la partie ovh-dynhost-updater et ma tâche Cron fonctionne maintenant.

Voci mon code:

*/5 * * * * /share/CACHEDEV1_DATA/.qpkg/ovh-dynhost-updater/ovh-dynhost-updater --username MyuserOvh --password MypassOvh update-record MyDomainovh

Remplacer MyuserOvh, MypassOvh, MyDomainovh par vos données perso.

relancer le process : crontab /etc/config/crontab && /etc/init.d/crond.sh restart

Patientez 5 minutes et c'est ok.

 

 

Link to post
Share on other sites

Bonjour matinal,

Autant pour moi pour l'exécution récurrente toutes les 5 minutes. Entre-temps, j'ai eu le temps de réviser mes leçons et de m'apercevoir que je fixais toujours un début et une fin sans fréquence aussi importante:-/. Désolé pour cette erreur technique associée à une idée simple: est-ce utile cette fréquence d'enregistrement DNS Dynamique? Pour les lieux avec des liaisons Internet instables ou si les serveurs sont difficiles à joindre, cela peut l'être...

Merci pour ce retour. Je pense que ce post peut être marqué Résolu pour assister la recherche des autres utilisateurs du forum.

Bon dimanche.

Cordialement.

FredP

 

  • Upvote 1
Link to post
Share on other sites
  • 3 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...