Deelt de router geen ip-adressen meer uit of is er een netwerkkabel kapot? Doet de smartphone moeilijk of is er echt geen wifi? Met onze tool c’t-net-tester kun je analyseren waar het probleem zit.
Het stellen van een netwerkdiagnose is altijd vrij complex. Heb je alleen de configuratie van je eigen pc verkloot of is de router naar de Filistijnen? Dan zou een tweede apparaat in het netwerk wel handig zijn. Maar heeft een notebook tegenwoordig nog een netwerkaansluiting?
Met een Raspberry Pi kun je zowel het wifi als je LAN onderzoeken. De c’t-net-tester voor Raspberry Pi gaat uit van eenvoudige touchbediening en helpt bij het analyseren van de onderliggende netwerktoestand. Dat systeem is zo compact, dat je het altijd bij je kunt hebben en ook bij vrienden en familie snel kunt achterhalen waar het probleem zit.
Een Raspberry Pi van een paar tientjes kan natuurlijk niet op alle facetten meekomen met professionele netwerktesters van een paar honderd euro. Voor het achterhalen van de in een thuisnetwerk meest voorkomende storingen voldoet echter vaak een opsomming van de ip-adressen, het zoeken van draadloze netwerken en het controleren van de internetverbinding.
Wat niet kan, is het detecteren van hardware- en kabelproblemen. Daar heb je gespecialiseerde apparatuur voor nodig. Voor het loggen van netwerkpakketten zijn andere Raspberry Pi projects op basis van Wireshark beter geschikt. Als je meer zou willen dan wij tot nu toe geïmplementeerd hebben, kun je onze opensource software gewoon uitbreiden.
Ontvang gratis informatie over Raspberry Pi, netwerken en meer, schrijf je in voor de nieuwsbrief:
Hardware
Welke Raspberry Pi je als basis gebruikt, maakt in principe niet uit. De interface is namelijk in Python geschreven en werkt op alle modellen. Als je een model zonder wifi hebt, worden de wifi-functies van de software simpelweg gedeactiveerd. Het omgekeerd geldt als je een Raspberry Pi Zero (W) zonder netwerkaansluiting gebruikt, dan is de betreffende optie ook niet te selecteren. Je kunt een ontbrekende interface later altijd nog toevoegen met een usb-adapter, als de Linux-kernel van Raspbian die dan tenminste ondersteunt.
Naast een Raspberry Pi heb je ook nog een touchscreen voor de Pi nodig. Of dat een klein 2,8″-display of het officiële 7″-touchscreen van Raspberry Pi is, maakt in principe niet uit. De grafische interface van het project schaalt naar de resolutie en is van 320 bij 240 pixels tot full-hd te bedienen. Als je geen touchscreen hebt, kan het ook met een willekeurig gewoon scherm en een muis.
Software
Als basis van de netwerktester dient de lichte versie Raspbian Lite. Download eerst de meest recente versie van de website van de Raspberry Pi Foundation.
Nadat je de image op je sd-kaart hebt gezet (daarvoor raden we het programma Etcher aan) en de Raspberry Pi ermee gestart hebt, log je in. Dat kan ook via SSH. Om SSH al bij het starten van het systeem te activeren, maak je een bestand met de naam SSH aan op de bootpartitie van de sd-kaart. Vervolgens werk je de systeemsoftware eerst bij met
sudo apt update
sudo apt upgrade
Na het voltooien van het bijwerken herstart je de Raspberry Pi. Dan moet je het touchscreen nog installeren volgens de handleiding van de fabrikant. Als je gevraagd wordt of het display de output van de X-server moet weergeven, moet je dat bevestigen.
De X-server is nodig voor de c’t-net-tester omdat veel touchscreens alleen maar onder X de juiste touchcoördinaten doorgeven. De normale Raspbian heeft al een voorgeïnstalleerde en geconfigureerde X-server, maar die heeft dan wel weer een complete Pixeldesktop. Dat verbruikt onnodige resources en zorgt er alleen maar voor dat het opstarten van het systeem langer duurt. Installeer daarom alleen de benodigde softwarepakketten:
sudo apt install –no-install-recommends xserver-xorg xinit xterm xserver-xorg-input-evdev
python3-pip python3-venv
python3-pygame
De eerste parameter –no-install-recommends verhindert dat aanbevolen maar overbodige pakketten geïnstalleerd worden. De drie pakketten daarna zijn noodzakelijk voor het werken van X-server. Het pakket xserver-xorg-input-edev is een driver voor invoerapparaten die nodig is voor de touchscreenbediening.
Python-modules
Daarna volgen er dan drie Python 3- modules. De eerste twee installeren de Python-pakketmanager Pip en de module venv. Die is nodig voor het aanmaken van een Virtual Environment voor Python die de systeembreed geïnstalleerde Python-modules scheidt van de modules doe alleen voor de netwerk tester nodig zijn.
Als je de Python-modules systeembreed zou installeren, loop je het risico dat ze een in Python geschreven systeemdienst in de weg gaan zitten. Als grafische bibliotheek gebruikt het programma daarnaast Pygame. Dat wordt hier alleen geïnstalleerd van wege zijn afhankelijkheden. De door net-tester gebruikte Pygame-module wordt door Pip in een later stadium geïnstalleerd in de Virtual Environment.
Test vervolgens of het installeren van de X-server gelukt is. Daarvoor moet je naar een console op de Raspberry Pi gaan en inloggen als de standaardgebruiker pi. Met het commando startx start je de X-server, waarna je op het touchscreen een wit Xterm-venster zou moeten zien verschijnen. Je verlaat de X-server weer met het commando exit.
Starthulp
Download vervolgens de c’t-net-tester-software. Pak het bestand uit in de home-directory van de gebruiker. Vervolgens staat er een nieuwe directory met de naam ct-net-testermaster in je home-directory. Ga naar die directory en controleer of het bestand run.sh daar als uitvoerbaar gemarkeerd is. Als dat niet zo is, moet je dat corrigeren met chmod +x run.sh.
Daarna maak je als volgt een Virtual Environment aan voor Python en activeer je deze:
python3 -m venv ~/nettest-venv source ~/nettest-venv/bin/activate
Of het activeren gelukt is, kun je herkennen aan het feit dat aan je shell nu een nettest-venv toegevoegd is. Dan kun je de voor de c’t-net-tester benodigde modules installeren. Ga naar de directory ct-net-tester-master en geef aan Pip op de volgende manier aan dat alle afhankelijkheden geïnstalleerd moeten worden:
pip install -r requirements.txt
Pip leest uit het bestand requirements.txt dan welke pakketten er nodig zijn en installeert ze vervolgens.
X-server
Normaal gesproken zorgt een inlogmanager als GDM of Lightdm voor het inloggen van een gebruiker en het starten van de X-sessie. Die overhead kun je je voor deze netwerktester besparen door een automatische inlog-console te activeren en X-server dan meteen te starten.
Voor het automatisch inloggen start je dan de configuratie tool raspi-config met rootrechten en ga je daarin bij de boot-opties naar ‘Desktop / CLI’. Selecteer daar ‘Console Autologin’. Daar wordt ook het starten van een grafische desktop aangeboden, maar die werkt niet omdat de inlogmanager Lightdm niet geïnstalleerd is. Weiger vervolgens het aanbod om te herstarten en verlaat het programma door op Escape te drukken. Bij de volgende systeemstart zal de gebruiker pi bij de eerste Terminal inloggen zonder een wachtwoord op te hoeven geven.
Om ervoor te zorgen dat de X-server na het inloggen de net-tester start, bewerk je het bestand ~/.profile en voeg je aan het eind de volgende regels toe:
if ! [ -n “$SSH_CLIENT” ] && ! [ -n
“$SSH_TTY” ]; then
startx -e ~/ct-net-tester-master/run.sh
fi
De if-voorwaarde zorgt ervoor dat de X-server niet bij het inloggen via SSH gestart wordt, maar alleen bij het automatisch inloggen op de Terminal.
Wifi-configuratie
Een interface voor het instellen en activeren van wifiverbindingen is geen onderdeel van c’t-net-tester. Om het wifi te kunnen testen, moet je het te testen netwerk op de Raspberry Pi instellen. Dat gaat het makkelijkst met raspi-config. Daar staat bij ‘Network Options’ de optie ‘Wi-Fi’. Daar heb je de mogelijkheid een wifi in te vullen waarmee de Raspberry Pi verbinding moet maken. Bij de eerste start vraagt raspi-config naar het land waarin je de Raspberry gebruikt. Daar moet je het goede land opgeven, zodat de Raspberry Pi alle toegestane wifikanalen gebruikt – en geen andere. Vervolgens kun je de SSID en het wachtwoord opgeven.
De tool raspi-config kan alleen normale WPA-PSKnetwerken configureren, maar geen WPA2-Enterprise-netwerken. Ook het instellen van een specifiek accesspoint is hier niet mogelijk. Dat kan echter wel met een handmatige configuratie van de WPA-supplicant, waar raspi-config eigenlijk alleen een front-end voor is. Voor complexere wifi-omgevingen moet je dan ook in de documentatie van WPA-supplicant kijken hoe je dat moet doen.
De testerinterface
Na een herstart moet de interface van de c’t-net-tester op het display van de Raspberry Pi verschijnen. Het kan bij een langzamere Pi een moment duren voordat de interface zichtbaar wordt. Je moet echter wel meteen een muiscursor zien. Als er problemen optreden bij het starten van het programma, dan blijven de laatste (fout)meldingen nog tien seconden op het beeldscherm staan voordat X-server afgesloten wordt.
In het midden van het display zie je de informatie over het huidige apparaat. Als de tekst met de informatie niet compleet op een regel past, wordt hij automatisch afgebroken. Dat afbreken wordt met pijltjes aangeven.
Met de menuknop linksboven op het scherm kom je bij het selectiemenu. Daar kun je met behulp van de knoppen schakelen tussen wifi-apparaten en ethernetapparaten. Als de soft ware bijvoorbeeld meer dan één wifi-apparaat vindt, kun je dan met een volgende druk op de wifiknop naar de volgende interface doorschakelen. Vanwege technische redenen belandt alles wat geen wifi-interface is op de lijst van ethernetapparaten. Met een druk op de powerknop sluit de Raspberry Pi weer af.
Bediening
De daaronder staande knoppen voeren verschillende tests uit. De eerste test of er een internetverbinding bestaat door te proberen de opgegeven domeinen en ip-adressen te benaderen. De tweede knop start een zoektocht naar draadloze netwerken en laat van alle door de Pi gevonden wifi’s de naam, het kanaal en de signaalsterkte zien. De derde knop is met behulp van het configuratiebestand zelf een functie te geven. De uitvoer van het ingestelde commando wordt dan op het beeldscherm getoond. De tijd op de titelbalk is voor een visuele controle of de Raspberry Pi eventueel gecrasht is – altijd handig als je twijfelt.
Als je de menuknop nog een keer aanraakt, kom je weer op de overzichtspagina uit. Daar kun je de uitvoer van het laatste commando zien. Met een druk op het onderste of bovenste deel van de tekst kun je een pagina naar beneden of naar boven scrollen.
Configuratie
Om de interface van c’t-net-tester aan te passen, kun je het bestand nettester.conf bewerken. Hieronder staat een voorbeeldconfiguratie.
01 [nettester]
02 bg_color=0,0,0
03 fg_color=255,255,255
04 resolution=0,0
05 font_size_correction=1.0
06 online_test_remote=ct.nl,example.com,8.8.8.8,1.1.1.1
07 custom_command=ping ct.nl
08 show_mouse_cursor=1
Na de openingsregel [net tester] komen de eerste opties bg_color en fg_color, waarmee je de achtergrond- en de tekstkleur anders kunt instellen als je het standaard zwart-wit wel gezien hebt. De kleurwaarden worden als daarbij 8-bit RGB-waarden opgegeven.
Vervolgens komt resolution, waarmee je de display resolutie kunt opgeven voor als het automatisch herkennen door Pygame niet goed zou gaan. De waarde 0,0 zorgt voor een automatisch herkennen van de resolutie.
De volgende font_size_correction bepaalt een correctiewaarde voor de lettergrootte als je de letters te groot of te klein vindt. Een positieve waarde zorgt voor een groter font, met een negatieve waarde worden de letters kleiner.
De zesde regel definieert welke domeinen en/of ip-adressen er gebruikt moeten worden voor de onlinetest. Met custom_command bepaal je het commando voor de vrij in te stellen knop in het menu. De optie show_mouse_cursor activeert of deactiveert het tonen van de muiscursor in de interface. Als je die irritant vindt, kun je hem uitschakelen. Dat heeft verder geen invloed op de bediening.
Als je suggesties voor verbetering hebt, welke dan ook, dan kun je bij GitHub een pull-request doen, dan hebben ook andere gebruikers daar eventueel nog wat aan.