Je favoriete Linux distributie zet tijdens installatie een netwerkverbinding op. Veelal werkt alles daarna naar verwachting. Toch kan het tegenzitten, zeker als je een thuisnetwerk opzet. Dan moet je de handen uit de mouwen steken en netwerkproblemen zelf oplossen. In eerste instantie lijkt het ingewikkeld, maar als je enkele beheertools kent, valt het vaak best mee. We laten enkele veel gebruikte tools hier voorbij komen.

Er bestaat geen standaard recept waarmee je alle netwerkproblemen oplost. Maar door systematisch met de hieronder beschreven tools aan de slag te gaan, vind je meestal snel de oorzaak. Dan is de oplossing ook meteen een stuk dichterbij, omdat je weet in welke hoek je moet zoeken.

Voordat je het netwerk verdenkt, moet je eerst vaststellen of je eigen netwerkinterface wel werkt. Zonder functionerende netwerkkaart stopt alles natuurlijk. Haal een lijst van netwerkinterfaces op met het commando ip: 

ip link

Namen van ethernetkaarten starten met ‘en’, terwijl dat voor wireless ‘wl’ is. Als hier je netwerkinterface niet tussen staat, hoef je niet verder te zoeken. Dan is er bijvoorbeeld iets met je driver aan de hand.

WLAN

In geval van wifi is allereerst verbinding met het access point nodig. Dat heet associatie. Draadloze routers en modems hebben een geïntegreerd access point. Gebruik het commando iwconfig: 

iwconfig wlp110s0

In dit voorbeeld heet de netwerkinterface ‘wlp110s0’. Als achter ‘ESSID’ geen netwerknaam staat, geef die dan eerst op. Daarvoor gebruik je het SSID van je access point:

sudo iwconfig wlp110s0 essid <SSID>

Maak dan een configuratiebestandje:

wpa_passphrase <SSID> <my_key>  > my_wpa.conf 

Gebruik voor <my_key> de sleutel van jouw access point. Associeer tenslotte met het access point:

sudo wpa_supplicant -i wlp110s0 -c my_wpa.conf

Als de associatie niet lukt, controleer dan of je access point bijvoorbeeld MAC filtering toepast die alleen bepaalde apparaten toestaat om connectie te maken.

Adres

Controleer vervolgens of de netwerkinterface een IP-adres heeft:

ip address show dev wlp110s0 

Achter ‘inet’ vind je het IP-adres. Is er geen ‘inet’ informatie, dan heb je evenmin netwerkverbinding. Geef in zo’n geval handmatig een IP-adres op:

sudo ip address add 192.168.2.42 dev wlp110s0

Als dat werkt, dan is er bijvoorbeeld een probleem met het automatisch krijgen van een IP-adres door middel van DHCP.

Route

Behalve een IP-adres is ook een correcte routering nodig. Als je een IP-adres niet kunt benaderen, controleer als volgt of een route naar dat adres bekend is. We doen dat hier voor 192.168.2.1:

ip route get to 192.168.2.1

Als je hier de melding “Network is unreachable” krijgt, dan weet de kernel niet waar hij met het pakketje heen moet. Haal dan de lijst met routes op: 

ip route

Per netwerkinterface zie je welk netwerk via die interface bereikbaar is. Voor alle overige pakketten dient de default route, ook gateway geheten. Voeg ontbrekende routes toe. Voor je eigen netwerk is dat:

sudo ip route add 192.168.2.0/24 dev wlp110s0

Voor de default route doe je dat als volgt:

sudo ip route add default via 192.168.2.1 dev wlp110s0

Als dit werkt, dan speelt mogelijk een probleem met DHCP.

Test verbinding

Als je eigen netwerkkaart actief is en de routering lijkt in orde, dan is ping wel het meest gebruikte commando om een verbinding te testen: 

ping 192.168.2.1 

Je ziet per verzonden pakket hoe lang het duurde om antwoord te krijgen. Als je meldingen krijgt met ‘Host Unreachable’, wil dat nog niet zeggen dat er iets mis is met je netwerkconfiguratie. Mogelijk blokkeert een firewall of router ping pakketten. Het commando tracepath is slimmer en geeft meer informatie:

tracepath 192.168.2.1

