Netwerkbeheer met Linux

ArticleCategory:

System Administration

AuthorImage:

[Foto van de Auteur]

TranslationInfo:

original in en David Guerrero 

en to nl Tom Uijldert

AboutTheAuthor:

Abstract:

Dit is een artikel uit het Linux Journal. Het is opnieuw uitgebracht en vertaald met toestemming van de auteur.

Bruikbare hulpmiddelen voor het beheer van huidige - alomtegenwoordige - netwerken.

ArticleIllustration:

[Illustratie]

ArticleBody:

Inleiding

Tegenwoordig draait het in de automatisering steeds meer om netwerken. Dit heeft het werk van de systeembeheerders aanzienlijk verzwaard. Doel is nu om de beschikbaarheid van apparatuur zoals routers, hubs, servers en andere belangrijke apparatuur in het netwerk te garanderen.

Er zijn veel redenen voor beheerders om netwerkapparatuur in de gaten te houden: goed gebruik van de bandbreedte, status van verbindingen, flessenhalzen, problemen met bekabeling of met routering tussen apparatuur enz. Het in de gaten houden van de netwerkactiviteit is ook een goed startpunt voor het detecteren van beveiligingsproblemen en misbruik.

In veel gevallen bevat het netwerk van een organisatie dure verbindingen naar de buitenwereld (WAN; Wide Area Network) of naar het Internet. De kosten hiervan zijn gebaseerd zijn op het volume van de getransporteerde data. Het is heel belangrijk om statistieken bij te houden over de hoeveelheid verkeer die over deze verbindingen gaat. Dit is een normale taak in Europa, waar X.25-verbindingen nog steeds veel worden gebruikt. De kosten worden gebaseerd op het aantal verzonden en ontvangen pakketten.

Andere verbindingstypen, zoals Point-to-Point of Frame Relay, kennen meestal een vaste prijs. Hierbij garandeert de telecomaanbieder een bepaalde bandbreedte, waarbij het dus belangrijk is om die in de gaten te houden.

Aan het eind van dit artikel behandelen we een hulpmiddel dat is gemaakt om netwerkverkeer in de gaten te houden op router-koppelingen, met een uitstekende grafische weergave van deze informatie. Het kan eenvoudig worden aangepast om ook andere informatie in de gaten te houden.

Wat is SNMP?

De oplossing voor al deze behoeften is te vinden in het Simple Network Management Protocol (SNMP). Dit protocol, ontworpen in de jaren '80, had aanvankelijk als doel het beheer van verschillende typen netwerken te integreren in een eenvoudig ontwerp met een minimale netwerkbelasting.

SNMP werkt op applicatieniveau en gebruikt TCP/IP als transportprotocol zodat het de onderliggende netwerkhardware niet hoeft te zien. Dit betekent dat de management-software gebruik maakt van IP en dus apparaten kan aansturen op ieder aangesloten netwerk (en niet alleen apparaten die zijn aangesloten op het eigen netwerk). Dit heeft ook zijn nadelen: indien de IP- routering tussen twee apparaten niet werkt dan kan het apparaat in kwestie dus ook niet worden benaderd, bijvoorbeeld voor een herconfiguratie.

De SNMP-architectuur kent twee belangrijke elementen: de agent en de manager. Het is een client-server-architectuur, waarbij de agent de server is en de manager de client.

De agent is een programma dat op ieder beheerd apparaat in het netwerk draait. Het koppelt alle specifieke zaken van een apparaat die geconfigureerd kunnen worden. Deze zaken worden opgeslagen in een Management Information Base (MIB), waarover later meer. Dit is de serverkant, voor zover het de informatie over de configuratie vasthoudt en wacht op het uitvoeren van commando's voor de client.

De manager is het programma dat draait op het beheersconsole van het netwerk. Het is de taak van de manager om contact te leggen met de diverse agents in het netwerk en waarden op te vragen van de specifieke interne data van een apparaat. Dit is de clientkant van de communicatie.

