J'utilise un serveur Ubuntu 14.04.3 LTS qui lance quelques choses au démarrage, deux d'entre eux étant OpenVPN pour mon service VPN et un client de mise à jour DNS dynamique pour mettre à jour mon hôte noip vers mon IP actuelle.
J'ai essayé avec le noip officiel DUC et avec ddclient (voir ici pourquoi j'ai changé) et les deux se mettent à jour incorrectement vers l'IP que j'ai avant que mon VPN se connecte (l'IP du FAI).
La connexion OpenVPN fonctionne lorsque je me connecte via SSH, cela signifie donc que le DUC signale l'IP avant que OpenVPN ne fonctionne ou quelque chose comme ça. Avant de demander ici, j'ai essayé de modifier le script init.d de ddclient avec une exigence openvpn:
# Required-Start: $local_fs $remote_fs $network $syslog $openvpn
Pour les fichiers rcX.d, openvpn a quelque chose comme S16openvpn et ddclient a S99ddclient, donc normalement ddclient démarre après openvpn non? Je ne suis pas vraiment à l'aise avec ces choses.
Cela n'a rien changé. J'espère que quelqu'un pourra m'aider, cela signifie que chaque fois que je redémarre mon serveur, je dois redémarrer le service client DUC pour que mon hôte noip fonctionne correctement.
Un plan B si rien ne peut être trouvé est de demander au service ddclient de redémarrer après que tout a été lancé, de sorte que je n'ai pas à le faire et que je n'oublierai pas. Mais bien sûr, il serait préférable de faire une mise à jour de ddclient vers la bonne IP.
P.S. : Si vous demandez pourquoi je veux que l'IP soit l'IP VPN, c'est parce que certains services comme le serveur Teamspeak 3 doivent être accessibles, donc mon ddns.net doit pointer vers l'IP VPN, car lorsqu'ils pointent vers mon IP public ISP, ils sont plus accessible (lié au fonctionnement du VPN, je suppose).
J'ai donc appris qu'OpenVPN fournit un moyen de démarrer un script après la création du tunnel. Pour cela, dans mon fichier /etc/openvpn/toto.conf, j'ai ajouté la ligne
# run /etc/openvpn/titi.sh when the connection is set up
up /etc/openvpn/titi.sh
Notez que le paramètre script-security dans le fichier conf doit être correctement défini (au moins script-security 2, voir man of openvpn).
Voici le contenu de mon script titi.sh:
#!/bin/bash
(sleep 60 && ddclient -daemon=0 -debug -verbose -noquiet -force >> launch_dd.log) &
Le premier script n'avait pas le sommeil 60, mais étrangement lorsque le script a été appelé et lancé ddclient, mon IP était toujours mon IP ISP et non VPN IP, même s'il a été lancé avec le paramètre OpenVPN up. C'est peut-être pourquoi cela ne fonctionnait pas en premier lieu.
J'ai donc simplement dit au script d'attendre 60 secondes avant de se lancer. Maintenant, mon IP est définie sur l'IP VPN lorsque je redémarre le serveur.