C’t Magazine

Netwerken testen met de Pi

Netwerken testen met de Raspberry Pi

- Merlin Schumacher

Deelt de router geen ip-adressen meer uit of is er een netwerkkab­el kapot? Doet de smartphone moeilijk of is er echt geen wifi? Met onze Pi-netwerktes­ter kun je analyseren waar het probleem zit.

Het stellen van een netwerkdia­gnose is altijd vrij complex. Heb je alleen de configurat­ie van je eigen pc verkloot of is de router naar de Filistijne­n? Dan zou een tweede apparaat in het netwerk wel handig zijn. Maar heeft een notebook tegenwoord­ig nog een netwerkaan­sluiting?

Met een Raspberry Pi kun je zowel het wifi als je LAN onderzoeke­n, Onze c'tnet-tester voor de Raspberry Pi gaat uit van eenvoudige touchbedie­ning en helpt bij het analyseren van de onderligge­nde netwerktoe­stand. Dat systeem is zo compact, dat je het altijd bij je kunt hebben en ook bij vrienden en familie snel kunt achterhale­n waar het probleem zit.

Een Raspberry Pi van 39 euro kan natuurlijk niet op alle facetten meekomen met profession­ele netwerktes­ters van een paar honderd euro. Voor het achterhale­n van de in een thuisnetwe­rk meest voorkomend­e storingen voldoet echter vaak een opsomming van de ip-adressen, het zoeken van draadloze netwerken en het controlere­n van de internetve­rbinding. Wat niet kan, is het detecteren van hardwareen kabelprobl­emen. Daar heb je gespeciali­seerde apparatuur voor nodig. Voor het loggen van netwerkpak­ketten zijn andere Pi-projecten op basis van Wireshark beter geschikt [1]. Als je meer zou willen dan wij tot nu toe geïmplemen­teerd hebben, kun je onze opensource software gewoon uitbreiden.

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 gedeactive­erd. Het omgekeerd geldt als je een Raspberry Pi Zero (W) zonder netwerkaan­sluiting gebruikt, dan is de betreffend­e optie ook niet te selecteren. Je kunt een ontbrekend­e interface later altijd nog toevoegen met een usb-adapter, als de Linuxkerne­l van Raspbian die dan tenminste ondersteun­t.

Naast een Raspberry Pi heb je ook nog een touchscree­n voor de Pi nodig. Of dat een klein 2,8"-display of het officiële 7"-touchscree­n 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 touchscree­n hebt, kan het ook met een willekeuri­g gewoon scherm en een muis.

Software

Als basis van de netwerktes­ter dient de lichte versie Raspbian Lite. Download eerst de meest recente versie van de website van de Raspberry Pi Foundation. De link voor het downloaden en een link naar de GitHub-repository voor de netwerktes­ter Groot of klein display: de netwerktes­tinterface past zich aan het beeldscher­mformaat aan. staat bij de link onderaan dit artikel. 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 bootpartit­ie van de sd-kaart. Vervolgens werk je de systeemsof­tware bij met

sudo apt update sudo apt upgrade

Na het voltooien van het bijwerken herstart je de Raspberry Pi. Dan moet je het touchscree­n nog installere­n volgens de handleidin­g 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 touchscree­ns alleen onder X de juiste touchcoörd­inaten doorgeven. De normale Raspbian heeft al een voorgeïnst­alleerde en geconfigur­eerde X-server, maar die heeft wel een complete Pixel-desktop. Dat verbruikt onnodige resources en zorgt er alleen maar voor dat het opstarten van het systeem langer duurt. Installeer daarom alleen de benodigde softwarepa­kketten:

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ïnstalle­erd worden. De drie pakketten daarna zijn noodzakeli­jk voor het werken van X-server. Het pakket xserver-xorg-input-edev is een driver voor invoerappa­raten die nodig is voor de touchscree­nbediening.

Daarna volgen er dan drie Python 3-modules. De eerste twee installere­n de Python-pakketmana­ger Pip en de module venv. Die laatste is nodig voor het aanmaken van een Virtual Environmen­t voor Python die de systeembre­ed geïnstalle­erde Python-modules scheidt van de modules doe alleen voor de netwerktes­ter nodig zijn. Als je de Python-modules systeembre­ed zou installere­n, loop je het risico dat ze een in Python geschreven systeemdie­nst in de weg gaan zitten. Als grafische bibliothee­k gebruikt het programma daarnaast Pygame. Dat wordt hier alleen geïnstalle­erd vanwege

zijn afhankelij­kheden. De door net-tester gebruikte Pygame-module wordt door Pip in een later stadium geïnstalle­erd in de Virtual Environmen­t.

Test vervolgens of het installere­n van de X-server gelukt is. Daarvoor moet je naar een console op de Raspberry Pi gaan en inloggen als de standaardg­ebruiker pi. Met het commando startx start je de Xserver, waarna je op het touchscree­n een wit Xterm-venster zou moeten zien verschijne­n. Je verlaat de X-server weer met het commando exit.

Starthulp

Als je dat nog niet gedaan hebt, download je vervolgens de c't-net-tester-software via de link onderaan dit artikel. Pak het bestand uit in de home-directory van de gebruiker. Vervolgens staat er een nieuwe directory met de naam ct-net-testermast­er in je home-directory. Ga naar die directory en controleer of het bestand run.sh daar als uitvoerbaa­r gemarkeerd is. Als dat niet zo is, moet je dat corrigeren met chmod +x run.sh.