Er is een apart commando binnen SNMP, trap geheten, dat een agent in staat stelt om ongevraagd data te versturen naar de manager om deze op de hoogte te stellen van gebeurtenissen zoals een fout of het stoppen van een apparaat.

SNMP is in essentie een heel simpel protocol zolang alle bewerkingen worden beperkt tot het model van opvragen en opslaan, waarvoor eigenlijk maar een paar commando's nodig zijn. Een manager kan slechts twee bewerkingen op een agent uitvoeren: het opvragen van waarden en het laten opslaan van waarden in de MIB van de agent. De twee bewerkingen staan ook wel bekend als get-request en set-request. Er is een commando als antwoord op het get-request en dat is de get-response die alleen door een agent kan worden gegeven.

De uitbreidbaarheid van het protocol is direct gerelateerd aan het vermogen van de MIB om nieuwe grootheden op te slaan. Als een fabrikant nieuwe bewerkingen toe wil voegen aan bijvoorbeeld zijn router, dan moet hij de betreffende grootheden opslaan in zijn database (MIB).

Bijna alle fabrikanten implementeren versies van SNMP-agents in hun apparaten: routers, hubs, besturingssystemen, enz. Linux is hierin geen uitzondering en op het Internet zijn dan ook vrij te verkrijgen SNMP-agents te vinden.

Omgaan met beveiliging

SNMP levert weinig ondersteuning voor autorisatiemechanismen. Het ondersteunt slechts een tweetal wachtwoorden. Het openbare wachtwoord (public) stelt beheerders in staat om waarden van grootheden op te vragen. Met het privé- wachtwoord (private) zijn deze waarden ook te veranderen. Deze wachtwoorden worden binnen SNMP ook wel communities (gemeenschappen) genoemd. Ieder apparaat dat is aangesloten op een met SNMP beheerd netwerk moet deze communities ondersteunen.

Het is gebruikelijk om een openbaar wachtwoord op "public" in te stellen en het privé-wachtwoord op "private" maar het is uiterst belangrijk om deze waarden eventueel te veranderen in overeenstemming met de beveiligingsrichtlijnen van de organisatie.

Wat is de MIB?

SNMP heeft een aparte standaard voor de data die door het protocol wordt beheerd. Deze standaard definieert de gegevens die door een netwerkapparaat worden bijgehouden en de bewerkingen die daarop mogelijk zijn. Deze gegevens zijn gestructureerd in een boomstructuur waarbij een uniek pad is gedefinieerd naar een bepaald gegeven. Deze boomstructuur wordt de Management Information Base (MIB) genoemd en wordt beschreven in diverse RFC's (Requests For Comments).

De huidige versie van de TCP/IP MIB is MIB-II en wordt gedefinieerd in RFC 1213. Het verdeelt de informatie die een TCP/IP-apparaat moet bijhouden in acht categorieën (zie tabel 1) en ieder gegeven moet in een van deze categorieën vallen.

Tabel 1. TCP/IP-Informatie
Categorie Gegeven
system Informatie over het besturingssysteem van computer of router
interfaces Informatie over netwerkkoppelingen
addr-translation Informatie over omzettingen van adressen
ip Informatie over het IP-protocol
icmp Informatie over het ICMP-protocol
tcp Informatie over het TCP-protocol
udp Informatie over het UDP-protocol
egp Informatie over het protocol van de externe gateway
De MIB-definitie van een bepaald gegeven bevat ook het datatype. Meestal zijn dit integers maar het kunnen ook strings zijn of meer complexe structuren zoals tabellen. Gegevens in de MIB noemt men objecten. Ze vormen de uiteinden van de boomstructuur in de MIB. Maar objecten kunnen meerdere grootheden (instances) bevatten zoals bijvoorbeeld een tabel. Om een waarde van een object te kunnen refereren moet dus tevens het instance-nummer worden opgeven. Indien er sprake is van slechts één grootheid binnen een object dat is dat instance 0.

Het object ifNumber bijvoorbeeld uit de categorie "interfaces" bevat een getal dat het aantal koppelingen (interfaces) weergeeft voor dit apparaat. Het object ipRoutingTable uit de categorie "ip" echter, bevat de routeringstabel van dit apparaat.

