Auteur Topic: Internetmonitor  (gelezen 1984 keer)

0 leden en 1 gast bekijken dit topic.

gertmenkel

  • Actief DigitalPlace Lid
  • **
  • Berichten: 1125
  • Karma: 131
    • Bekijk profiel
Internetmonitor
« Gepost op: december 29, 2013, 05:15:23 pm »
  • [+1]0
  • [-1]0
  • Mijn internet is bijzonder slecht thuis, en ik probeer nog steeds mijn ouders te overtuigen eindelijk eens bedraad internet aan te sluiten. Alles gebeurt thuis draadloos, dus de snelheid ligt vaak tussen de 8 en de 16 Mbits als ik geluk heb. Verder wil internet nog wel eens helemaal wegvallen, ik vermoed dat dit komt door de router maar dat weer ik niet zeker.

    In een poging bij te houden wanneer internet wegvalt heb ik een scriptje gemaakt dat via een cronjob iedere minuut checkt of internet nog te bereiken is. Het script ziet er momenteel zo uit:
    #!/usr/bin/php
    <?php
    // Versie (voor de logs en dergelijke)
    $VERSION = "0.2.1.0";
    // Wordt aangeraden door PHP documentatie
    date_default_timezone_set('Europe/Amsterdam');

    // MySQL gegevens
    $dbserver = "localhost";
    $dbname = "internetcheck";
    $dbuname = "internetcheck";
    $dbpass = "Wachtwoord";
    $tablename = "entries";

    // Host om mee te testen
    $host = "www.google.com";

    // Zorgt ervoor dat als de pagina wordt aangevraagd over bijvoorbeeld HTTP de outpout geleegd wordt
    @ob_end_clean();
    // Controleren of we wel via de command line draaien
    if ( php_sapi_name() !== "cli" ){
    http_response_code(403);
    die("Alleen beschikbaar via cron!");
    }

    // Starttijd opslaan
    $starttime = ( new DateTime() )->Format(DateTime::ISO8601);

    // Versie doorgeven
    echo "Internetcontrole, versie $VERSION, gestart $starttimen";

    // Variablen voor socket voorbereiden
    $sock_errno = 0;
    $sock_errstr = "";

    // Proberen te verbinden met google
    $connect_check = @fsockopen("$host", 80, $sock_errno, $sock_errstr, 1);
    // Kijken of we verbonden zijn
    if ($connect_check){
    // Aangeven dat verbinden goed ging
    $connected = 1;
    // Socket sluiten
    fclose($connect_check);
    } else {
    // Aangeven dat er geen internet is
    $connected = 0;
    }

    // Eindtijd opslaan
    $endtime = ( new DateTime() )->Format(DateTime::ISO8601);

    // Verbinden met database
    $db = new mysqli($dbserver, $dbuname, $dbpass, $dbname);
    if ($db->connect_errno){
    // Als er iets misgaat tijdens verbinden met de database dit aangeven
    die("Fout tijdens verbinden met database (" . $db->connect_errno . ")");
    }

    // Query opbouwen
    $query = "INSERT INTO $tablename (startTime, endTime, success, host) VALUES ('$starttime', '$endtime', $connected, '$host')";

    // Query uitvoeren
    $db->query($query);
    // ID van de nieuwe row opvragen
    $id = $db->insert_id;
    // Deze ook doorgeven in de log
    echo "Query uitgevoerd, id van de nieuwe row is $idn";
    ?>

    Eerst wilde ik de verbinding controleren door een aanvraag te doen naar mijn eigen publieke IP-adres, maar deze bleek ook te benaderen zonder internet (?!?, via ping en via een socket, zal wel een Linux/raspberry pi ding zijn).

    Nu wil ik ook testen hoe goed de verbinding is door een korte snelheidtest te doen. Omdat ik het script iedere minuut draai moet er niet te veel data verstookt worden, zodat ik niet per ongeluk een of andere website DDOS. Ik wilde eerst gewoon een verbinding met het publieke IP openzetten om de internetdoorvoer te checken, maar omdat deze ook te bereiken is zonder internet ben ik bang dat de data dan via de loopback interface gaat of pi->router->pi, wat ik ook niet wil meten.

    Ik vroeg me af of iemand hier misschien weet hoe ik (redelijk) betrouwbaar de snelheid kan meten. Het liefste meet ik via de verbinding zelf, zodat ik niet afhankelijk ben van een andere service.
    Weet iemand waarom het publieke IP bereikbaar is, zonder dat de router verbonden is met het modem, of hoe dit te omzeilen valt?
    « Laatst bewerkt op: januari 01, 1970, 01:00:00 am door Guest »
    ThePirateBay AFK
    Bekijk de vrije en gratis documentaire!

    LaugHawa

    • DigitalPlace Lid
    • *
    • Berichten: 339
    • Karma: 19
      • Bekijk profiel
    Re: Internetmonitor
    « Reactie #1 Gepost op: december 29, 2013, 07:23:28 pm »
  • [+1]0
  • [-1]0
  • Dit fenomeen hoort zo te werken.

    - pakketje komt bij de routers met IP A
    - router ziet dat IP A een IP adres van hem is op een andere interface
    - router routeert het pakketje direct terug het netwerk in.

    Dit is een normale werking van de router, en hier zul je ook niet onderuit komen.

    overigens wanneer de router op zijn externe interface geen IP heeft kan dit natuurlijk niet gebeuren, maar de akns dat dit gebeurd is maar heel klein, aangezien deze IP adressen alleen worden aangewezen bij het booten van de router en om de X uur ( verschilt per provider ).

    wat ik zou doen is om een website als whatismyipaddress aan roep op deze url ( de API )
    http://bot.whatismyipaddress.com hier zul je geen betrouwbare snelheid van kunnen aflezen. want het bestand is simpel weg te klein om dit te doen.

    Voor een betrouwbare snelheidsmeting heb je al snel een bestand van 10MB of meer nodig, als je gaat uitrekenen ga je dan dus 14 gig per dag downloaden. ( Raad ik je niet aan )

    wat je zou kunnen doen is je raspberry als router laten functioneren, en daar monitor scripts op laten draaien, zo kun je zien hoe snel je netwerk op dat moment was. maar je weet dan alleen de snelheid die gebruikt wordt en niet de snelheid die je kon gebruiken
    http://blog.gonzih.me/blog/2013/08/24/speed-slash-ping-test-graphs-with-clojure-and-raspberry-pi/
    http://www.networkworld.com/community/blog/raspberry-pi-network-monitoring-node

    Denk er wel aan, dat dit mogelijk vertraging kan opleveren binnen je netwerk. je gebruikt op dit moment wireless, dan zie ik nog geen probleem, maar als je straks naar gigabit overstapt dan zal je raspberry dat niet meer trekken
    « Laatst bewerkt op: januari 01, 1970, 01:00:00 am door Guest »

    gertmenkel

    • Actief DigitalPlace Lid
    • **
    • Berichten: 1125
    • Karma: 131
      • Bekijk profiel
    Re: Internetmonitor
    « Reactie #2 Gepost op: december 29, 2013, 08:16:45 pm »
  • [+1]0
  • [-1]0
  • Citaat van: "LaugHawa"
    Dit fenomeen hoort zo te werken.

    - pakketje komt bij de routers met IP A
    - router ziet dat IP A een IP adres van hem is op een andere interface
    - router routeert het pakketje direct terug het netwerk in.

    Dit is een normale werking van de router, en hier zul je ook niet onderuit komen.

    overigens wanneer de router op zijn externe interface geen IP heeft kan dit natuurlijk niet gebeuren, maar de akns dat dit gebeurd is maar heel klein, aangezien deze IP adressen alleen worden aangewezen bij het booten van de router en om de X uur ( verschilt per provider ).

    wat ik zou doen is om een website als whatismyipaddress aan roep op deze url ( de API )
    http://bot.whatismyipaddress.com hier zul je geen betrouwbare snelheid van kunnen aflezen. want het bestand is simpel weg te klein om dit te doen.

    Voor een betrouwbare snelheidsmeting heb je al snel een bestand van 10MB of meer nodig, als je gaat uitrekenen ga je dan dus 14 gig per dag downloaden. ( Raad ik je niet aan )

    wat je zou kunnen doen is je raspberry als router laten functioneren, en daar monitor scripts op laten draaien, zo kun je zien hoe snel je netwerk op dat moment was. maar je weet dan alleen de snelheid die gebruikt wordt en niet de snelheid die je kon gebruiken
    http://blog.gonzih.me/blog/2013/08/24/speed-slash-ping-test-graphs-with-clojure-and-raspberry-pi/
    http://www.networkworld.com/community/blog/raspberry-pi-network-monitoring-node

    Denk er wel aan, dat dit mogelijk vertraging kan opleveren binnen je netwerk. je gebruikt op dit moment wireless, dan zie ik nog geen probleem, maar als je straks naar gigabit overstapt dan zal je raspberry dat niet meer trekken
    Dank je voor je snelle reactie, nu snap ik waarom hij mijn IP zomaar kan bereiken.

    De Pi als router gebruiken gaat hem niet worden aangezien de USB ontvanger voor draadloos niet bijzonder sterk is. Verder hangt hij als DHCP-server aan mijn PC voor snelle toegang en remote WoL, en draait hij als cachende DNS server (merkbare snelheidverbetering).
    Ook wil een hoge netwerkbelasting het apparaat nog wel eens instabiel maken, ik geloof dat het komt doordat de voeding niet de volledige 5V geeft waardoor hij instabiel wordt bij verhoogde prestaties (hij hangt aan een powered hub, en wil niet opstarten als zowel de hub als de voeding aangesloten zijn, dus voedt ik hem over de USB-poort ipv de micro-usb poort).

    De snelheidsmeting hieft niet per se zeer betrouwbaar te zijn (als in het ├ęchte maximum vinden), maar er moet een verschil te zien zijn tussen bijvoorbeeld de verwachte 16Mbit en de 4Mbit die het netwerk soms aanneemt. Ik ben nog bezig de details van een ping te verwerkrn als indicator, maar die verschilt ook nog wel eens op de pi, ik denk ook door envoedingsprobleem.
    « Laatst bewerkt op: januari 01, 1970, 01:00:00 am door Guest »
    ThePirateBay AFK
    Bekijk de vrije en gratis documentaire!