Hur kan jag uppdatera min IP adress genom min router?

Många routrar har en funktion som automatiskt uppdaterar ens dynamisk IP adress hos något DNS system. Tyvärr är det få routrar som stödjer det system som vi använder, nämligen enom. Skulle alternativet enom finnas, då använder ni det. Om det inte finns, men det därimot finns ett Custom alternativ, då går det i regel att lösa.

Att sätta den dynamiska IP adressen i vårt system är enkelt. Allt som behövs är ett http anrop:

http://dynamic.name-services.com/interface.asp?command=SetDNSHost&zone=domän&DomainPassword=lösenord

zone: Det namn ni vill ändra IP adress på. Låt säga att ert domännamn är foo.com, då kan ni ange t.ex. hemma.foo.com så sätts den.

DomainPassword: Lösenordet ni har satt för Dynamisk DNS i vår kontrollpanel.

Med hjälp av denna information kan ni prova er fram hur ni kan konfigurera er router så att det fungerar.

Kommandot SetDNSHost har också argumentet Address. Med denna kan man sätta en explicit adress, t.ex. Address=192.168.32.11, och då sätts den. Det finurliga med SetDNSHost är att man inte behöver ange Adress om man inte vill. SetDNSHost listar då ut från vilken IP adress anropet kommer och sätter då den adressen.

Manual SetDNSHOST

Exempel i php

Enkelt exempel ni kan utgå från. Scriptet är basalt med i princip inga felkontroller. Scriptet är också skrivet för Linux/Unix, men kan enkelt ändras till att fungera på Windows. Det enda som behöver ändras är vägarna till filerna. Detta skript kan inte användas för sin egen router, detta skall användas om man vill mappa namn mot redan befintliga domännamn.

<?php

# domain:ip
$datafile = "/etc/dyndns-info";
$logfile = "/var/log/dyndns.log";
$newdata = array();

$tarr = file($datafile);

foreach ($tarr as $line) {
list($name,$ip) = split(":",trim($line));
$olddata[$name] = $ip;
$newdata[$name] = $ip;
}

$data = array(
'hkse1.domain.com' => 'hk1.extnet.net',
'hkse3.domain.com' => 'hk1.extnet.net',
'hkse2.domain.com' => 'hk1.extnet.net',
'hknl1.domain.com' => 'hk1.extnet.net',
'hkg1nl2.domain.com' => 'g1.extnet.net',
'hk1.domain2.com' => 'hk1.extnet.net',
'hk1se1.domain2.com' => 'hk1.extnet.net',
'hk1se2.domain2.com' => 'hk1.extnet.net',
'hk1nl1.domain2.com' => 'hk1.extnet.net'
);

$doupdate = false;
foreach ($data as $zone => $name) {
if (checkip($name,$zone)) {
$doupdate = true;
echo "Update zone $zone\n";
}
}

if ($doupdate) {
$fp = fopen($datafile, 'w') or die();
foreach ($newdata as $name => $ip) {
fwrite($fp,"$name:$ip\n");
}
}

function updatezone($zone,$ip) {
global $logfile;
file_put_contents($logfile,
date("c") . "\n" . "Update zone: $zone => $ip\n"
,FILE_APPEND);

$result = file_get_contents("http://dynamic.name-services.com/interface.asp?command=SetDNSHost&zone=$zone&DomainPassword=XXXXXXXXX&Address=$ip");

file_put_contents($logfile,
$result . "\n" .
"===========================================================================\n"
,FILE_APPEND);

}

function checkip ($name,$zone) {
global $olddata;
global $newdata;

$newip = trim(gethostbyname($name));


if (!preg_match("/^[1-9]+/",$newip)) {return false;}

if ($newip != $olddata[$name]) {
$newdata[$name] = $newip;
updatezone($zone,$newip);
return true;
}

return false;

}

?>










Artikel Detaljer

Senast Uppdaterad
24th of May, 2009

Skulle ni vilja att...

Skriv ut Skriv ut

Skicka per e-post Skicka per e-post

Skriv en kommenter Skriv en kommenter

Prenumerera

Lägg till favoriter Lägg till favoriter

Tag bort Highlighting Tag bort Highlighting

Editera denna Artikel

Snabb Editering

Exportera till PDF

Betygsättning (0 röster)

Ingen har betygsatt.

Hur skulle ni betygsätta detta svar?



Tack för att ni har betygsatt denna svar.

Relaterade Artiklar

Finns inga relaterade artiklar.

Bilagor

Finns inga bilagor.

Kommentarer

Inga kommentarer. Skriv en kommenter

Skriv en kommenter

För att kommentera denna artikel, fyll i formuläret nedan. Fält med en asterix/stjärna måste fyllas i.
   Namn:
   E-Post:
* Kommentar:
* Ange koden nedan:
 

Fortsätt