Vergeet niet om het instance-volgnummer op te geven bij het opvragen van de waarde van een object. In dit geval kan het aantal koppelingen van een apparaat worden opgevraagd met de instance ifNumber.0.

In het geval van een tabelobject zul je het laatste nummer moeten gebruiken voor het aangeven van de index in de tabel om een bepaalde instance te lokaliseren (een rij in de tabel).

Er is nog een andere standaard voor het definiëren en identificeren van MIB-variabelen met de naam Structure of Management Information (SMI). SMI schrijft voor dat MIB-variabelen moeten worden gedeclareerd in een door ISO gedefinieerde formele taal genaamd ASN.1 die de definitie en inhoud van de variabelen uniek maakt.

De ISO-benamingen zijn onderdeel van een globale naamgevingsstructuur, waarvan ook andere boomstructuren van andere standaardiseringsorganisaties onderdeel zijn. Binnen deze ISO-benamingen zit ook een aparte boomstructuur voor de MIB-informatie. In dit MIB-gedeelte zitten weer gedeelten voor objecten van alle protocollen en applicaties zodat deze informatie uniek kan worden gerepresenteerd.

Afbeelding 1 laat zien dat de TCP/IP-naamstructuur voor de MIB onder de mgmt- naamstructuur zit van het IAB. Deze hiërarchie geeft ook een nummer voor ieder niveau.

Afbeelding 1. TCP/IP-naamstructuur
Het is belangrijk te weten dat de meeste programma's de voorlooppunt (root) nodig hebben om het object in de MIB te kunnen lokaliseren. Indien de voorlooppunt niet wordt gebruikt dan neemt de software aan dat het een relatief pad is ten opzichte van .iso.org.dod.internet.mgmt.mib-2.

Op die manier kan het object ifNumber van de categorie "interfaces" als volgt worden gelokaliseerd:

	.iso.org.dod.internet.mgmt.mib-2.interfaces.ifnumber
of met zijn numerieke tegenhanger:
	.1.3.6.1.2.1.2.1
De instance kan dan worden gelokaliseerd als:
	.iso.org.dod.internet.mgmt.mib-2.interfaces.ifnumber.0
of met zijn numerieke tegenhanger:
	.1.3.6.1.2.1.2.1.0
Nieuwe MIB's kunnen aan de boom worden toegevoegd door fabrikanten (met nieuwe apparatuur) door het publiceren van de juiste RFC's.

Wat is de toekomst van SNMP?

Een nieuwe specificatie genaamd SNMPv2 is reeds in ontwikkeling. Deze verbetert de beveiligingsaspecten door mechanismen te introduceren die ingaan op privacy, identificatie en toegangscontrole. De nieuwe specificatie laat ook een meer complexe definitie van variabelen toe en introduceert een aantal nieuwe commando's. Het probleem met SNMPv2 is dat het nog geen algemeen aanvaarde standaard is zoals SNMPv1. Je moet echt zoeken naar apparatuur met SNMPv2-implementaties die gebruik maken van de nieuwe mogelijkheden. Laten we afwachten wat de toekomst ons brengen zal...

SNMP en Linux

Het meest populaire SNMP-pakket is CMU-SNMP. Oorspronkelijk ontworpen door de Carnegie Mellon University en op Linux geïmplementeerd door Jürgen Schönwälder en Erik Schönfelder. Het voldoet volledig aan de SNMPv1-standaard en bevat een aantal elementen van SNMPv2.

De distributie bevat hulpmiddelen die beheerders in staat stellen om, via commandoregels, verzoeken te versturen naar SNMP-agents. Tevens bevat het een SNMP-agent speciaal voor Linux die beheerders (ook op de eigen machine) op de hoogte kan stellen van de status van koppelingen, routeringstabellen, uptime, enz.

Een waardevolle toevoeging van CMU-SNMP is een SNMP C-koppeling die C-programmeurs in staat stelt om complexere hulpmiddelen voor beheer te bouwen, gebaseerd op de netwerkmogelijkheden van deze distributie.

