Mainos / Advertisement:

DDNS päivitysohjelmat

Kohteesta Taisto
Versio hetkellä 25. joulukuuta 2014 kello 23.54 – tehnyt Minh (keskustelu | muokkaukset) (→‎Päivitys scripti RouterOS)
Siirry navigaatioon Siirry hakuun

Dynaaminen DNS on kätevä tapa mahdollistaa dns nimen (esim. helenius.dy.fi / datatekniikka.fi) dynaamisissa IP-osoitteissa. Kun IP-osoite muuttuu niin voit automaattisoida IP-osoitteiden muutokset DNS palvelimiin. Normaalisti sinun tulisi tehdä tämä manuaalisesti. Dy.fi on suomalainen palvelu ja toimii dynaamisen dns palvelun ylläpitäjänä. Myös https://woima.fi/dyndns on alkanut tarjoamaan dynaamisia DNS osoitteita myös omille domaineilleen.

Muita palveluja on dydns.org ja no-ip.org.

Käyttöönotto

Päivitys UNIX järjestemissä wgetillä

1. Avaa crontab

 sudo nano /etc/crontab

Lisää seuraava rivi sivulle

   45 3 * * 1,5  wget --delete-after --no-check-certificate --no-proxy --user=käyttäjätunnus --password=salasana https://www.dy.fi/nic/update?hostname=omaosoite.dy.fi

Tallenna tiedosto ja nyt pitäisi toimia automaattinen DDNS päivitys. Esimerkissä päivitys tapahtuu varttia 3.45 joka maanantai ja perjantai.

Seuraavalla komennolla voit tarkistaa toimiiko varmasti. Aja komento suoraan terminaalissa.

 wget --delete-after --no-check-certificate --no-proxy --user=käyttäjätunnus --password=salasana https://www.dy.fi/nic/update?hostname=omaosoite.dy.fi

Päivitys UNIX järjestemissä curlilla

1. Asenna curl pakettihallinnasta

 apt-get install curl

2. Avaa crontab

 nano /etc/crontab

3. Lisää tämä rivi muokaten tietoja palveluntarjoajasi mukaan ennen # merkkiä lopusta. Korvaa useraccount ja password dyndns palvelusi käyttäjänimellä ja salasanalla. Muuta hostname.dy.fi vastaamaan isäntänimeäsi.

 45 3	* * 1,5    root     curl -D - --user useraccount:password http://www.dy.fi/nic/update?hostname=hostname.dy.fi

Esimerkissä päivitys tapahtuu varttia 3.45 joka maanantai ja perjantai.

Toisessa esimerkissä päivitettään 10 minuutin välein

 */10     * * * * root    curl -D --user useraccount:password  http://www.dy.fi/nic/update?hostname=hostname.dy.fi

Muuta seuraavat tiedot:

useraccount = käyttäjänimi

password = salasana

hostname.dy.fi = Omasi isäntänimesi, jonka olet varannut dy.fi palvelussa.


Ajaa tämä esimerkiksi testiksi, niin voin testata toimiiko DDNS päivitys. Korvaa useraccount ja password dynaamisen dns palvelun tunnuksella ja salasanalla.

 curl -D - --user useraccount:password http://www.dy.fi/nic/update?hostname=hostname.dy.fi

Tuloksena tulisi tulostua

 good [ip-osoitteesi]

Esimerkki tarkistetaan onko IP-osoite muuttunut ja tämän jälkeen päivitetään jos muutoksia. Kopioi ja tallenna dyndns.sh:

#!/bin/bash

USERNAME="dyndnsusername"
PASSWORD="dyndnspassword"
HOSTNAME="yourdomain"
IP=`curl -s http://checkip.dy.fi/ | grep -o '\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}'`

ABUSE_LOCK_FILE="/tmp/dyndns.abuse"
LAST_IP_FILE="/tmp/lastip"
LAST_IP=`cat $LAST_IP_FILE`

#lockfile check, lockfile is only used if a abuse result appears
if [ -e "$ABUSE_LOCK_FILE" ]; then
     echo "Dyndns abuse lockfile exisits: $ABUSE_LOCK_FILE"  
     exit 1
fi
#end of lockfile check

if [ "$IP" != "$LAST_IP" ]; then
   echo "Current IP: $IP"
   RESULT=`curl -D --user $USERNAME:$PASSWORD  "http://dy.fi/nic/update?hostname=$HOSTNAME&myip=$IP" | grep -o -E  "good|nochg|abuse|badauth|notfqdn|nohost|abuse|dnserr"`
   echo "Dyndns.org says: $RESULT!"
else
   echo "IP is still the same: $LAST_IP"
fi

Päivitysohjelma Windowssille

Lataa ja asenna päivitysohjelma http://www.randomnoun.com/wp/2013/08/19/a-dynamic-dns-client-for-windows/

Asennusohjelmassa kysytään dynaamisen palvelimen osoitteita ja käyttäjätunnuksista. Voit muokata myöhemmin konfigurointi tiedoston avulla.

Esimerkki konfigurointi tiedostosta (Konfigurointi tiedosto löytyy %SystemDrive%\Program Files (x86)\ddclient hakemistosta tai SystemDrive&\Program File\ddclient hakemistosta):

