Linux als server: Linux netwerkbeheerscommando’s
- December 12, 2017
- 0
Als er iets is dat op je server belangrijk is, dan is het wel het netwerk. Zonder netwerk werkt er namelijk helemaal niets meer! Daarom besteden we deze keer aandacht aan de meest handige commando’s, die je moet beheersen om als beheerder van een server netwerkproblemen te analyseren en op te lossen.
#1 ip
Het ip commando is enorm veelzijdig en wordt toegepast voor een breed scala aan zaken, die allemaal te maken hebben met je Linux netwerk interfaces. Het commando is heel veelzijdig, zo veelzijdig dat het werkt met subcommando’s, zoals ip link voor het beheer van de netwerklink, ip addr voor het beheer van netwerkadressen en ip route voor het werken met routing tabellen. Gebruik bijvoorbeeld ip link show, ip addr show of ip route show om de huidige status van link, netwerkadres en router te bekijken, of ga een stap verder en gebruik ip addr add dev eth0 10.0.0.10/24 om (tijdelijk) een IP-adres toe te kennen aan een netwerkkaart.
Daarnaast biedt het ip commando nog meer geavanceerde opties, zoals ip link set promisc on, waarmee je tijdelijk de netwerkkaart in promiscuous mode zet. Dit maakt het mogelijk om te sniffen op het netwerk en alle pakketjes te ontvangen (voor zover je switch dat toestaat) en niet alleen de pakketjes, die aan het eigen MAC-adres van de netwerkkaart geadresseerd zijn. Het ip commando en de bijbehorende subcommando’s zijn geweldig om issues in netwerkverbindingen op te lossen, maar houdt er wel rekening mee dat alles wat je met dit commando doet slechts tijdelijk is en weg zal zijn, nadat je je machine opnieuw gestart hebt.
#2 tcpdump
Als beheerder van een server of datacentrum, is het soms nodig om precies te weten wat er gebeurt op je netwerk. Het commando tcpdump kan daarbij helpen. Het betreft hier een packet sniffing commando, waarmee je alle pakketjes op kunt vangen en analyseren, die binnenkomen op een bepaalde interface. Als je het commando zonder argument gebruikt (zoals in tcpdump -i eth0), laat het je alle pakketjes zien, die voorbijkomen. Nog handiger is het om die pakketjes weg te schrijven naar een pcap (packet capture) bestand door gebruik te maken van de optie -w, zoals in tcpdump -i eth0 -w packets.pcap. Als het resultaat van tcpdump weggeschreven wordt naar een bestand, kun je het later analyseren met behulp van een grafische tool, zoals Wireshark.
#3 wireshark
Wireshark is meer dan een commando. Het is een grafische utility, die gebruikt kan worden om netwerkpakketjes te analyseren en te sniffen. Waar een tool als tcpdump alleen maar pakketjes dumpt op de standard output, laat Wireshark je alles netjes zien in een grafische interface. Dit programma is zeer veelzijdig. Je kunt er een life packet capture mee uitvoeren, waarbij diverse filters toegepast worden om precies dat te zien wat je wilt zien en niets meer, maar je kunt er ook een capture file mee inlezen, zoals bijvoorbeeld gemaakt met behulp van tcpdump.
#4 ethtool
Als je nog op een ouderwetse server werkt, met daarin een fysieke netwerkkaart (in tegenstelling tot een interface in een virtuele machine), kun je veel baat hebben bij ethtool. Dit programma maakt het mogelijk om verschillende eigenschappen van de netwerkkaart te bekijken en in te stellen. Gebruik bijvoorbeeld ethtool -i eth0 om hardware gerelateerde informatie te vinden over de eht0 interface, of ethtool -S eth0 om gebruikersstatistieken te bekijken. Ook best handig is ethtool -p eth0, waarmee je de LED achterop de netwerkkaart kunt laten knipperen. Dat is handig als je bijvoorbeeld de kabel op eth3 wilt wisselen, maar geen idee hebt welke fysieke kaart nu eigenlijk eth3 is. Er is wel iets om in de gaten te houden. Ook al is ethtool een handige tool, het is sterk afhankelijk van de mogelijkheden, die geboden worden door de driver en sommige drivers geven maar weinig informatie prijs.
#5 ncat
Vroeger maakten netwerkbeheerders gebruik van telnet om connectie te maken op een specifieke poort, zodat men de beschikbaarheid van die poort kon testen. Telnet is oud, onveilig en onhandig en zou niet meer gebruikt moeten worden. De moderne variant op telnet is ncat, een veelzijdig stuk gereedschap waarmee allerlei facetten van netwerken getest kunnen worden. Zo gebruik je bijvoorbeeld ncat server 80 om te kijken of je contact kunt maken met poort 80 op “server”. Daarnaast kan ncat nog veel meer.
Een bijzonder handige optie bijvoorbeeld is de optie, waarmee je het mogelijk maakt om een directe verbinding tussen twee computers te maken. Gebruik bijvoorbeeld ncat -l 4444 om het op een poort te laten luisteren, en ncat server 4444 om vanaf de client contact te maken met die poort. Als dat je nog niet overtuigt, probeer dan eens ncat te laten luisteren op een host met ncat -l 4444 > somefile en stuur daar vanaf een andere host iets naar toe, bijvoorbeeld met echo hello | ncat server 4444. Dit is een gemakkelijke manier om direct gegevens weg te schrijven, zonder dat daar een service voor nodig is.
#6 dhclient
Een heel ander type utility is dhclient. Als je op je netwerk een DHCP-server gebruikt om IP-adressen uit te delen, dan moet die wel beschikbaar zijn als een node opstart. Als dat niet het geval is, geeft de node zichzelf een IP-adres in de 169.254 reeks, maar daar heb je niet bijster veel aan. De client gaat dan niet elke vijf minuten kijken of de DHCP-server inmiddels beschikbaar is. Als dit gebeurt, biedt dhclient uitkomst. Gewoon even dit commando starten om een nieuw adres op te vragen bij de DHCP-server en je bent in no time weer operationeel.
#7 ifconfig
Tot slot moeten we het nog even hebben over ifconfig. Sommige mensen denken nog steeds dat dit dé tool is om informatie over de netwerkconfiguratie op te vragen. Niet dus, en dat is al meer dan 10 jaar zo. Ifconfig is deprecated en je moet het niet meer gebruiken. In networking is veel veranderd en om mee te gaan met die veranderingen is de ip tool ontwikkeld. Ifconfig is niet mee veranderd en kan daardoor de relevantie informatie niet meer laten zien.
Niet overtuigd? Probeer dan het volgende. Om te beginnen type je ip addr add dev eth0 10.0.0.10/24 om een tijdelijk IP-adres in te stellen op eth0. Vervolgens gebruik je ip addr show om aan te tonen dat dit IP-adres inderdaad in gebruik is en ping 10.0.0.10 waarmee je bewijst dat je er zelfs ook contact mee kunt maken. Kijk nu eens met ifconfig. Je zult het niet zien en er is geen enkele manier waarop je het wel zichtbaar kunt maken. Zoals gezegd, ifconfig is deprecated en gelukkig is het nu eindelijk zover dat sommige distributies het niet meer meeleveren. Niet meer gebruiken dus!