De installatie op Linux is eenvoudig maar wijkt wel af van de originele CMU-distributie. De distributie bevat reeds gecompileerde versies van de beheerdershulpmiddelen, de daemon en de bibliotheek voor koppelingen.

Allereerst moet je beslissen of je de uitvoerbare versie wilt hebben of de broncode. Het pakket is eenvoudig op het Internet te vinden (zie ook de referenties aan het eind van dit artikel). De uitvoerbare versie werkt probleemloos op kernels vanaf versie 2.0 en is gebaseerd op ELF. We beschrijven hier hoe de uitvoerbare versie geïnstalleerd moet worden. Het is aan te bevelen om de distributie van een bekende site te halen om problemen met virussen, Trojaanse paarden, beveiliging enzovoorts te voorkomen.

Zet het bestand cmu-snmp-linux-3.2-bin.tar.gz in de root -directory (/) van je systeem en pak het uit middels:

$ gunzip cmu- snmp-linux-3.2-bin.tar.gz
tar de distributie vervolgens naar z'n juiste plek met:
$ tar xvf cmu- snmp-linux-3.2-bin.tar
Alles is nu naar behoren geïnstalleerd op je systeem, met uitzondering van het SNMP-agent- configuratiebestand /etc/snmpd.conf. Dit kun je aanmaken middels het script /tmp/cmu-snmp-linux-3.2/etc/installconf met de volgende opties:
$ /tmp/cmu-snmp-linux-3.2/etc/installconf -mini <wachtwoord>
waarbij het wachtwoord slaat op het openbare wachtwoord dat je wilt gaan gebruiken. Je kunt nu het nieuw aangemaakte configuratiebestand /etc/snmpd.conf gaan wijzigen. Hierin kun je de UDP-poorten wijzigen die de agent gebruikt, de variabelen systemContact, systemLocation en systemName alsmede de snelheid van je netwerkkoppeling en PPP-poorten.

De belangrijkste hulpmiddelen die je dan hebt zijn:

De agent staat in de directory /usr/sbin/snmpd.

CMU-SNMP installeert ook een MIB-bestand in /usr/lib/mib.txt. Deze kan prima worden gebruikt om na te gaan welke informatie we van een apparaat op kunnen vragen.

De agent moet tijdens opstarten worden geactiveerd en dat kan met de volgende regel in een van de opstartbestanden (bijvoorbeeld /etc/rc.d/rc.local):

	/usr/sbin/snmpd -f; echo 'starting snmpd'
Als de SNMP-agent eenmaal is opgestart kun je hem als volgt testen met de beheerdershulpmiddelen:
$ /usr/bin/snmpget -v 1 localhost public interfaces.ifNumber.0
geeft het aantal geconfigureerde koppelingen op het systeem.
$ /usr/bin/snmpwalk -v 1 localhost public system
vervolgens, geeft alle waarden in de sub-boom van de MIB (zie afbeelding 2 voor de uitvoer van dit commando).
Afbeelding 2
dragon:~$ /usr/bin/snmpwalk

usage: snmpwalk [-p <port>] host community [object-id]

dragon:~$ /usr/bin/snmpwalk  localhost public system

system.sysDescr.0 = "Linux version 2.0.24 (root@dragon) 
                     (gcc version 2.7.2) #6 Mon Nov 25 15:08:40 MET 1996"
system.sysObjectID.0 = OID: enterprises.tubs.ibr.linuxMIB
system.sysUpTime.0 = Timeticks: (39748002) 4 days, 14:24:40
system.sysContact.0 = "David Guerrero"
system.sysName.0 = "dragon "
system.sysLocation.0 = "Madrid (SPAIN)"
system.sysServices.0 = 72
system.sysORLastChange.0 = Timeticks: (39748006) 4 days, 14:24:40
system.sysORTable.sysOREntry.sysORID.1 = OID: enterprises.tubs.ibr.linuxMIB.linuxAgents.1
system.sysORTable.sysOREntry.sysORDescr.1 = "LINUX agent"
system.sysORTable.sysOREntry.sysORUpTime.1 = Timeticks: (39748007) 4 days, 14:24:40

