Dinamikus DNS

 ( Berty | 2006. augusztus 31., csütörtök - 8:51 )

Sziasztok!

Kezdő linuxosként igen sok kérdésemre sikerült a HUP-ot böngészve választ találnom, most viszont nem boldogulok.

A routerem dinamikus IP címet kap a szolgáltatótól, a router mögötti LAN-on statikus IP címeket állítottam be. A router NAT | Virtual Server menüpontjában beállítottam ezt-azt, működik is rendben, amíg tudom a router (külső) IP címét.

Szükségem lenne tehátegy dinamikus DNS-re

A router DDNS szolgáltatóként alapértelmezésként a DynDNS-t ajálja. Regisztráltam a DynDNS.org-on, a router DDNS menüjében beállítottam érteleszerűen, amit lehetett. A DynDNS szerverén mégsem frissült az IP-címem.

Installáltam kliensprogramot (ez-ipupdate), ami viszont a router internet IP címe helyett - logikusan - a gépem LAN IP címét küldte a DynDNS-nek. (Mi mást is küldene...) Úgy vélem, router mögött nem is a kliensprograot, hanem a routert kellene rávenni, hogy ossza meg az IP címét a DDNS szolgáltatóval. De hogyan?

A router Planet XRT401D, a számítógépen Debian 3.1 fut. A router DDNS menüje a következőképp néz ki:

Dynamic DNS : * Enable Disable
Provider : DynDNS
Domain Name :
Account / E-Mail :
Password / Key :

Többször ellenőriztem, nem írtam-e el valait. Merre érdemes továbblépni?
ELőre is köszönöm,

Márton

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Dynamic DNS : * Enable
Provider : DynDNS
Domain Name :amit csináltál magadnak, nekem pl. valami.homelinux.com
Account / E-Mail :logineved
Password / Key :jelszavad

Ezt mind így csináltam. Még a valami.homelinux.com-ot is. ;)

Üdv!

Nekem is volt egy ugyanilyen routerem, és ugyanúgy elfelejtette megcsinálni a frissitést, mint a tiéd. szerintem ez a tipus ezen a téren egyszerűen szar. rátöltöttem a legfrissebb firmware-t is, de a helyzet azzal sem változott. lecseréltem egy LinkSysre és a hiba azonnal megoldódott.
már két hónapja megy a szerver otthon a garázsban, dinamikus IP cimet kap a router az ADSL szolgáltatótól és 100%-osan működik a dyndns-en regisztrált hostnév.

bogumil

Hát ez nem a legvidámabb megoldás, de legalább logikus. Köszönöm.

Valainek esetleg működik normálisan a 'Planet Internet Broadband Router XRT-401D' DDNS szolgáltatása?

Márton

Nálam is router mögött van az ubuntu server, rajta no-ip daemon fut.
A server természetesen lokális statikus ip címen van. Ennek ellenére a no-ip
progi a router ip címét küldi vissza. /Futhat winen is. Van hozzá kis grafikus progi.
ott is kiirja mi a router ip címe/
Elég jó leírás van hozzá debianos beüzemeléshez.
Egyébként a routeren az ssh, web, ftp szolgáltatások port forward-olva vannak az ubuntura.

Na, az érdekes.

Ezek szerint a kliensporgramok különbözően viselkednek.

Ha viszont a kliensprogram frissíti a router IP címet, akkor kell-e a egyáltalán a router DDNS szolgáltatása? Azt nem értem, hogy a router - működőképes esetben - eljátsza-e a kliensprogra szerepét, vagy a kettő együtt oldja meg a feladatot. Nálad mi van a router DDNS menüjében?

Mint azt feljebb is megírták szerintem is felejtsd el a router belső DDns kliensét, ha ilyen megbízhatatlanul működik. Helyette inkább a szerveren állíts be egy dyndns klienst, ami lekérdezi a külsős címet és teljesen korrektül frissíti azt a dyndns-nél. Ha szerverről van szó, akkor úgyis folyamatosan megy, tehát teljesen mindegy, hogy a szerver vagy a router frissítgeti neked a címeket.

Na, ez teljesen jó lesz, remélem. Már csak azt kell eldönteni, mi legyen az az "egy dyndns kliens". Az ez-ipupdate-t azért választottam, mert a DynDNS első kettő között ajánlotta, és a Debian csomagban is megtaláltam. Ezt rá lehet venni, hogy lekérdezze a router IP címét vagy keressek másik klienst?

Az ipcheck látszik megoldásnak. Megvan a debian csomagban, és jóban van a DynDNS -el. A leírás szerint lekérdezi a router IP címét.

Persze, megoldás lehet az lmisi által javasolt no-ip daemon is, de egy kicsit tartok attól, hogy ezek a programok más szolgáltatónál másként működnek.

Köszönöm a segítséget.

Márton

Részlet a fresh_ip szkriptemből (cron-ból fut 5 percenként):


