In de meeste desktopomgevingen vind je een “netwerk”-icoontje met een overzicht van beschikbare services in jouw netwerk. Ontbreekt die functionaliteit in jouw favoriete bestandsbeheerder? Gebruik dan de volgende commandline-tools om netwerkservices op te sporen.

1. Avahi
Vroeger moest je het IP-adres van een machine kennen om gebruik te maken van diens netwerkservices. Twee protocollen hebben daar echter verandering in gebracht: Multicast DNS en DNS-based service discovery. Met mDNS en DNS-SD laat elke machine in het netwerk weten welke services hij aanbiedt en op welk IP-adres hij bereikbaar is. Apple verzorgde met Bonjour de eerste implementatie van die protocols en niet veel later volgde Avahi voor Linux. Avahi is standaard geïnstalleerd in de meeste distributies.

2. avahi-browse
Het commando “avahi-browse -at” toont een beknopt overzicht van beschikbare machines en services in het netwerk. Wil je meer informatie, zoals de IP-adressen en poortnummers? Voeg dan de optie ‘-r’ toe. Op basis van die output kun je verbinding proberen te maken met de services, die je interesseren. Is avahi-browse niet beschikbaar op jouw systeem? Installeer dan het pakket ‘avahi-utils’.

3. SSDP
Simple Service Discovery Protocol is een ander protocol om netwerkservices kenbaar te maken. Het wordt met name gebruikt in apparaten, die Univeral Plug and Play ondersteunen en het is gebaseerd op het HTTP-protocol. SSDP is vooral nuttig om services te zoeken op een Windows-computer, een mediaplayer, een NAS, enzovoorts. Installeer het pakket ‘gupnp-tools’ en voer het commando:
 
gssdp-discover -i eth0

uit om te controleren welke devices in jouw netwerk UPnP ondersteunen. (Vervang ‘eth0’ door ‘wlan0’ als je een draadloze verbinding gebruikt.) In de output krijg je verschillende types apparaten te zien, zoals een MediaServer of een MediaRenderer. Dat zijn de apparaten, die respectievelijk mediabestanden aanbieden (bijvoorbeeld een NAS) of afspelen (bijvoorbeeld een mediaplayer).

4. UPnP-apparaten browsen
De output van gssdp-discover bevat een groot aantal links naar XML-bestanden. Die bevatten nuttige informatie voor de configuratie van UPnP-apparaten, maar zelf heb je er weinig aan. Wellicht wil je vooral weten welke mediabestanden beschikbaar zijn in je netwerk. Daarvoor gebruik je gupnp-av-cp, een eenvoudige controller om UPnP-devices aan te sturen. Dit is geen commandline applicatie, maar we vermelden het toch even, omdat het ook deel is van het pakket gupnp-tools. Om mediabestanden af te spelen zijn er betere alternatieven, maar gupnp-av-cp volstaat om snel door een MediaServer te browsen.

5. Hosts zoeken
Met Avahi en SSDP vind je al veel services, maar beide protocols hebben één nadeel: je vindt er alleen apparaten mee, die zichzelf kenbaar (willen) maken. Je kunt natuurlijk ook de zaken omdraaien en actief op zoek gaan naar machines en services in je netwerk. Een handige tool daarvoor is nmap, te installeren via het gelijknamige pakket. Met nmap breng je je volledige netwerk in kaart. Je begint bijvoorbeeld met het volgende commando:

nmap -sn 192.168.1.0/24
nmap voert nu een ping scan uit en toont bijna onmiddellijk het IP- en MAC-adres van elk apparaat in je netwerk. Indien mogelijk krijg je zelfs de fabrikant van (de netwerkkaart van) elk device te zien. Bijvoorbeeld:

Nmap scan report for 192.168.1.7
Host is up (0.0041s latency).
MAC Address: B8:27:EB:B8:8F:B7 (Raspberry Pi Foundation)

6. Services zoeken
nmap beschikt over erg uitgebreide mogelijkheden om services op te sporen. Via een zogenaamde port scan weet nmap namelijk prima welke services een machine aanbiedt. Probeer maar eens het volgende commando voor één van de IP-adressen die je in tip 4 gevonden hebt:

nmap -A -T4 192.168.1.7

nmap toont nu een overzicht van alle actieve services met het poortnummer en versie-informatie. Afhankelijk van het type service weet nmap zelfs nog meer informatie over de precieze configuratie op te vragen.