dragon:~$
De C-koppeling staat in /lib/libsnmp.so.3.1.

De volgende hulpbestanden zijn hierbij van belang:

Zie voor meer informatie ook de man-pagina's snmp_api(3) en variables(5).

Verder is er ook een Perl-uitbreiding die eenvoudig de CMU C-koppeling aan kan spreken in Perl -scripts.

MRTG: Multi Router Traffic Grapher

MRTG, een geavanceerd hulpmiddel van Tobias Ötiker en Dave Grant, geeft een grafische representatie van de data die SNMP-agents naar de SNMP-manager sturen. Het genereert bijna zonder vertraging mooie grafische representaties in HTML en GIF van binnenkomend en uitgaand netwerkverkeer. Het abstraheert het idee over het opvragen van waarden in de MIB met een commandogestuurd hulpmiddel als CMU-SNMP. Het is het eenvoudigste en krachtigste hulpmiddel dat ik op het Internet kon vinden om mijn routers in de gaten te houden.

MRTG gebruikt een implementatie van SNMP die geheel geschreven is in Perl zodat er geen andere pakketten hoeven te worden geïnstalleerd. Het hoofdprogramma is geschreven in C om het loggen en weergeven in GIF te versnellen. Het grafische gedeelte wordt afgehandeld met behulp van de GD-bibliotheek van Thomas Boutell, auteur van de WWW FAQ.

De kracht van MRTG is zijn uitbreidbaarheid en krachtige configuratiemogelijkheden. Het is heel eenvoudig om andere dan verkeer-gerelateerde variabelen te bekijken zoals onder andere foutpakketten, systeembelasting en beschikbaarheid van modems. Het is zelfs mogelijk om gegevens van een andere bron in te voeren zodat je ook niet aan SNMP gerelateerde gegevens (zoals login-sessies) kunt bekijken.

MRTG heeft een aantal hulpmiddelen om routerkoppelingen op te vragen en op basis hiervan een configuratiebestand te genereren dat je eenvoudig kunt aanpassen aan je eigen behoeften.

Een andere interessante eigenschap van MRTG is de hoeveelheid informatie die het genereert. Voor iedere interface zijn er vier mogelijke weergavemogelijkheden: de afgelopen 24 uur, de afgelopen week, de afgelopen maand en een jaaroverzicht. Hierdoor ontstaat de mogelijkheid gegevens te verzamelen voor statistische doeleinden. Er wordt een accumulerende database bijgehouden; de gegevens die hierin worden opgeslagen worden regelmatig geconsolideerd om te voorkomen dat er te veel schijfruimte in beslag wordt genomen.

Er kan ook een overzicht worden gegenereerd met GIF-afbeeldingen die een dagelijkse samenvatting bieden van iedere routerkoppeling, zodat in één oogopslag kan worden nagegaan hoe een router ervoor staat. Zie afbeeldingen 3 en 4 voor een voorbeeld van een MRTG-overzicht en een detailoverzicht .
Afbeelding 3. Overzichtspagina koppeling Afbeelding 4. Detailpagina koppeling
Klik op de figuren om het beeld te vergroten.
Laten we eens een doorsnee installatie doen. Allereerst moet je een distributie van MRTG te pakken zien te krijgen. De laatste versie is 2.1 (zie ook de referenties aan het eind van dit artikel).

Je moet eerst de grafische bibliotheek GD installeren voordat je MRTG kunt installeren (zie de referenties). De huidige versie hiervan is 1.2 en deze zou probleemloos moeten installeren. Voer het commando make uit in de directory waar je de distributie hebt uitgepakt en als resultaat heb je dan het bestand libgd.a. Kopieer dit bestand naar /usr/local/lib en de .h-bestanden naar /usr/local/include/gd.