Je ziet via welke routers het pakket zijn weg aflegt. Toch kan ook hier een firewall of router een goed functioneren van tracepath hinderen. Daardoor lijkt het dan alsof pakketten niet verder kunnen reizen. Als pakketten voorbij je eigen router komen, weet je in ieder geval wel dat je eigen netwerk niet het probleem is.

Poorten

Als een machine wel benaderbaar is met ping, maar toch geen verbinding met een bepaalde server mogelijk is, test dan of de betreffende poort open staat. Zo test je bijvoorbeeld of SSH poort 22 open staat: 

sudo nmap -p 22 192.168.2.1

Gebruik in geval van UDP de volgende variant, bijvoorbeeld om poort 53 van een DNS server te controleren:

sudo nmap -s U -p 53 192.168.2.1 

Als de server bereikbaar is, zie je onder STATUS ‘open’ staan. In geval van ‘closed’ is de poort gesloten, maar je weet tevens dat in principe wel verbinding mogelijk is. De SSH server is dan wellicht down. Als je ‘filtered’ ziet, dan houdt een firewall een goede detectie tegen. Het is dan niet verwonderlijk dat de server onbereikbaar is.

Om interactief een netwerkverbinding te leggen is het commando ncat handig. Zo open je een verbinding met de SSH server als volgt: 

ncat 192.168.2.1 22 

Tik enkele willekeurige tekens in en druk op enter. Zo test je eenvoudig of er response is. Bij sommige protocollen is het zelfs mogelijk om op deze manier handmatig een volledige sessie uit te voeren. Zo kun je in geval van SMTP interactief met de mailserver een mail versturen.

Om te controleren of op de SSH server pakketten op poort 22 binnen komen, gebruik je ncat als volgt. Eerst stop je de SSH server en vervolgens tik je in: 

sudo ncat -l 22 

Nu luister je op poort 22. Door ncat op deze manier op twee machines te gebruiken, test je of communicatie mogelijk is. Als dat werkt, dan ligt de oorzaak bijvoorbeeld in de server configuratie.

Namen

Als een server niet via zijn naam te bereiken is, vormt mogelijk de resolver een probleem. Die zoekt bij een naam het bijbehorende IP-adres. Controleer of dat functioneert met het commando host: 

host google.nl

Als de resolver correct werkt, zie je in de eerste regel het gevonden IP-adres. Zo niet, dan krijg je een foutmelding of time-out. Check dan de inhoud van het volgende bestand:

/etc/resolv.conf

Als daar geen name server bij staat, dan speelt bijvoorbeeld een DHCP probleem. Als je wel een name server ziet, benader deze dan rechtstreeks met het commando dig. We gebruiken hier 192.168.2.1 als name server:

dig @192.168.2.1 +short google.nl 

De optie +short voorkomt dat je overstelpt wordt met informatie. Als er geen IP-adres verschijnt, dan is de DNS server het probleem.

Analyse

Om netwerkpakketten te analyseren, is tcpdump nog steeds populair. Om de inhoud van alle pakketten te tonen die op netwerkinterface wlp110s0 binnen komen, gebruik je het als volgt:

sudo tcpdump -i wlp110s0 

Zeker op een router of firewall krijg je heel veel informatie over je heen. Gebruik bijvoorbeeld de opties host en port om de hoeveelheid gegevens te beperken. Makkelijker in gebruik is Wireshark. Die heeft behalve een command line interface ook een GUI. Bovendien kan Wireshark de uitvoer van tcpdump inlezen, zodat je de uitvoer daarvan rustig kunt uitpluizen.

Wireshark aan het werk

Tot slot

Er staan heel wat tools tot je beschikking om netwerkproblemen op te lossen. De hierboven genoemde zie je veelvuldig in de praktijk, maar er zijn er nog veel meer. Het moet heel gek lopen, wil je voor een bepaald probleem geen passend hulpmiddel vinden.

Links

iproute – kernel.org/pub/linux/utils/net/iproute2

wireless-tools –hewlettpackard.github.io/wireless-tools/Tools.html

iputils -github.com/iputils/iputils

Nmap – nmap.org

bind-utils – isc.org/downloads/BIND

tcpdump – tcpdump.org

Wireshark – wireshark.org