Aller au contenu

Une Astuce Pour Parer Les Dns Dynamiques D


zaporogues

Messages recommandés

Bonjour,

je vois parfois dans les forums des questions du genre "le dydns n'a pas fonctionné" ou autre. Et le problème lorsqu'on est en adresse IP dynamique, Orange par exemple, est que seul Orange connait la nouvelle adresse IP de chez vous, et bing vous ne savez plus comment accéder à votre NAS...

La solution que je propose (je l'ai postée sur le forum orange également), nécessite un serveur externe, genre ovh ou online.net :

- mettre sur le syno un bout de code php qui accède régulièrement au serveur externe

- mettre un bout de code sur le serveur externe qui récupère l'adresse IP de l'endroit où est le syno, et le stocke dans une base de données, consultable depuis partout.

Voici les codes php.

1) sur le syno


<?php

// ipsynoint.php

/*

ce code est à mettre dans la crontab du synology

avec la fréquence souhaitée

moi, j'ai fait tous les quart d'heure


2-59/15	*	*	*	*	root	/usr/bin/php /volume1/divscript/ipsynoint.php

*/


/* On met une clé pour éviter qu'un malin appelle le code php et du coup change l'IP

ou bien qu'on appelle soi-même le code php par inadvertance depuis ailleurs que chez soi

*/


$cle = "laclekonaenviedemettre"; // peut-être changé mais identique dans les deux fichiers

$cle .= date("dMY"); // on y adjoint un élément qui change

$cle = md5($cle);


$hurl = "http://LURLDUSERVEUREXTERNE/ipsynoext.php?k=" . $cle ;


$ipsyno = file_get_contents($hurl);

echo '<br>' . $ipsyno; // pas forcé mais pour débuguer


?>

2) sur le serveur externe


<?php

// ipsynoext.php

// Ce code sert à connaître l'IP d'un particulier lorsque dyndns ne fonctionne pas

// Ceci est le bout de code à mettre sur un serveur externe,

// qui remplit une base de données qu'on pourra consulter depuis n'importe où


//---------------------------------	L'acces a la base ---------

define ('NOMBASE','root');

define ('PASSBASE','xxxxxxx');

define ('SERVEUR','localhost');

define ('BASE','ipsyn');

//--------------------------------------------------------------


/*

la base ipsyn doit avoir les colonnes suivantes

CREATE TABLE IF NOT EXISTS `ipsyn` (

  `nuchg` bigint(20) NOT NULL AUTO_INCREMENT,

  `datechg` datetime NOT NULL,

  `zeip` varchar(15) NOT NULL,

  `datechk` datetime NOT NULL,

  `commentaires` varchar(256) NOT NULL,

  PRIMARY KEY (`nuchg`)

);

*/


$cle = "laclekonaenviedemettre";

$cle .= date("dMY");

$cle = md5($cle);


$kle = $_GET['k'];


if ($kle <> $cle) exit; // protection contre un appel non voulu


$ipsyno = $_SERVER['REMOTE_ADDR']; // l'adresse IP du synology


$connexion = mysql_connect(SERVEUR,NOMBASE,PASSBASE);

mysql_select_db(BASE, $connexion);


$query = "SELECT * FROM ipsyn ORDER BY nuchg DESC"; // on va chercher la dernière valeur

$rez = mysql_query($query);

$z = mysql_fetch_array($rez, MYSQL_BOTH);

$zip = $z['zeip'];

$idx = $z['nuchg'];


	echo "IP in " . $zip . " IP out " . $ipsyno; // Si on souhaite débuguer


$dform = "Y-m-d H-i-s";

$zedate = date($dform);


// si l'IP est différente, on crée une nouvelle entrée, avec la date où le changement a été détecté

if ($ipsyno <> $zip) {

	$query = "INSERT INTO ipsyn (datechg, zeip, datechk) VALUES ('$zedate' , '$ipsyno' , '$zedate') ";	

	$rez = mysql_query($query);

	}


// sinon, on met juste à jour le champs de la date de dernière vérification

else {

	$query = "UPDATE ipsyn SET datechk = '$zedate' WHERE nuchg = $idx";	

	$rez = mysql_query($query);

	}



?>

voilà, si ça peut servir...

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.