Daarmee is GD geïnstalleerd en klaar voor gebruik. Het is nu tijd voor het bouwen van MRTG. Pak de distributie uit en wijzig de bijbehorende ../../common/January1998/Makefile om aan te geven waar de GD-bibliotheek en de .h -bestanden zijn te vinden. Geef ook aan waar Perl 5.003 te vinden is (meestal in /usr/bin/perl of /usr/local/bin/perl). Dit gaat allemaal via de variabelen GD_LIB, GD_INCLUDE en PERL.

Bouw het hoofdprogramma met het commando $ make rateup en geef na compilatie het commando $ make substitute om het juiste padnaam aan te brengen in de Perl-scripts die door MRTG worden gebruikt.

Kopieer de volgende bestanden naar de uiteindelijke bestemming voor de programma's (zoals /usr/local/mrtg): BER.pm, SNMP_session.pm, mrtg en rateup. Hier kunnen ook de configuratieprogramma's indexmaker en cfgmaker worden neergezet.

Vergewis je ervan dat het execution bit aan staat voor alle programma's. We zijn nu klaar voor het maken van een eenvoudig configuratiebestand. Op dit moment moet je leesrechten hebben op je SNMP-router. In een Cisco-router ziet dat er als volgt uit:

access-list 99 permit 193.147.0.8
access-list 99 permit 193.147.0.9
access-list 99 permit 193.147.0.130
snmp-server community public RO 99
Hiermee geef je leesrechten aan de adressen die genoemd staan in toegangslijst 99 met "public" als wachtwoord (community). Als je wilt dat ieder apparaat in het netwerk leesrechten krijgt dan geef je het volgende:
	snmp-server community public RO
Als je een ander merk router hebt ga dan na in de handleiding hoe je SNMP-toegang kunt verlenen.

Het cfgmaker-script maakt het aanmaken van een configuratiebestand erg eenvoudig. Het enige wat je hoeft te doen is het aan te roepen met de volgende argumenten:

cfgmaker <community>@<router-host-name or IP>
Bijvoorbeeld:
cfgmaker public@mec-router.rediris.es > mrtg.cfg
Het zal iedere koppeling in je router achterhalen en een sectie in het bestand zetten met daarin details zoals het aantal koppelingen, maximumsnelheid, beschrijving etc. met daarbij wat HTML-tags voor representatie in je detailoverzicht. Het is overigens mogelijk om deze HTML-opmaak te wijzigen naar eigen smaak, taal enzovoorts. Zie afbeelding 5 voor een voorbeeld van de uitvoer voor een van mijn routers.
Figuur 5
Target[mec-router.1]: 1:public@mec-router MaxBytes[mec-router.1]: 1250000 Title[mec-router.1]: mec-router.rediris.es (mec-router.mec.es): Ethernet0 PageTop[mec-router.1]: <H1>Estadisticas del puerto Ethernet0<BR> Red del MEC (MECNET)</H1> <TABLE> <TR><TD>System:</TD><TD>mec-router.rediris.es en RedIRIS </TD></TR> <TR><TD>Maintainer:</TD><TD>david@mec.es</TD></TR> <TR><TD>Interface:</TD><TD>Ethernet0 (1)</TD></TR> <TR><TD>IP:</TD><TD>mec-router.mec.es (193.147.0.1)</TD></TR> <TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR> </TABLE>
Nu kun je voor het eerst het programma mrtg gebruiken.
$ ./mrtg mrtg.cfg
Als alles goed gaat zal het programma contact zoeken met je router, wat waarden opvragen en wat log- bestanden en GIF-plaatjes aanmaken in je huidige directory. Maak je geen zorgen over eventueel geklaag dat er een aantal bestanden niet gevonden kan worden, dit gebeurt alleen de eerste keer. Verwijder de grafieken en start het programma opnieuw. De grafiek zal het verkeer laten zien sinds de laatste keer dat je het programma hebt gestart. Het zal ook HTML-pagina's maken voor iedere koppeling.

