[solved]External ip változásának monitorozása linux szerverről

 ( fefy | 2016. november 19., szombat - 10:26 )

Sziasztok!

Először is remélem, hogy jó témakört választottam. Másodszor pedig a problémám a következő:

Adott egy hálózat: dsl modem->router (ez kezeli a pppoe kapcsolatot)->ubuntu szerver (routeren dmz-ben)->belső hálózat. A hálózaton, hogy miért kell router, illetve miért nem a szerveren kezelem a pppoe kapcsolatot, az a probléma szempontjából lényegtelen, mert nem kiiktatható (a hálózat ráadásul év végén/jövő év elején változni fog egy kicsit, mivel dsl helyett optikai hálózat lesz a magentásoktól).

A kérdésem pedig az lenne, hogy milyen módszerrel lehet/érdemes monitorozni a szerverről a router pppoe kapcsolatát?

Első ötletként ugyanis felmerült bennem az, hogy valamilyen külső szolgáltató segítségével lekérem a külső ip-met (ez még nem bonyolult), ezt elkezdem pingelni adott TTL-el (kiküszöbölendő, hogy egy esetleges pppoe reconnect után téves adatot kapjak). Ha nincs válasz, akkor megszakadt a kapcsolat->külső ip lekérdezés ismét, ping... stb.
Elegánsnak biztosan nem elegáns megoldás, de hirtelen más értelmes opció nem ugrott be.

Ha valakinek esetleg van szebb/jobb megoldása, az remélem, hogy megdob vele.

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ő.

Hali!

Nem írtad mire kell, de egy tetszőleges a routered által is ismert vagy a szerveredre felrakott kliense bármelyik általad választott "dyndns" szolgáltatásnak bőven elég lehet.

A réz-optika váltásnak nem feltétlenül _kell_ együtt járnia a hálózatod módosulásával. Amennyiben van most egy jól beállított rendszered, csak annyit kell tenni, hogy amikor beüzemelik az ont-t, nem kell beállítani rajt a felhasználónevet/jelszót. A saját router ugyanúgy "ki tud tárcsázni" az ont-n keresztül és akkor gyakorlatilag egy bridge módba kapcsolt kábelmodemet kapsz optikán.

Üdv:
Feri

Alapvetően nem sok módosulás lesz. Gyakorlatilag a szerver előtti rész cserélődik csak (igazából kis kínaiak is pakolgathatják az ethernet csomagokat a szerver uplink kábelébe, ha ezt elég gyorsan tudják csinálni).

A távlati cél az, hogy egy pfsense is bekerüljön a képbe és ez vegye át a feladatok kb 99%-át, de ez majd talán csak jövő nyáron valósul meg.

A lényeg az, hogy jelenleg a szerver előtti lépésben épül fel a pppoe kapcsolat és erről a szerveren kell tudomást szerezni valahogyan, a topológia viszont jelenleg nem módosítható, így ezt kell tényként kezelni.

Most effektive az erdekel hogy kulso ip-d valtozik-e vagy hogy ppoe kapcsolatod megszakad-e?

Kulso ip-re valami myip lekerdezes lehet legegyszerubb.

Pppoe-re meg talan hogy megnezed mi az elso router ip szolgaltato oldalon (traceroute), ami igy mar pppoe mogott van es azt nezed elerheto-e (szolgaltatonak azok valoszinuleg ritkan valtoznak, ezert olyankor elegendo modositani a monitoringban kezzel szerintem).

Mivel a pppoe megszakadással external ip változás is jár, így a kettő nem elkülöníthető egymástól. Alapvetően a kapcsolat újra felépülésének pillanatát akarom elkapni.

A routert megszólítod SNMP-n, és lekérdezed belőle a téged érdeklő adatokat, pl. az interfész adminisztratív és operatív állapotát, IP címet, PPP peert, gatewayt stb.

Az SNMP hirtelen nem ugrott be, de mint opció, kipróbálom, amint hálózat közelbe jutok.

