Ero sivun ”DDNS päivitysohjelmat” versioiden välillä
(16 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
Rivi 2: | Rivi 2: | ||
<translate> | <translate> | ||
<!--T:1--> | <!--T:1--> | ||
− | Dynaaminen DNS on kätevä tapa mahdollistaa dns nimen (esim. | + | Dynaaminen DNS on kätevä tapa mahdollistaa dns nimen (esim. taisto.org) dynaamisissa IP-osoitteissa. Kun IP-osoite muuttuu niin voit automaattisoida IP-osoitteiden muutokset DNS palvelimiin. Normaalisti sinun tulisi tehdä tämä manuaalisesti. [http://www.dy.fi/ 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. |
<!--T:2--> | <!--T:2--> | ||
Rivi 91: | Rivi 91: | ||
<!--T:31--> | <!--T:31--> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | |||
#!/bin/bash | #!/bin/bash | ||
Rivi 113: | Rivi 115: | ||
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"` | 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!" | echo "Dyndns.org says: $RESULT!" | ||
+ | echo $IP > "/tmp/lastip" | ||
else | else | ||
echo "IP is still the same: $LAST_IP" | echo "IP is still the same: $LAST_IP" | ||
fi | fi | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | [[Luokka:Linux|DDNS päivitysohjelmat]] | ||
+ | [[Luokka:RouterOS|DDNS päivitysohjelmat]] | ||
+ | [[Luokka:Windows|DDNS päivitysohjelmat]] | ||
=== Päivitysohjelma Windowssille === <!--T:32--> | === Päivitysohjelma Windowssille === <!--T:32--> | ||
<!--T:33--> | <!--T:33--> | ||
− | Lataa ja asenna päivitysohjelma | + | Lataa ja asenna päivitysohjelma https://sourceforge.net/p/ddclient/wiki/Home/ |
− | |||
Asennusohjelmassa kysytään dynaamisen palvelimen osoitteita ja käyttäjätunnuksista. Voit muokata myöhemmin konfigurointi tiedoston avulla. | Asennusohjelmassa kysytään dynaamisen palvelimen osoitteita ja käyttäjätunnuksista. Voit muokata myöhemmin konfigurointi tiedoston avulla. | ||
Rivi 128: | Rivi 136: | ||
Esimerkki konfigurointi tiedostosta (Konfigurointi tiedosto löytyy %SystemDrive%\Program Files (x86)\ddclient hakemistosta tai SystemDrive&\Program File\ddclient hakemistosta): | Esimerkki konfigurointi tiedostosta (Konfigurointi tiedosto löytyy %SystemDrive%\Program Files (x86)\ddclient hakemistosta tai SystemDrive&\Program File\ddclient hakemistosta): | ||
− | + | <!--T:36--> | |
# ddclient.conf | # ddclient.conf | ||
# | # | ||
Rivi 137: | Rivi 145: | ||
protocol=dyndns2 login=exampeuser, password=Qwerty1 dyn1.example.com | protocol=dyndns2 login=exampeuser, password=Qwerty1 dyn1.example.com | ||
ssl=no | ssl=no | ||
+ | |||
+ | |||
+ | <!--T:37--> | ||
+ | Woimalle: | ||
+ | |||
+ | <pre> | ||
+ | daemon=5m | ||
+ | use=web | ||
+ | web=dyn.woima.fi/nic/checkip.html | ||
+ | server=dyn.woima.fi | ||
+ | protocol=dyndns2 login=tunnus, password=Qwerty1dyn.example.org | ||
+ | ssl=yes | ||
+ | </pre> | ||
+ | |||
+ | ==== PowerShell ==== | ||
+ | |||
+ | Vaihda osoite palveluntarjoajaan sopivaksi. Testattu Woiman ilmaisen DynDNS palvelun kanssa. | ||
+ | |||
+ | <pre> | ||
+ | #Your info goes here | ||
+ | $hostname = "yourhostname.com" | ||
+ | $user = "your_generated_dns_username" | ||
+ | $pwd = "your_generated_dns_password" | ||
+ | $pair = "$($user):$($pwd)" | ||
+ | |||
+ | |||
+ | #Get a page with your current IP | ||
+ | $MyIpPage = Invoke-WebRequest "https://dyn.woima.fi/checkip.php" | ||
+ | |||
+ | #Make sure we got a IP back in the response | ||
+ | If ($MyIpPage.RawContent -match "(?:[0-9]{1,3}.){3}[0-9]{1,3}") | ||
+ | { | ||
+ | #encode the username and password for the header | ||
+ | $bytes = [System.Text.Encoding]::ASCII.GetBytes($pair) | ||
+ | $base64 = [System.Convert]::ToBase64String($bytes) | ||
+ | |||
+ | $basicAuthValue = "Basic $base64" | ||
+ | |||
+ | $headers = @{ Authorization = $basicAuthValue } | ||
+ | |||
+ | #Build up the URL | ||
+ | $url = "https://dyn.woima.fi/nic/update?hostname={0}&myip={1}" -f $hostname, $MyIpPage | ||
+ | |||
+ | #Invoke the URL | ||
+ | $resp = Invoke-WebRequest -Uri $url -Headers $headers | ||
+ | $resp.Content #Expected answers that I found "good","nochg","nohost","badauth","notfqdn" | ||
+ | } | ||
+ | Else | ||
+ | { | ||
+ | #fake response if we didn't get any IP | ||
+ | "No IP" | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | === DynDNS PfSenselle === | ||
+ | |||
+ | * Avaa Services -> Dynamic DNS -> Dynamic DNS Client | ||
+ | * Valitse Custom | ||
+ | * Valits sitten interfacet, oletuksena WAN | ||
+ | * Valitse Curl Options Force IPv4 resolving | ||
+ | * Syötä käyttäjätunnus ja salasanat (kirjautumistunnukset DynDNS palveluun) | ||
+ | * Syötä Update URL Tämä on sama osoite millä kirjautudut selaimella päivittääksesi. | ||
=== Päivitys scripti RouterOS === <!--T:37--> | === Päivitys scripti RouterOS === <!--T:37--> | ||
Rivi 144: | Rivi 214: | ||
<!--T:39--> | <!--T:39--> | ||
− | Muokkaa alla oleva scripti itsellesi sopivaksi. Avaa RouterOS valikosta System -> Scripts. Luo uusi skripti ja kopioi alla oleva siihen. | + | Muokkaa alla oleva scripti itsellesi sopivaksi. Tämä scripti hakee IP-osoitteesi Mikrotikin interfacestasta. Avaa RouterOS valikosta System -> Scripts. Luo uusi skripti ja kopioi alla oleva siihen. |
<!--T:40--> | <!--T:40--> | ||
+ | <syntaxhighlight lang="lua"> | ||
:global ddnsuser "theddnsusername" | :global ddnsuser "theddnsusername" | ||
:global ddnspass "theddnspassword" | :global ddnspass "theddnspassword" | ||
Rivi 177: | Rivi 248: | ||
} | } | ||
} | } | ||
− | + | </syntaxhighlight> | |
<!--T:41--> | <!--T:41--> | ||
Rivi 205: | Rivi 276: | ||
<!--T:46--> | <!--T:46--> | ||
''Testattu RouterOS 6.15 versiossa'' | ''Testattu RouterOS 6.15 versiossa'' | ||
+ | |||
+ | Tämä scipti tarkistaa IP-osoitteesi etäpalvelimelta, checkip.dyndns.org palvelimelta. | ||
<!--T:47--> | <!--T:47--> | ||
+ | <syntaxhighlight lang="lua"> | ||
# Set needed variables | # Set needed variables | ||
:local username "theddnsusername" | :local username "theddnsusername" | ||
Rivi 248: | Rivi 322: | ||
:log info ("UpdateDynDNS: No dyndns update needed") | :log info ("UpdateDynDNS: No dyndns update needed") | ||
} | } | ||
+ | </syntaxhighlight> | ||
Scriptin voit ladata täältä: https://github.com/Taistowiki/RouterOS-Dynamic-DNS-update-script | Scriptin voit ladata täältä: https://github.com/Taistowiki/RouterOS-Dynamic-DNS-update-script | ||
Rivi 258: | Rivi 333: | ||
<!--T:49--> | <!--T:49--> | ||
− | 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ä. | + | Woimalle perusasetukset ovat melkein samanlaiset kuin dy.fi palvelulla. Woiman palvelu tukee IPv4 ja IPv6 osoitteita. Muuta vain username ja password vastaamaan dynaamisen dns palvelun käyttäjänimeä ja salasanaa. Muuta domain.com vastaamaan isäntänimeä. |
+ | |||
+ | IPv4:llä esimerkki: | ||
<!--T:50--> | <!--T:50--> | ||
− | curl -D -4 --user username:password | + | curl -D -4 --user username:password https://dyn.woima.fi/update?domain.com |
+ | |||
+ | IPv6 esimerkki: | ||
+ | |||
+ | curl -D -6 --user username:password https://dyn.woima.fi/update?domain.com | ||
+ | |||
+ | * Voit tarkistaa IPv4 / IPv6 osoitteesi tästä: https://dyn.woima.fi/checkip.php | ||
+ | |||
+ | == Response koodit== | ||
+ | |||
+ | * badauth - Käyttäjätunnus ja/tai salasana ovat virheellisiä | ||
+ | * good - Päivitys onnistui | ||
+ | * nochg - Ei muutoksia | ||
+ | * nohost - Isäntänimeä ei löytynyt käyttäjältä | ||
== Aiheeseen liittyvää == <!--T:51--> | == Aiheeseen liittyvää == <!--T:51--> |
Nykyinen versio 3. toukokuuta 2017 kello 11.10
Dynaaminen DNS on kätevä tapa mahdollistaa dns nimen (esim. taisto.org) 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.
Sisällysluettelo
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!"
echo $IP > "/tmp/lastip"
else
echo "IP is still the same: $LAST_IP"
fi
Päivitysohjelma Windowssille
Lataa ja asenna päivitysohjelma https://sourceforge.net/p/ddclient/wiki/Home/
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
Woimalle:
daemon=5m use=web web=dyn.woima.fi/nic/checkip.html server=dyn.woima.fi protocol=dyndns2 login=tunnus, password=Qwerty1dyn.example.org ssl=yes
PowerShell
Vaihda osoite palveluntarjoajaan sopivaksi. Testattu Woiman ilmaisen DynDNS palvelun kanssa.
#Your info goes here $hostname = "yourhostname.com" $user = "your_generated_dns_username" $pwd = "your_generated_dns_password" $pair = "$($user):$($pwd)" #Get a page with your current IP $MyIpPage = Invoke-WebRequest "https://dyn.woima.fi/checkip.php" #Make sure we got a IP back in the response If ($MyIpPage.RawContent -match "(?:[0-9]{1,3}.){3}[0-9]{1,3}") { #encode the username and password for the header $bytes = [System.Text.Encoding]::ASCII.GetBytes($pair) $base64 = [System.Convert]::ToBase64String($bytes) $basicAuthValue = "Basic $base64" $headers = @{ Authorization = $basicAuthValue } #Build up the URL $url = "https://dyn.woima.fi/nic/update?hostname={0}&myip={1}" -f $hostname, $MyIpPage #Invoke the URL $resp = Invoke-WebRequest -Uri $url -Headers $headers $resp.Content #Expected answers that I found "good","nochg","nohost","badauth","notfqdn" } Else { #fake response if we didn't get any IP "No IP" }
DynDNS PfSenselle
- Avaa Services -> Dynamic DNS -> Dynamic DNS Client
- Valitse Custom
- Valits sitten interfacet, oletuksena WAN
- Valitse Curl Options Force IPv4 resolving
- Syötä käyttäjätunnus ja salasanat (kirjautumistunnukset DynDNS palveluun)
- Syötä Update URL Tämä on sama osoite millä kirjautudut selaimella päivittääksesi.
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. Tämä scripti hakee IP-osoitteesi Mikrotikin interfacestasta. 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.dy.fi
: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.
Avaa System -> Scripts ja luo uusi scripti. Kopioi scripti ja tallenna. Ajaa scripti sitten testiksi. Lokista näet miten päivittyminen onnistui.
Ajastaminen
Avaa System -> Scheduler ja luo uusi. Kopioi scripti ja määritä kuinka usein ajetaan scripti (Interval). Kuvassa ajetaan joka minuutti.
Päivitys RouterOS yli NAT
Testattu RouterOS 6.15 versiossa
Tämä scipti tarkistaa IP-osoitteesi etäpalvelimelta, checkip.dyndns.org palvelimelta.
# Set needed variables
:local username "theddnsusername"
:local password "theddnspassword"
:local hostname "blabla.dy.fi"
: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")
}
Scriptin voit ladata täältä: https://github.com/Taistowiki/RouterOS-Dynamic-DNS-update-script
Avaa RouterOS winboxilla ja mene System -> Script. Lisää uusi scripti ja kopioi muokkaamasi scripti.
Woimalle asetukset
Woimalle perusasetukset ovat melkein samanlaiset kuin dy.fi palvelulla. Woiman palvelu tukee IPv4 ja IPv6 osoitteita. Muuta vain username ja password vastaamaan dynaamisen dns palvelun käyttäjänimeä ja salasanaa. Muuta domain.com vastaamaan isäntänimeä.
IPv4:llä esimerkki:
curl -D -4 --user username:password https://dyn.woima.fi/update?domain.com
IPv6 esimerkki:
curl -D -6 --user username:password https://dyn.woima.fi/update?domain.com
- Voit tarkistaa IPv4 / IPv6 osoitteesi tästä: https://dyn.woima.fi/checkip.php
Response koodit
- badauth - Käyttäjätunnus ja/tai salasana ovat virheellisiä
- good - Päivitys onnistui
- nochg - Ei muutoksia
- nohost - Isäntänimeä ei löytynyt käyttäjältä
Aiheeseen liittyvää
Lähteet
http://wiki.ubuntu-fi.org/Dynaaminen_DNS
http://wiki.mikrotik.com/wiki/Dynamic_DNS_Update_Script_for_dynDNS