- Modifié
Hello les copains
Bon je suis loin dâĂȘtre douĂ© pour le codage, le script-age et autre alors je me tourne vers vos idĂ©es voir si mon truc tiens la route et s'il peut ĂȘtre amĂ©liorĂ©...
Je pose la base : il m'arrive d'avoir des machines qui ne peuvent avoir d'ip fixe soit parce que personne n'a idée de qui contacter pour la fixer chez le FAI, la flemme, etc mais bon faut que je fasse avec...
Donc actuellement j'ai une petite infra posĂ© chez un client et son ip change toute les 24h ( un jour la fibre ils auront un jour ) mais il me faut pouvoir y accĂ©der depuis lâextĂ©rieur sans forcĂ©ment les appeler :
"Hello ! vous avez 5 mn pour taper sur google : monip et me la communiquer ?"
J'ai donc fouiné un peut partout et j'ai dégoté ça :
#!/bin/bash
emplacement="/home/mathieu/scripts/verif_ip"
date_act=`date`
echo "Execution le : $date_act" >> $emplacement/log
ip_old=`cat $emplacement/ip`
ip_act=`curl ipinfo.io/ip 2>/dev/null`
if [ "$ip_act" != "$ip_old" ]
then
/home/mathieu/scripts/dynip/dynip.sh >> $emplacement/dynup
echo "Changement IP : $ip_act" >> $emplacement/log
echo $ip_act > $emplacement/ip
echo "FROM:mathieu@nomdedomaine.com" > $emplacement/mail
echo "TO:bor@nomdedomaine.com" >> $emplacement/mail
echo "Subject: Changement IP" >>$emplacement/mail
date >> $emplacement/mail
echo "" >> $emplacement/mail
echo "ANCIENNE IP :" >> $emplacement/mail
echo $ip_old >> $emplacement/mail
echo "" >> $emplacement/mail
echo "NOUVELLE IP :" >> $emplacement/mail
echo $ip_act >> $emplacement/mail
echo "LOG DNS :" < $emplacement/dynup
/usr/sbin/sendmail -f "mathieu@nomdedomaine.com" -t "bor@nomdedomaine.com" < $emplacement/mail
else
echo "Pas de Changement IP" >> $emplacement/log
fi
Donc pour l'instant ça, ça fonctionne bien : toutes les heures le script tourne en cron pour vĂ©rifier lâĂ©tat de l'ip et si changement j'ai un mail qui arrive... DĂ©jĂ je peut me passer de les appeler ! Youpi !
Maintenant la plus compliqué ( bah voui faut bien se compliquer la vie des fois :p )
J'ai une belle ip qui arrive dans la mailbox mais si pour faire propre ca donnée : hostnamedynamic.nomdedomaine.com ??
J'ai un serveur dns pour mon domaine autant l'utiliser...
Donc un petit tour de GIYBF ( Google is you best friend... ou pas) je trouve un truc dans le genre...
générer une clé DNSSEC pour autoriser la machine dynamique à mettre à jour la zone qui lui correspond.
#!/bin/bash
# -----------------------------------------------------------
# update the dynamic dns for home system
#
# usage: do-nsupdate
# -----------------------------------------------------------
IP=$(wget -qO- http://ifconfig.me/ip)
ACTUALIP=$(/usr/bin/dig +short hostnamedynamic.nomdedomaine.com @ns.nomdedomaine.com | /usr/bin/tail -n1)
KEY="/home/mathieu/scripts/dynip/Kdyn.nomdedomaine.com.private"
if test "$ACTUALIP" = "$IP"
then exit 0
else
cat > /home/mathieu/scripts/dynip/majdnsclient.txt << EOF
server ns.nomdedomaine.com
zone nomdedomaine.com
update delete hostnamedynamic.nomdedomaine.com. A
update add hostnamedynamic.nomdedomaine.com. 180 A $IP
show
send
EOF
nsupdate -k "$KEY" -v /home/mathieu/scripts/dynip/majdnsclient.txt
fi
Voila du coup avec un cron toutes les 2 heures si ça change ça met à jour... ça marche c'est presque beau : je peut accéder à coup de hostname.ndd.com
Et si on intégrer le tout dans un seul appel cron ? Si le script qui détecte le changement ip fait appel au script dynip si changement il y a ?
J'ai donc placé dans le script de l'ip :
if [ "$ip_act" != "$ip_old" ]
then
/home/mathieu/scripts/dynip/dynip.sh >> $emplacement/dynup
echo "Changement IP : $ip_act" >> $emplacement/log
Pour moi ca me parait cohérent mais peut etre que je me trompe ?
J'attend de voir a la prochaine MaJ de l'ip si tout se déroule correctement
Et lĂ oĂč je sĂšche : je veut pouvoir rĂ©activer la signature DNSSEC sur le fichier de zone DNS pour ĂȘtre dans les clous mais je voit pas comment faire avec cette histoire de dynDNS homemade...
Alors les lumiÚres s'il vous plait ? un avis ? une idée ? une critique ? apprenez moi !!!
Merci de m'avoir lu jusqu'ici
Mathieu