Salut,
J’ai des applications web (https) et services sur le serveur la_bas dont je n’autorise l’accès au client (moi) uniquement.
postfixadmin-relay, roundcube, phpmyadmin et quelques vhosts spécifiques à la gestion/surveillance.
J’ai une ip local qui est dynamique et le serveur distant, une ip fixe.
La communication se fait uniquement au travers d’une connexion ssh par clé.
Sur le serveur distant, j’ai mis en place un fichier index.php qui me permet de récupérer mon ip dynamique.
<?PHP
echo $_SERVER["REMOTE_ADDR"];
?>
Depuis local, j’interroge le distant pour rapatrier¹ cette dernière.
#!/bin/bash
SRC_IP="https://mon_domaine.com/index.php"
MY_IP=$(wget -qO- ${SRC_IP})
echo " ${MY_IP:=127.0.0.1}" ;
Que j’enregistre dans un fichier .txt, j’y reviendrai² plus loin.
L’idée est de mettre à jour automatiquement (scripts en tâches cron) “mon ip dynamique tronquée” dans les divers fichiers de configurations ci-plus haut.
J’en suis à la phase de tests, j’ai copié (pour exemple) une section du fichier apache2.conf en local.
[code][10:29:45]:~/essai_bash$ cat /home/user/essai_bash/apache2.conf
Test mise à jour ip dynamique
2.6.000.111
2.6.000.111
2.6.000.111
1.5.000.111
2.6.2.5
2.5.2.5
DOSWhiteList 127.0.0.1
DOSWhitelist 2.5.000.111 ## mon ip dynamique tronquée
Ajoutons ici:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 2.5.000.111 ## mon ip dynamique tronquée
Ajoutons ici:
Je lui applique ce script pour la (substitution) mise à jour de mon ip local la_bas, via sed.
ps : soyez indulgent, je débute dans le domaine.
Note : l’ip dynamique (FAI Orange) qui commence toujours (depuis mon abonnement de mémoire) par 2.5.xxx.xxx d’où les commandes d’éditions passées en sed.
D’ailleurs, si quelqu’un avait un début d’explication sur cette invariabilité (2.5) …
[code][10:30:33]:~/essai_bash$ cat change_ip_labas
#!/bin/sh
changeip=/home/USER/essai_bash/apache2.conf
[ -r “$changeip” ] || { echo “Je ne peux pas lire $changeip” ; exit 1; }
echo "$changeip changement ip:"
sed -i ‘s/[2]{1,3}.[5]{1,3}.[0-9]{1,3}.[0-9]{1,3}/2.5.222.333/g’ $changeip
cat $changeip
exit 0
[10:30:38]:~/essai_bash$ [/code]
Dans la pratique le script me retourne :
[10:34:25]:~/essai_bash$ ./change_ip_labas
/home/user/essai_bash/apache2.conf changement ip:
### Test mise à jour ip dynamique ###
#
# 2.6.000.111
2.6.000.111
2.6.000.111
#
1.5.000.111
#
2.6.2.5
#
2.5.222.333
#
#
DOSWhiteList 127.0.0.1
DOSWhitelist 2.5.222.333 ## mon ip dynamique tronquée
</IfModule>
#### Ajoutons ici: ############
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 2.5.222.333 ## mon ip dynamique tronquée
</Location>
#### Ajoutons ici: ############
[10:34:29]:~/essai_bash$
Cela semble fonctionnel. (?)
M’y voici, je souhaiterai inclure la valeur/expression (2.5.xxx.xxx) du fichier maj_monip-sh.txt² dans la commande sed.
Ou encore (pour l’heure, je ne sais comment) reprendre/inclure la variable ${SRC_IP} dans le script change_ip_labas¹, enfin un amalgame des deux.
La mise à jour s’effectuerait automatiquement via ssh depuis local vers distant si et seulement si :
- l’ip local a changé et le pc local est en fonction, alors le script(s) (cron) est lancé.