Het wordt nu tijd om MRTG behoorlijk met je systeem te integreren. Maak allereerst een directory aan in de Document Root van je webserver (aangenomen dat je een webserver draait op dat systeem) voor de plaatsing van pagina's en grafieken die MRTG aanmaakt. Voeg het pad van deze directory toe aan het begin van je configuratiebestand met de instructie Workdir: /usr/local/web/mrtg (even aangenomen dat je Document Root in /usr/local/web staat). De volgende keer dat je MRTG opstart zal het logbestanden en grafieken aanmaken in deze directory, waarna je ze kunt bewonderen via http://jouw_systeem.domain/mrtg.

Nu wil je graag een hoofdpagina hebben voor alle koppelingen zoals weergegeven in afbeelding 3. Dit kan worden gedaan met het hulpmiddel indexmaker.

indexmaker mrtg.cfg <router-name regexp> > /usr/local/web/mrtg/index.html
Hiermee wordt een HTML-pagina aangemaakt met de dagelijkse grafieken van de koppelingen op de routers die zijn gevonden met de opgegeven reguliere expressie. Tevens zal deze links bevatten naar de detailoverzichten.

Zoals je zult begrijpen zal MRTG regelmatig moeten worden opgestart om data te kunnen opvragen van het afgelopen interval om de grafieken te kunnen aanmaken zodat de real time-illusie kan worden gehandhaafd. Dit kun je realiseren door de volgende regel in crontab aan te brengen (aangenomen dat het programma nu op zijn definitieve plaats in /usr/local/mrtg-bin/mrtg staat):

0,5,10,15,20,25,30,35,40,45,50,55 * * * * \
/usr/local/mrtg-bin/mrtg \
/usr/local/mrtg-bin/mrtg.cfg > \
/dev/null 2>&1
In een RedHat-distributie zou het volgende in /etc/crontab moeten staan:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * root \
/usr/local/mrtg-bin/mrtg \
/usr/local/mrtg-bin/mrtg.cfg > \
/dev/null 2>
Als alles nu naar behoren werkt kun je gaan experimenteren met de configuratie en de HTML-index-pagina. Een goede verbetering is het aanbrengen van een <META>-tag in de <HEAD>-sectie om de browser te dwingen de pagina iedere 300 seconden te verversen met de laatste gegevens.

Een andere mogelijke verbetering is het aanbrengen van het commando WriteExpire. Dit commando dwingt MRTG tot het aanmaken van .meta-bestanden voor HTML en GIF, waarmee onnodig cachen door proxy-servers en browsers wordt voorkomen. Om dit te laten werken moet je ook nog je Apache-server configureren (aangenomen dat je de Apache-server gebruikt) zodat deze de .meta-bestanden leest en de juiste "Expire"-headers verstuurt met het commando MetaDir in het XXXX-bestand.

Je kunt ook een kijkje nemen in het meegeleverde voorbeeldconfiguratiebestand voor andere mogelijke commando's; het is goed gedocumenteerd. Het is mogelijk de opmaak van alle plaatjes en pagina's die MRTG aanmaakt te veranderen.

Ik hoop dat je plezier hebt van het programma. Als dat zo is, stuur de makers dan een ansicht, hun adres staat op de MRTG-thuispagina.

Andere programma's

Er is een gelijkend programma genaamd Router-Stats, gemaakt door Iain Lea, maker van het vermaarde tin news reader. Router-Stats werkt zijn grafiek één keer per dag bij en laat interessante statistieken zien over belasting per uur en andere aspecten. Nadeel van Router-Stats is dat het een hoop externe programma's gebruikt om zijn werk te doen (CMU-SNMP voor het SNMP-gedeelte, GNUPLOT voor de grafieken, NetPBM voor wat grafische conversies en GIFTOOL voor de conversie naar uiteindelijke GIF-plaatjes). Zie de referenties onderaan voor een URL.

Er is nog een andere categorie software die een stap verder gaat met de netwerkbeheertaken en een complete oplossing biedt voor zowel het in de gaten houden van het netwerk als het configureren daarvan. Een dergelijke oplossing geeft ons de mogelijkheid om complete grafische schema's op te zetten van hele netwerken waarbij we alle elementen hieruit kunnen afgrazen, bepaalde configuraties kunnen controleren en meer interessante mogelijkheden.