# ddclient.conf
#
daemon=5m
use=web
web=checkip.dy.fi
server=www.dy.fi
protocol=dyndns2  login=exampeuser, password=Qwerty1 dyn1.example.com
ssl=no

Päivitys scripti RouterOS

Seuraava scripti on testattu RouterOS versiolla 6.15. Muille versiolle: http://wiki.mikrotik.com/wiki/Dynamic_DNS_Update_Script_for_dynDNS

Muokkaa alla oleva scripti itsellesi sopivaksi. Avaa RouterOS valikosta System -> Scripts. Luo uusi skripti ja kopioi alla oleva siihen.

:global ddnsuser "theddnsusername"
:global ddnspass "theddnspassword"
:global theinterface "interfacename"
:global ddnshost blabla.dyndns.org
:global ipddns [:resolve $ddnshost];
:global ipfresh [ /ip address get [/ip address find interface=$theinterface ] address ]
:if ([ :typeof $ipfresh ] = nil ) do={
   :log info ("DynDNS: No ip address on $theinterface .")
} else={
   :for i from=( [:len $ipfresh] - 1) to=0 do={ 
     :if ( [:pick $ipfresh $i] = "/") do={ 
    :set ipfresh [:pick $ipfresh 0 $i];
      } 
}
 
:if ($ipddns != $ipfresh) do={
    :log info ("DynDNS: IP-DynDNS = $ipddns")
   :log info ("DynDNS: IP-Fresh = $ipfresh")
   :log info "DynDNS: Update IP needed, Sending UPDATE...!"
   :global str "/nic/update\?hostname=$ddnshost&myip=$ipfresh"
   /tool fetch address=dy.fi host=dy.fi src-path=$str mode=http user=$ddnsuser password=$ddnspass dst-path=/
   :delay 1
   :global str [/file find name="$ddnshost"];
   /file remove $str
   :global ipddns $ipfresh
   :log info "DynDNS: IP updated to $ipfresh!"
    } else={
     :log info "DynDNS: dont need changes";
    }
}


ddnsuser = dynaamisen DNS palvelun käyttäjätili, esim. dy.fi palvelussa sähköposti-osoitteesi

ddnspass = käyttäjätilisi salasana

theinterface = Liitäntä joka on yhteydessä ulkoverkkoon ja josta otetaan IP-osoite joka lähetetään dynaamisen dns palvelulle.

ddnshost = Dynaamisen dns palvelun verkko-osoite, joka päivitetään, esim. domain.dy.fi.

Päivitys RouterOS yli NAT

# Set needed variables
:local username "theddnsusername"
:local password "theddnspassword"
:local hostname "blabla.dyndns.org"

:global dyndnsForce
:global previousIP

# print some debug info 
:log info ("UpdateDynDNS: username = $username")
:log info ("UpdateDynDNS: hostname = $hostname")
:log info ("UpdateDynDNS: previousIP = $previousIP")

# get the current IP address from the internet (in case of double-nat)
/tool fetch mode=http address="checkip.dyndns.org" src-path="/" dst-path="/dyndns.checkip.html"
:local result [/file get dyndns.checkip.html contents]

# parse the current IP result
:local resultLen [:len $result]
:local startLoc [:find $result ": " -1]
:set startLoc ($startLoc + 2)
:local endLoc [:find $result "</body>" -1]
:local currentIP [:pick $result $startLoc $endLoc]
:log info "UpdateDynDNS: currentIP = $currentIP"

# Remove the # on next line to force an update every single time - useful for debugging, but you could end up getting blacklisted by DynDNS!
#:set dyndnsForce true

# Determine if dyndns update is needed
# more dyndns updater request details available at http://www.dyndns.com/developers/specs/syntax.html
:if (($currentIP != $previousIP) || ($dyndnsForce = true)) do={
   :set dyndnsForce false
   :set previousIP $currentIP
   /tool fetch user=$username password=$password mode=http address="dyn.fi"  host="dy.fi" src-path="/nic/update\?hostname=$hostname&myip=$currentIP" dst-path="/dyndns.txt"
   :local result [/file get dyndns.txt contents]
   :log info ("UpdateDynDNS: Dyndns update needed")
   :log info ("UpdateDynDNS: Dyndns Update Result: ".$result)
   :put ("Dyndns Update Result: ".$result)
} else={
   :log info ("UpdateDynDNS: No dyndns update needed")
}

Woimalle asetukset

Woimalle perusasetukset ovat melkein samanlaiset kuin dy.fi palvelulla. Muuta vain username ja password vastaamaan dynaamisen dns palvelun käyttäjänimeä ja salasanaa. Muuta domain.com vastaamaan isäntänimeä.

 curl -D --user username:password http:/dyn.woima.fi/update?domain.com

Aiheeseen liittyvää

Crontab

Lähteet

http://wiki.ubuntu-fi.org/Dynaaminen_DNS

http://wiki.mikrotik.com/wiki/Dynamic_DNS_Update_Script_for_dynDNS

Mainos / Advertisement: