Seite 5 von 6

Verfasst: 23.04.2005 10:14
von deMattin
Icke hat geschrieben:Das Problem bei der ganzen Geschichte ist, das bei einer "on demand" Einstellung des Routers eine Verbindung beim prüfen aufgebaut wird, zumindest bei meinem. Wer keine Flat hat kann das nicht gebrauchen. Ich vermute mal das es bei anderen auch so sein wird, macht ja Sinn.
Das ist systembedingt so und somit bei allen Routernutzern.
Also stellt sich für mich die Frage was es an anderen möglichkeiten gibt. Welcher Verkehr wird z.B. einen Router nicht dazu veranlassen aufzumachen?
Nur der, der entweder von der Firewall/Portfilter des Routers geblockt wird Call-Filter) und echter LAN-Traffic - nutzt dir also alles nichts für Internet-Erkennung.
Wie werten die Hersteller "on demand" am Router aus? Portmäßig, http, ftp, 8080,8081 oder wie machen die das?
Der Router kennt den Verbindungsstatus durch sein eingebautes PPPoE-Protokoll und die Status-Pakete, die bei Verbindung ständig zwschen Router zum/vom Provider laufen.
Besteht keine Verbindung, dann wird eben bei Bedarf (Internet-Anfrage aus dem LAN) eine vom Router aufgebaut.
Vielleicht macht ein Router bei bestimmten Ports nicht automatisch auf, ntp vielleicht, niedrige "well knowns"? Vielleicht ließt ja ein Profi mit der sich damit auskennt...
Wenn du vom Rechner aus das Internet "befragst", ist das immer eine Aufforderung zum Verbindungsaufbau. Bei Routernutzung ist also so ein Vorgehen nicht brauchbar (auch nicht für Check auf WAN-IP o.ä.), da für den Rechner sowieso immer eine Online-Verbindung (Verbunden über LAN mit dem Internet) besteht und der Router diese bei Bedarf (onDemand) aufbaut.
Du kannst von einem Rechner aus also keinesfalls Informationen über die Verbindung abfragen, ohne den Router zu fragen, da du dich von einem Rechner aus nicht zwischen Router und Provider hängen kannst.
Der Router "kennt" aber doch den echten Verbindungsstatus und wenn du hinter einem Router feststellen willst, ob die Verbindung online oder offline ist, dann musst du nur den Router fragen. ;)
Es gibt dazu mehrere Möglichkeiten (je nach Router): SNMP, telnet oder (bei fast allen Routern) Webinterface.
Schau mal auf meiner Webseite unter "Projekte" - "Software" - "VURM", da habe ich eine Freeware-Software gemacht, die das Webinterface des Routers (dessen Statusseite) abfragt und dort noch mehr Infos (IPs, Laufzeit, ...) rausholt.
Ist zwar für DrayTek-Router entwickelt, läuft aber auch nach Anpassung der Konfigurationsdatei mit allen Routern, deren Webinterface mit Login per basic auth funktioniert.
Im Endeffekt musst du also erstmal die relevante Webinterface-Seite auslesen und dann nach für eine Verbindung typischen Inhalten durchsuchen - wonach hier gesucht werden muss, hängt vom Routermodell bzw. den Infos auf der Webinterface-Seite ab.

Auch wenn das komplette Projekt nicht "Open Source" ist, kann ich dir gerne helfen, wenn du da irgendwo Probleme hast - auch mit entsprechenden Subroutinen...
Da das aber hier nicht direkt zum Thema gehört, kannst du mich gerne bei weiterführenden Nachfragen anmailen.

Gruß,
Martin

Verfasst: 24.04.2005 13:28
von Icke
Danke für dein ausführliches Post. Ich hab das schon vor längerem per HTTP aus meinem Router auslesen können. Es ging mir eigentlich nur darum ohne die Interfaces des Router auszulesen evtl. eine andere Möglichkeit zu finden. Danke für die Informationen, sehr hilfreich.

Verfasst: 05.06.2005 12:24
von ThePuppetMaster
Hallöle!

Ich bin zwar kein PurBasic coder (noch nicht) :D aber eines kann ich euch schon sagen! ... Es ist NICHT möglich den Status einer Internetverbindung die NICHT von dem PC aus gestartet wurde, von dem die abfrage gestellt wird, zu erfragen! ... Die einzigste möglichkeit ist definitiv ein PING :roll:

Ihr müst das immer so sehen! ... Wenn eurer PC eine verbindung mit dem internet her stellt, dann weis das schliesslich euer computer auch! ... wenn Ihr via Netzwerk oder sagen wir mal das Gateway benutzt, woher soll euer computer wissen, ob der Router, oder irgend ein anderes System eine verbindung mit dem Netz wergestellt hat ?, wenn man nicht das Protokoll kennt, das verwendet wird?!?!? ... Ihr müst janicht mit eurem computer komunizieren, um zu erfragen, ob ihr verbunden seit, sondern mit dem Router, der die Verbindung hergestellt hat! .. daher müsstet ihr ein einheitliches abfrage-Protokoll verwenden, das es leider noch nicht gibt, um den Router zu fragen, ob er online ist oder nicht ... daher ist es immernoch die einfachste möglichkeit, einen >DNS-SERVER< an zu pingen! ... der DNS ist meist IMMER da, von daher könnt ihr sicher sein, das Ihr eine antwort von ihm bekommt! ... schliesslich gibts nur die A - ? DNS-server weltweit, die ALLE namen verwalten :)


PS: Purbasic wird ich aber noch anfangen! .. ist sehr interesant :)


Hofe, ich konnte helfen

PS: Das mit der Verbindung (OpenNetworkConnection) dauert bei meinem Vater ca. 20Sec bis zum erfolgreichen aufbau!!!

Kann mir nicht vorstellen, das das normal wäre ... da wir das auch schon Local probiert haben, und in etwa die gleichen zeiten raus kommen!
Leider kann ich auch nicht nachvollziehen, was diesr befehl genau macht!
Daher wär ich für ne kleine Info SEHR SEHR Dankbar!


Greez
Martin

Verfasst: 05.06.2005 21:52
von deMattin
ThePuppetMaster hat geschrieben:... Hofe, ich konnte helfen...
Ähh sorry, denke ich nicht, da das, was du beschrieben hast, alles schon vorher gesagt bzw. angesprochen wurde!
Dein Tipp mit der DNS-Abfrage ist ebenfalls bei Routern nicht sinnvoll, da eben diese Anfrage bei einem Router mit "Dial-On-Demand" die Verbindung aufbaut, wenn sie vorher nicht bestanden hat - also schlechte Lösung und genauso unsinnig bzw. mit dem gleichen Nachteil behaftet wie ein Ping auf eine Webseite.

Es gibt bei Routernutzung nur die Möglichkeit, den Router für den Onlinestatus zu fragen - wie ich es oben aber schon beschrieben habe - per Webinterface, Telnet oder SNMP (was natürlich auch ein PB-Programm machen kann)!!
Und das ist leider, wie du auch schon richig bemerkt hast, nicht standardisiert und daher für jeden Router(hersteller) etwas anders zu lösen.

Die Verfügbarkeit einer Internetverbindung kann man natürlich per Ping auf Webseite oder DNS-Abfrage überprüfen - das ist aber doch etwas anderes als der Check des Verbindungsstatus und es muss dem Verwender bewusst sein, dass er mit diesem Test eine Verbindung aufbaut, wenn sie vorher noch nicht bestanden hat.
Sowas kann aber durchaus sinnvoll sein z.B. für einen Dauer-Check einer Always-On-Verbindung.
PS: Das mit der Verbindung (OpenNetworkConnection) dauert bei meinem Vater ca. 20Sec bis zum erfolgreichen aufbau!!!

Kann mir nicht vorstellen, das das normal wäre ... da wir das auch schon Local probiert haben, und in etwa die gleichen zeiten raus kommen!
Leider kann ich auch nicht nachvollziehen, was diesr befehl genau macht!
Daher wär ich für ne kleine Info SEHR SEHR Dankbar!
Normal ist das auch nicht und um zu sehen, wie man den Befehl verwendet, schaust du dir am Besten mal einige Codebeispiele hier aus dem Forum oder dem Codearchiv an.

Gruß,
Martin

Verfasst: 06.06.2005 08:32
von real
Einfach mal den Code erweitern und den Fehlercode prüfen, dann habt Ihr zumindest eine Info, warum ein Fehler auftritt:

Code: Alles auswählen

Debug InternetCheckConnection_("www.google.de", 1, 0)
Debug GetLastError_()
Ich denke auch, dass eine Prüfung per PING die erfolgreichste sein dürfte. Windows und zwischengeschaltete Router bauen meines Wissens beim Ping auf eine IP nicht automatisch eine Internetverbindung auf. Soweit ich weiß, geschieht das nur bei HTTP-, FTP-, ... Requests, nicht jedoch bei ICMP-Anfragen.

Verfasst: 06.06.2005 12:05
von ThePuppetMaster
/:->
Das mit dem Connect ist aus einem Beispiel von "euch" ... Client und Server test von Purebasic ... ich habe dies auch schon auf mehreren Rechner ausprobier, und jedesmal habe ich die selben zeiten (< 20Sek) warten müssen ... Mit VB und API habe ich nicht diese Probleme 8)

Und ... Nen FEHLER bekomm ich ja net! ... es ist nur die Zeit, die mich aufregt ... 20 Sekunden zu warten, bis eine verbindung besteht, find ich wirklich LAHM!?!?!? :? ... vorallem, das mit einem Beispiel dieses Prob gibt ... Configfehler meinerseits ist zu 100% ausgeschlossen, das bei Mir mit VB Problemlos funzt :mrgreen:

...

Aber, was das abfragen angeht, wenn jemand wissen will, ob er online ist, oder net, ... und sein Router mit "OnDemand" geopt ist, dann ist es eh egal, ob er ne website abfragt, oder nen DNS! Der Router versucht sich einzuwählen, wenns net geht, bekommst nen fehler zurück ... wen man ne Website anpingt, oder daten abfragt, kanns durchaus sein, das der server mal down ist, aber net das Netz bzw. Die Root-DNS ... allerdings sind die ROOT-DNS IMMER Online! und daher kann man sicher stellen, das eine fast 99,9%ige sichere Prüfung gewehrleistet ist! ...

es gibt zur zeit nur 13 Weltweite Root-Server (A-M) die das ganze Netz mit DNS verwalten ... da IMMER einer online ist, ist sicher gestellt, das man auch einen erwischt! .. wenn nicht der fall sein sollte, dann ist das Netz sowieso TOT! :| ... ROOT-DNS-WIKI-INFO: http://de.wikipedia.org/wiki/Domain_Name_System

Das auslesen aus dem Router wird kaum machbar sein :)
Allerdings kann man das auch anders lösen! .. dazu gibts schlieslich das Gateway! :freak: ... über dieses läst sich auch feststellen, ob anfragen ans netz gesendet wurden, ober nicht ... desweiteren könnte man auch das Netz abhören, fasl ein HUB eingesetzt wird, und kein Switch .... ansonsten gibts es keine Möglichkeit, dies ÜBERALL gleich herausfinden zu können, auser einen PING zu senden ... abgeshen von HTML oder ähnlichem .. aber mal erlich,

ein PING ist doch immernoch das schnellste, und effizenteste von allen Möglichkeiten :wink:

Was den verbindungsaufbau be OnDemand angeht, das läst sich einstellen .. "Allow Ping To WAN" ... nent sich das ... damit wird auch ne verbindung ins WAN (Internet) aufgebaut :allright:


Greez
Martin


PS: auch wenn ich NICHT helfen konnte :( , vieleicht hilfts jemand, der sich mit ROOT-DNS beschäftigen möchte... :?

Verfasst: 06.06.2005 12:40
von deMattin
ThePuppetMaster hat geschrieben:... Was den verbindungsaufbau be OnDemand angeht, das läst sich einstellen .. "Allow Ping To WAN" ... nent sich das ... damit wird auch ne verbindung ins WAN (Internet) aufgebaut :allright:
Solche Möglichkeiten gibt es je nach Routermodell natürlich!
Beispielsweise bieten die DrayTek-Router die Möglichkeit, Call-Filter zu setzen und da kann man definieren, dass ein Ping eben keine Verbindung bei "Dial-On-Demand"-Konfiguration auslöst, sondern nur in's WAN geht, wenn die Verbindung noch oder schon besteht.
Das ist aber leider ebenfalls nicht mit jedem Router möglich und was ein Router macht, der hier nicht konfigurierbar ist, liegt an der Firmware und daran, was der Routerhersteller für sinnvoll erachtet.
Eine Gesetzmäßigkeit oder einheitliche Definition, dass ein ICMP-Paket grundsätzlich keine Einwahl bei DialOnDemand auslöst (wie real es geschrieben hat), ist mir nicht bekannt!
Wenn man "Ping" verwenden möchte , sollte man aber sicherlich direkt IPs anpingen und keine Domainnamen (wie real richtig angemerkt hat), da sonst ja als "Vorbereitung für den ping" ja eine DNS-Anfrage durch den Router erfolgt, die auf jeden Fall eine Einwahl auslösen würde.
Für diesen Ping dann einen Root-DNS zu verwenden, kann sicherlich aus den von ThePuppetMaster aufgeführten Gründen sinnvoll sein.
PS: auch wenn ich NICHT helfen konnte :( , vieleicht hilfts jemand, der sich mit ROOT-DNS beschäftigen möchte... :?
War nicht böse von mir gemeint und etwas Info fällt immer ab ... ;)
Hier für mich zumindest, einen Root-DNS für Ping-Checks zu verwenden - wenn man für irgend was mal pingen will und eine feste und ständig verfügbare Internet-IP benötigt. Und noch, dass es Router gibt, die eine Einstellung für "Disallow Ping to WAN" haben ... ;)

Gruß,
Martin

Verfasst: 06.06.2005 12:50
von ThePuppetMaster
:mrgreen: ... schon klar @deMattin ... habs auch nicht negativ aufgefasst! :wink:

Ist aber irgendwie schon schade, das die Industrie noch nicht bemerkt hat, das es sinvoll wär ein Protokoll zu entwickeln, das den Status einer Internetverbindung abfragen kann ...

kann doch net so schwer sein ... im grunde kann man das ähnlich einem Time-Server realisieren, bei dem einfach ne verbindung zum Gateway hergestellt wird, und z.B. auf Port X ... eine Antwort zurück gesendet werden, in dem z.B. "Connection:True" steht oder ähnlich

Aber da sieht man mal wieder, wo wie Industrie Ihr Geld hin stopft! ... Sinvolle Protokolle scheinen nicht Profitabel zu sein! ... da baut man lieber Protokolle auf wie HTTP, das Microsoft mit Ihrem InternetEx selbst in Kyrilischem ... Syntax-Falschem Format noch lesen können ... da fragt man sich doch, warum man überhaupt ne Syntax entwickelt?!?!? ... damit der Iex trotzdem lesen kann, und den Markt an Funktionsfehigen Sites zerstört ...

Aber das ist ein anderes Thema :freak:

Greez
TPM

Verfasst: 07.07.2005 09:06
von ststeppat
Hallo,

ich wollte gerade die Lib runterladen, doch es stimmt der Link nicht mehr.
Hat jemand von euch einen neuen Link oder kann mir die LIB schicken ?

danke

Stefan

Verfasst: 07.07.2005 15:20
von 125
Hi,
Shit, die ist beim letzten Backup draufgegangen ich bau die kurz neu zusammen und poste dann gleich einen Link hier.. :)