Én indítanék egy ingyenes Azure website-ot, elé egy Basic auth-t a zaj elkerülése miatt, azt nyitogatnám belülről ütemezetten. A website-ról visszaolvasnám a kliens forrás IP-t, illetve akár ütemezett job-bal figyelném a cím változását és riasztanék is, igény esetén.

Üdv,
Marci
A Microsoftnál dolgozom.

nekem egy ilyen kis script van a routeremen (openwrt), ha változik az ip elküldi az új ip címet e-mailen, cronból fut


#/bin/sh
if [ ! -f ~/.current_ip ]; then
echo "o" > ~/.current_ip
fi
IPADDRESS=$(/sbin/ifconfig pppoe-wan | sed -n 's/.*inet addr:\([^ ]*\).*/\1/p')
LASTIP=`cat ~/.current_ip`;
if [[ ${IPADDRESS} != ${LASTIP} ]]
then
mailsend -domain xxxx.xx -f

-t

-smtp xxxx.xx -port 3333 -sub "Router new IP address is ${IPADDRESS}" -msg-body ~/.current_ip
echo ${IPADDRESS} >|~/.current_ip
fi

Ez jó megoldás lenne, de nem az. Mivel gyári T-s eszközről beszélünk, így azon nem fog semmilyen shell script futni. Ez van, ezzel kell együttélni.

Cron */5 * * * * 5 percenkent megnezed hogy mi az ip-d es egyben teszteled hogy van-e neted: http://ident.me

freedns.afraid.org

- 1 perc beállítani
- scriptet is legenerálja

Jó kis számokat látni... :)

Members: 2,777,266
Premium: 3,094
Records: 8,776,410
Zones: 975,209

+1

Ha a router tud UPnP-t, akkor lekerdezheted tole a kovetkezo parancssal (Ubuntun a miniupnpc csomag kell hozza):
upnpc -s | grep ExternalIPAddress | cut -c21-


Sic Transit Gloria Mundi

Home megoldásnak ezt használom hosszú évek óta:
#/bin/sh
while [ 1 ];
do
previpf=/home/luther/previp
ip=`wget -q checkip.dyndns.org -O - | grep -o "[0-9|.]*"`;
previp=`cat $previpf`
if [ $ip != $previp ];
then

echo $ip > $previpf

fi
sleep 5;
done

--------------
„If there were no hell, we would be like the animals. No hell, no dignity.”

Az 5 másodpercenkénti futásért a dyndns még nem szólt? Erre ugyanis mint B terv, gondoltam, csak nem akarok belefutni a szabályzatuk apróbetűs részébe.

Nem tapasztaltam ilyen problémát.
--------------
„If there were no hell, we would be like the animals. No hell, no dignity.”

Ezt örömmel hallom. Ha a fentebb írtak nem működnek, akkor ez még jól jöhet.

Ami számomra nem egyértelmű: hol szeretnéd tudni a dolgot? A belső hálózaton vagy a hálózaton kívülről?
Csak az aktuális cím érdekel vagy a kapcsolat elérhetősége is?

Üdv,
Marci

Belső hálón, és a kapcsolat elérhetősége annyiban érdekel, hogy nem lenne hátrányos reconnect után max 5-10 másodpercen belül ip-t szerezni.

Arra akár jó is, amit fent javasoltam. Persze valószínű, hogy ilyesmi létező szolgáltatásként is elérhető, illetve nem ismerem a DynDNS-szerű szolgáltatások elérhetőségét, reakcióidejét.
Előnye, hogy
-magadat tutti nem fogod kirúgni ha túl sűrű a csomageső a meghívott szolgáltatáson
-megoldhatod az egészet úgy, hogy egyetlen, folyamatosan fenntartott HTTP kapcsolatra épüljön, minimális adatforgalommal.

Üdv,
Marci

Több megoldást is írtatok, ezek közül az SNMP, UPnP megoldások elegánsak, ha ezeket valamiért nem szeretné a magentás router, akkor még Luther dyndns-es megoldása járható útnak tűnik.

Mindenkinek köszönöm az ötleteket.

Ha a dyndns megomlana ez is egy megoldás:
curl -s "http://v4.ipv6-test.com/api/myip.php"