Linux is van nature altijd al erg goed geweest in networking en het ondersteunen van allerlei netwerkprotocollen. De Linux-beheerder doet het op de command line. Het aantal – al dan niet geïnstalleerde – netwerk commando’s is enorm.

Door: Marcel Beelen

Hier zijn een tiental veelgebruikte Linux-opdrachten voor troubleshooting van netwerken. De meeste ervan zijn op alle distro’s aanwezig. Elke commando heeft, zoals Linux eigen is, vele tientallen tot wel honderd opties en argumenten, dus je zult in de man page moeten kijken voor de details. In alfabetische volgorde.

arp

Het arp commando kijkt naar en past de Address Resolution Protocol tabel in de kernel van Linux aan. Deze tabel bevat IP-adressen en MAC-adressen en wordt gebruikt om bij het verbinden naar een IP-adres het eventueel bekende MAC-adres op te zoeken. De ARP-tabel wordt gevuld doordat de eerste keer een broadcast wordt gedaan op het netwerk om het IP-adres te vinden. Standaard worden de hostnamen getoond, maar met arp -n zie je de IP-adressen. Soms is het nodig een systeem te verwijderen waar je verbindingsproblemen mee ervaart. Je doet dat met arp -d gevolgd door het MAC-adres van het systeem dat je wilt verwijderen.

ifconfig of if

Misschien is ifconfig wel de meest gebruikte netwerkopdracht op de command line. Met ifconfig configureer je netwerkinterfaces op  je Linux systeem. Zo configureer je bijvoorbeeld het IP-adres of zet je een netwerkinterface aan of uit. Standaard geeft ifconfig  je het ingestelde IP-adres, netmask en broadcastadres, het MAC adres, de MTU (Maximum Transmission Unit) en meer voor elke netwerkinterface. Deze laatste is standaard altijd 1500. Om de gegevens van een specifieke netwerkinterface te bekijken, voeg je de naam van de interface toe als argument: ifconfig eth0 of ifconfig lo (de laatste voor de loopback interface). Als je een IP-adres of andere instelling wijzigt met ifconfig eth0 192.168.0.222 netmask 255.25.0.0 is dit overigens na de herstart weer verdwenen. Tijdelijk uitschakelen van een interface doe je met ifconfig eth0 down en inschakelen met ifconfig eth0 up. Ook werkt ifup eth0 en ifdown eth0. De meesten kennen ifconfig wel. De opvolger van ifconfig heet simpelweg ip. Als je al jaren met ifconfig werkt is ip even wennen. Vergelijkbare uitvoer als standaard ifconfig vraag je op met ip a of ip addr. Om gegevens van een specifieke interface op te vragen, gebruik je ip a show eth0. De wat lastige opties en argumenten vraag je op met simelweg ip.

iPerf

Met iPerf bekijk je de netwerkperformance tussen twee systemen door data van de ene naar de ander host te versturen. iPerf toont dan onder meer de beschikbare bandbreedte. Je installeert het commando met sudo apt install iperf op beide systemen. Op het ene systeem start je de server met iperf -s en op de andere gebruik je iperf -c 134.188.0.240 om in dit voorbeeld de bandbreedte tussen de server en het systeem met het genoemde IP-adres te meten.

netstat of ss

Het commando netstat geeft je netwerkstatistieken over de verschillende sockets, routeringstabellen en verbindingen. Met netstat -p zie je de open sockets met bijbehorende applicaties, netstat -r toont routeringsgegevens en netstat -i toont de interfaces. Het commando ss is de gewaagde opvolger van netstat. Ss is wat sneller omdat het gegevens uit de kernel leest. De optie -a toont de actieve sockets en met -t, -u of -x bekijk je de TCP, UDP of UNIX sockets, dus ss -ta, ss -ua of ss -xa.


nslookup of dig

Met nslookup zoek je naar DNS-gerelateerde gegevens. Zo toont nslookup ubuntu.com de IP-gegevens van dit domein (in dit geval zijn het vier IP-adressen). Het commando dig volgt nslookup op. Het is de afkorting voor Domain Information Groper en wordt ook gebruikt om DNS-gegevens op te zoeken. Je zoekt met dig ubuntu.com MX de MX-records van de mailserver op.


ping

Ook ping wordt zeer veel gebruikt en is de eerste handeling om netwerkproblemen te analyseren. Met ping controleer je of er een netwerkverbinding tussen twee systemen te maken is. Ping stuurt ICMP echo request en blijft dat doen tot het commando wordt afgebroken. Zo test ping ubuntu.com of we verbinding hebben met Ubuntu. Krijg je geen verbinding, dan kan DNS uit de lucht zijn en kun je proberen te pingen naar het IP-adres (als je dat weet). Sommige servers blokkeren ping. Wil je het aantal pings beperken, gebruik dan ping -c ubuntu.com.

route

Het route commando toont de bestaande routeringstabel op je systeem. Je kunt er ook zelf routeringen mee toevoegen en verwijderen als er iets aan de hand is. De default gateway handelt de routeringsverzoeken af die buiten het actuele netwerk liggen. Je voegt bijvoorbeeld een route met de hand toe, met route add default gw 192.168.50.254

Tcpdump

Het commando tcpdump luistert op het systeem en vangt alle netwerkverkeer af dat via de netwerkkaart gaat en toont dit. Heb je meer netwerkinterfaces, dan lees je het verkeer over een specifieke interface zoals eth0 met tcpdump -i eth0. Hier achter zou je als optie meteen kunnen filteren op tcp-verkeer met tcpdump -i etho tcp of bijvoorbeeld op verkeer via een specifieke poort tcpdump -i eth0 port 8080. Tcpdump blijft luisteren totdat je het zelf beëindigt.

traceroute of tracepath

Met traceroute ben je in staat netwerkpakketjes te volgen over het netwerk en internetwerk. Je ziet langs welke systemen het netwerkpakket gaat voordat het de bestemming bereikt en je ziet tevens waar het pakketje vertraging oploopt (het is dus een maat voor latency). Het commando is handig voor troubleshooting. Je installeert traceroute op Ubuntu en Mint met sudo apt-get install traceroute. Zo zie je met traceroute ubuntu.com de route naar het Ubuntu IP-adres. Je ziet de hostnaam, de grootte van de pakketjes, het aantal hops dat nodig is geweest en IP-adressen. Mocht je asterisk-tekens zien (*  *) dan betekent dit niet per se dat de server niet bereikt is of er een time out is. Hoogstwaarschijnlijk worden de UDP-pakketten niet doorgelaten. Met traceroute -I ubuntu.com heb je dan meer succes, dan worden ICMP-pakketjes verstuurd. Met traceroute -T ubuntu.com stuur je TCP-pakketten, maar dan zie je de gehele route niet. Op Ubuntu heb je standaard tracepath, deze is minder geavanceerd maar vereist geen root-privileges.

whois

Whois is niet altijd aanwezig, dus misschien moet je dit commando eerst installeren (sudo apt-get install sudo). Whois toont alle beschikbare informatie van een website, bijvoorbeeld op welke datum deze is geregistreerd. Gebruik is simpel: whois ubuntu.com