Op dit niveau kunnen we het hebben over twee veelgebruikte commerciële pakketten, HP-OpenView van Hewlett-Packard en SunNet Manager van Sun. Deze leveren een compleet platform voor het beheer van alle apparatuur in een netwerk met prachtige grafische koppelingen. Meegeleverd worden hulpmiddelen om automatisch de configuratie van een (SNMP-)netwerk te achterhalen en databases voor het opslaan van alle opgehaalde informatie voor statistische doeleinden. Een belangrijke eigenschap van deze pakketten is de mogelijkheid om te integreren met fabrikantspecifieke software zoals Cisco's CiscoWorks, die een netwerkbeheerder in staat stelt om een database bij te houden met alle routerconfiguraties en zelfs de mogelijkheid biedt om grafisch de back panels van routers met hun connecties in de gaten te houden.

Er kleven twee nadelen aan deze producten: ze zijn alleen commercieel te verkrijgen en draaien niet op Linux. Er zijn natuurlijk ook oplossingen te verkrijgen in de Public Domain. Een van de beste producten die ik daarvoor tot nu toe gevonden heb is Scotty. Scotty is een op TCL gebaseerd pakket dat je in staat stelt om specifiek op jouw omgeving gerichte netwerkbeheer-software te ontwikkelen met gebruik van een abstracte, op strings gebaseerde koppeling (API). Het bijgeleverde pakket Tkined is een netwerk-editor die je in staat stelt een compleet raamwerk te bouwen met daarin mogelijkheden als het ontdekken van IP-netwerken, ondersteuning voor het ontwerpen van het netwerk of het zoeken naar fouten in een netwerk met behulp van SNMP en in combinatie met andere standaard-hulpmiddelen (traceroute). Scotty heeft ook nog een grafische MIB-browser die je in staat stelt MIB-informatie te onderzoeken.

Je kunt de referenties aan het eind van dit artikel bekijken voor een opgave van commerciële en publiekelijk te verkrijgen software voor netwerkbeheer.

Afronding

SNMP is een simpel en krachtig protocol dat ons kan helpen het netwerk in de gaten te houden zonder het te veel te belasten. Het is mogelijk dat de huidige ontwikkelingen de complexiteit en toepasbaarheid zullen verhogen maar dit zal onvermijdelijk leiden tot een hogere netwerkbelasting.

In dit artikel zijn we ingegaan op een aantal producten die op het Net kunnen worden gevonden. Er worden iedere dag nieuwe hulpmiddelen gemaakt. Je kunt de nieuwsgroep comp.protocols.snmp volgen om op de hoogte te blijven van de laatste ontwikkelingen.

Referenties
CMU-SNMP voor Linux:
ftp://sunsite.unc.edu/pub/Linux/system/network/admin/cmu-snmp-linux-3.2-bin.tar.gz
PERL 5-uitbreidingsmodule voor CMU-SNMP:
ftp://ftp.wellfleet.com/netman/snmp/perl5/SNMP.tar.gz
Multi Router Traffic Grapher (MRTG):
http://www.ee.ethz.ch/~oetiker/webtools/mrtg/mrtg.html
GD Grafische bibliotheek: (nodig voor MRTG)
http://www.boutell.com/gd/
Perl 5.003: (nodig voor MRTG)
http://www.perl.com/perl/info/software.html
MRTG-mailinglists:
Discussie:

mail naar mrtg-request@list.ee.ethz.ch met "subscribe" in de onderwerpregel

Aankondigingen:

mail naar mrtg-announce-request@list.ee.ethz.ch met "subscribe" in de onderwerpregel
Router Stats:
http://www.scn.de/~iain/router-stats/
SNMP Netwerk Management Software:
http://wwwsnmp.cs.utwente.nl/software/
Scotty:
http://wwwsnmp.cs.utwente.nl/~schoenw/scotty/
Scotty voor Linux:
ftp://sunsite.unc.edu/pub/Linux/system/network/admin/tkined-1.3.4+scotty-ELF.tar.gz

Meer informatie:

Lees de "Network Administration Guide"