#!/bin/sh

DIR=/var/cache/fresh_ip
if [ -a "${DIR}/wget.log" ]; then
  if [ -w "${DIR}/wget.log" ]; then
    rm -f ${DIR}/wget.log >/dev/null 2>&1
  else
    echo "Nincs írás jog a wget.log-ra!"
    exit 1
  fi
else
  touch "${DIR}/wget.log"
fi

LOCKFN=${DIR}/lock
if [ -a "${LOCKFN}" ] ; then
  exit 0
else
  touch ${LOCKFN}
fi

WGET="/usr/bin/wget --http-user=admin-login --http-passwd=admin-jelszo \
                    -O - -q -a $DIR/wget.log"

LOG=$DIR/log
DT_FMT='+%Y.%m.%d. %H:%M:%S'

CIM_VIG=http://192.168.1.1:8080/cgi-bin/v2x00.cgi?fid=168
CIM_MIC=http://192.168.1.1/status.htm

SED_VIG='249 {s/ *//g; s/[^0-9.]//g;q}; /./d'
SED_MIC='225 {s/ *//g; s/[^0-9.]//g;q}; /./d'

function get_ip () {
  UJ=`${WGET} ${CIM} | sed -e "${SED}"`
  if [ -z "$UJ" ]; then
    echo `date "$DT_FMT"`": Nem sikerult lekernem az ip cimet!" \
      | /usr/bin/tee -a $LOG
    /bin/cat $DIR/wget.log >> $LOG
    exit 9
  fi
  echo ${UJ}
}


Volt egy Vigor 2200-as, ahhoz megy a SED_VIG, most egy X-Micro van, ahhoz a SED_MIC
(SED=${SED_MIC}).

Gyakorlatilag ugyanazt a beállító képernyőt (státusz) használja, amit a böngésződben is látsz a router konfig oldalán - a wget megfelelően paraméterezve leszedi, a sed-el pedig kiszedem belőle az akt. ip címemet.

Köszönöm, ez a megoldás minden bizonnyal jobb, mint amit én találtam. Az ipcheck ugyanis az én routeremmel csak úgy működik, hogy a checkip.dyndns.org-től tudja meg az IP címet, Azt pedig nem szeretik, ha ezt gyakran (gyakrabban mint 15 percenként...!?) csinálom.

A Te megoldásoddal csak egyetlen gond van. Annyira új nekem a linuxos világ, hogy egy szót sem értek belőle. Azt is csak most keresem, hogy ezt a cront egyáltalán hol kell megfogni. (Parancssorból megy már a frissítés)

Na, de mégegyszer, hasznomra lesz, amit írtál, jobb mint a jelenlegi megoldásom, aztán egyszer csak felnövök hozzá!

Márton

Ha parancssorból megy már a frissítés, akkor
man cron
crontab -e

*/5 * * * * /path/to/prg args
# az utolsó sort nem olvassa, így mindig legyen utolsó sor!

GT

Kb idáig jutottam én is, miután megtaláltam a crontab(5)-t.
Most már csak az a gondom, hogy nem mindegy, honnan indul az ipcheck. Parancssorból elindul, de parancsssorból máshonnan már nem.

Csináltam egy ipchk.sh fájlt(sőt, futtathatóvá is tettem):
---
cd /usr/sbin
python ipcheck.py -l -r checkip.dyndns.org:8245 xxxxxx xxxxxx xxxxx.homelinux.com
---
Gondoltam, ezt meglököm máshonnan, könyvtárt vált és futtat, de nem.

Szóval: mit írjak a crontab - ba, hogy az ipcheck úgy vegye, mintha a /usr/sbin-ből indítottam volna?
Vagy hogyan tudok olyan parancsfájlt csinálni, ami előbb könyvtárt vált, és utána futtat?

Bocs, hogy ilyen banális részleteket kérdezek...

Márton

Próbáld meg valahogy így:

#!/usr/bin/bash
cd /usr/sbin
./python ipcheck.py -l -r checkip.dyndns.org:8245 xxxxxx xxxxxx xxxxx.homelinux.com

Nálam a router frissít a DynDNS felé, bár a DynDNS ezt valamiért nem javasolja. Állítólag voltak hibás firmware-ek, amelyek másodpercenként frissítettek... Nincs kliens a gépemen, és eddig tökéletesen működött.

Valóban az volt a baj - ahogy lcsaszar is írta - a
#!/... sor hiányzott a parancsfájl elejéről.

A mikor a gépemen lévő parancsfájlokból próbáltam tanulni, a
#!/bin/sh
sorokat megjegyzésnek néztem. Ha nincs héjprogramozás könyvem, lehet, hogy megőszülök...
Szóval ez a Debian tetszik nekem, de azért olykor megtréfál.

Mégegyszer, köszönöm mindenkinek a segítséget.

Márton