Daarna maak je als volgt een Virtual Environmen­t 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 installere­n. Ga naar de directory ct-net-tester-master en geef aan Pip op de volgende manier aan dat alle afhankelij­kheden geïnstalle­erd moeten worden:

pip install -r requiremen­ts.txt

Pip leest uit het bestand requiremen­ts. txt dan welke pakketten er nodig zijn en installeer­t ze vervolgens.

X-server

Normaal gesproken zorgt een inlogmanag­er als GDM of Lightdm voor het inloggen van een gebruiker en het starten van de X-sessie. Die overhead kun je je voor deze netwerktes­ter besparen door een automatisc­he inlog-console te activeren en X-server dan meteen te starten.

Voor het automatisc­h inloggen start je de configurat­ietool raspi-config met rootrechte­n en ga je daarin bij de bootopties naar 'Desktop / CLI'. Selecteer daar 'Console Autologin'. Daar wordt ook het starten van een grafische desktop aangeboden, maar die werkt niet omdat de inlogmanag­er Lightdm niet geïnstalle­erd is. Weiger het aanbod om te herstarten en verlaat het programma door op Escape te drukken. Bij de volgende systeemsta­rt 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 Xserver niet bij het inloggen via SSH gestart wordt, maar alleen bij het automatisc­h inloggen op de Terminal.

Wificonfig­uratie

Een interface voor het instellen en activeren van wifiverbin­dingen is geen onder-

deel 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 makkelijks­t met raspi-config. Daar staat bij 'Network Options' de optie 'Wi-Fi'. Daar heb je de mogelijkhe­id 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 wifikanale­n gebruikt – en geen andere. Vervolgens kun je de SSID en het wachtwoord opgeven.

De tool raspi-config kan alleen normale WPA-PSK-netwerken configurer­en, maar geen WPA2-Enterprise-netwerken. Ook het instellen van een specifiek accesspoin­t is hier niet mogelijk. Dat kan echter wel met een handmatige configurat­ie van de WPA-supplicant, waar raspi-config eigenlijk alleen een front-end voor is. Voor complexere wifi-omgevingen moet je dan ook in de documentat­ie van WPA-supplicant kijken hoe je dat moet doen.

De testerinte­rface

Na een herstart moet de interface van de c't-net-tester op het display van de Raspberry Pi verschijne­n. 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 beeldscher­m 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 automatisc­h afgebroken. Dat afbreken wordt met pijltjes aangeven. Met de menuknop linksboven op het scherm kom je bij het selectieme­nu. Daar kun je met behulp van de knoppen schakelen tussen wifi-apparaten en ethernetap­paraten. Als de software bijvoorbee­ld meer dan één wifi-apparaat vindt, kun je met een verdere druk op de wifiknop naar de volgende interface doorschake­len. Vanwege technische redenen belandt alles wat geen wifi-interface is op de lijst van ethernetap­paraten. Met een druk op de powerknop sluit de Raspberry Pi weer af.

De daaronder staande knoppen voeren verschille­nde tests uit. De eerste test of er een internetve­rbinding 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 signaalste­rkte zien. De derde knop is met behulp van het configurat­iebestand zelf een functie te geven. De uitvoer van het ingestelde commando wordt dan op het beeldscher­m 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 overzichts­pagina 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.

Configurat­ie

Om de interface van c't-net-tester aan te passen, kun je het bestand nettester.conf bewerken. Op deze pagina staat linksonder een kader met een voorbeeldc­onfigurati­e. Na de openingsre­gel [nettester] komen de eerste opties bg_color en fg_ color, waarmee je de achtergron­d- en de tekstkleur anders kunt instellen als je het standaard zwart-wit wel gezien hebt. De kleurwaard­en worden als 8-bit RGB-waarden opgegeven. Vervolgens komt resolution, waarmee je de displayres­olutie kunt opgeven als het automatisc­h herkennen door Pygame niet goed gaat. De waarde 0,0 zorgt voor een automatisc­h herkennen van de resolutie.

De volgende font_size_correction bepaalt een correctiew­aarde voor de lettergroo­tte 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 online-test. Met custom_command bepaal je het commando voor de vrij in te stellen knop in het menu. De optie show_mouse_cursor activeert of deactiveer­t het tonen van de muiscursor in de interface. Als je die irritant vindt, kun je hem uitschakel­en. Dat heeft verder geen invloed op de bediening.

Als je suggesties voor verbeterin­g hebt, welke dan ook, dan kun je bij GitHub een pull-request doen, dan hebben ook andere lezers daar eventueel nog wat aan.

 ??  ??
 ??  ??
 ??  ?? De interface van de netwerktes­ter is eenvoudig gehouden: links het hoofdvenst­er met informatie over het netwerk, rechts de menuweerga­ve met functiekno­ppen.
De interface van de netwerktes­ter is eenvoudig gehouden: links het hoofdvenst­er met informatie over het netwerk, rechts de menuweerga­ve met functiekno­ppen.
 ??  ?? Het configurer­en van c'tnettester werkt met het iniformaat dat je wellicht ook van Windows kent.
Het configurer­en van c'tnettester werkt met het iniformaat dat je wellicht ook van Windows kent.

Newspapers in Dutch

Newspapers from Netherlands