# MRTG: Traffic eines Routers mit SNMP User ermitteln



## GalaxyWarrior (24. April 2006)

Hallo, ich hoffe die Überschrift ist versändlich 
Ich möchte über eine Linux Kiste den Traffic mehrerer Router auswerten. Zum testen wollte ich es erstmal mit einem versuchen, doch das funktioniert schon nicht ^^.

Mein cfgmaker Befehl sieht so aus:


```
./cfgmaker --global 'WorkDir: /var/www/mrtg' --global 'Options[_]: bits,growright' --global 'Htmldir: /var/www/mrtg' --global 'Imagedir: /var/www/mrtg/images' --global 'Logdir: /var/www/mrtg/logs' --output /var/www/mrtg/mrtg-2.13.2/cfg/mrtg.cfg xxx.xxx.xxx.xxx
```

Beim ausführen bekomme ich


```
SNMP Error:
no response received
SNMPv1_Session (remote host: "xxx.xxx.xxx.xxx" [xxx.xxx.xxx.xxx].161)
                  community: "public"
                 request ID: 126422341
                PDU bufsize: 8000 bytes
                    timeout: 2s
                    retries: 5
                    backoff: 1)
 at /usr/var/www/mrtg/mrtg-2.13.2/bin/../lib/mrtg2/SNMP_util.pm line 627
SNMPWALK Problem for 1.3.6.1.2.1.1 on public@xxx.xxx.xxx.xxx::::::v4only
 at mrtg-2.13.2/bin/cfgmaker line 916
WARNING: Skipping public@xxx.xxx.xxx.xxx: as no info could be retrieved
```

Auf dem Router läuft SNMP aber. Allerdings muss man sich dafür auf dem Router einloggen. Aber wie übergebe ich dem cfgmaker denn Username und Passwort? Ich habe schon  bemüht und auch auf der Hompage nachgelesen, werde daraus aber nicht schlau 

Vieleicht kann mir einer erklären wie ichs mache.

Gruß GalaxyWarrior


----------



## Dennis Wronka (25. April 2006)

Du kannst die berechtigte Community vor dem Hostnamen uebergeben.
Ungefaehr so: community@snmphost

Standard-maessig ist die Community public, was in der Regel aber wo oben gezeigt geaendert werden muss. Ob ein Passwort noetig ist weiss ich nicht, und auch nicht wie das angegeben wird.
Moeglicherweise wie bei HTTP und FTP: communityasswort@snmphost


----------



## GalaxyWarrior (25. April 2006)

Danke schonmal für die Antwort. Hat zwar nicht geklappt, aber naja ^^. Fragt sich nur obs jetzt an der Firewall liegt oder an dem nicht / an falscher Stelle eingegebenen Passwort.

Gruß GalaxyWarrior


----------



## Dennis Wronka (25. April 2006)

Kannst Du den grundsaetzlich auf UDP/161 des entsprechenden Rechners zugreifen? Wenn nicht koennte da eine Firewall im Weg sein.


----------



## GalaxyWarrior (25. April 2006)

Also, das scannen der Ports ist nicht gestattet ^^ somit kann ich das nicht sagen. Naja, dann muss das wohl bis morgen warten, wenn Cheffe wieder da is ^^. Muss ich wohl nachher mal en Roter lokal testen ob das mit dem Passwort so geht.

Danke nochmal


----------



## Dennis Wronka (25. April 2006)

Inwiefern ist das Scannen nicht gestattet?
Der Rechner blockiert Port-Scans? Die Admins verteilen bei Port-Scans Ohrlaschen? Oder was ist?
Ausserdem willst Du ja nur wissen ob ein einziger Port erreichbar ist, dementsprechend wuerde es wohl niemandem auffallen wenn Du gezielt diesen abfragst.
Ein Port-Scan wird ja daran erkannt dass in schneller Abfolge von der gleichen IP zu verschiedenen Ports an einem Rechner verbunden werden.

```
nmap -sU -P0 -p 161 xxx.xxx.xxx.xxx
```


----------



## GalaxyWarrior (25. April 2006)

Das Problem ist, dass der Befehl nmap verboten / dektiviert ist ^^


----------



## Dennis Wronka (25. April 2006)

Also Du hast technisch keine Moeglichkeit nMap zu nutzen? Oder einfach nur weil die Admins Angst davor haben?
Ansonsten gaebe es noch HPing2 oder auch die Moeglichkeit PHP zu nutzen.
aMap gibt es dann auch noch.
Also es gibt schon einige Moeglichkeiten einen Port anzusprechen.


----------



## GalaxyWarrior (25. April 2006)

So, jetzt hab ich ein nMap gemacht ( ich will weiter nix zu sagen, war en zimlich blöder Fehler meinerseits  ) Ergebnis:


```
Port       State       Service
161/udp    open        snmp
```

Also scheint es nicht an der Firewall zu liegen. Dann ma weiter mit Username und Passwort spielen ^^


----------



## Dennis Wronka (25. April 2006)

Nutzt der Server SNMPv3?
MRTG nutzt glaub ich standardmaessig v1 oder v2, die von Dir gepostete Fehlermeldung deutet auf v1 hin.
In der Man-Page zum CFGMaker seh ich, dass es bei v3 auch User-Authentication gibt. Bei CFGMaker kommen dazu wohl die Parameter --username und --authpasswort zum Einsatz.


----------



## GalaxyWarrior (25. April 2006)

Hab jetzt erstmal das Passwort des SNMP Users auf den Router entfernt, und die cfg mit 

```
./cfgmaker --global 'WorkDir: /var/www/mrtg' --global 'Options[_]: bits,growright' --global 'Htmldir: /var/www/mrtg' --global 'Imagedir: /var/www/mrtg/images' --global 'Logdir: /var/www/mrtg/logs' --output /var/www/mrtg/mrtg-2.13.2/cfg/mrtg.cfg --username uname xxx.xxx.xxx.xxx
```

erstsellt. Ergebnis 


```
Undefined subroutine &main::snmpmapOID called at ./cfgmaker line 1480.
```

was willern nun ^^ Fehler im Programm, zumindest siehts für mich so aus


----------



## Dennis Wronka (25. April 2006)

Hoert sich fuer mich auch erstmal danach an.
Welche MRTG-Version nutzt Du? Mit welcher Perl-Version? Ist diese komplett? Vielleicht fehlt ja auch irgendein wichtiger Teil in Perl oder ein Modul welches der MRTG will.


----------



## GalaxyWarrior (25. April 2006)

Ich habe Perl 5.6.1 ( laut Homepage brauch ich mindestens 5.005 ) und die neuste Stable Release von MRTG. Ich kann ja ma PERL neu installieren. Vieleicht gehts dann.

EDIT: Neues Perl , selbes Ergebnis

Ich bin mir nicht sicher, aber muss man vieleicht dem MRTG, bzw dem cfgmaker sagen, dass er SNMPv3 benutzen soll? Vieleicht ist das der Grund warum er nicht nicht auf die subroutine zugreifen kann, weil er immernoch von der falschen SNMP Version ausgeht.

Noachmal Edit ^^:

Habe jetzt mit 


```
./cfgmaker --global 'WorkDir: /var/www/mrtg' --global 'Options[_]: bits,growright' --global 'Htmldir: /var/www/mrtg' --global 'Imagedir: /var/www/mrtg/images' --global 'Logdir: /var/www/mrtg/logs' --output /var/www/mrtg/mrtg-2.13.2/cfg/mrtg.cfg xxx.xxx.xxx.xxx:::::3
```

auf SNMPv3 geschaltet. Ohne --username kommt


```
SNMP V3 requires a --username parameter as part of the User Security Model for router public@xxx.xxx.xxx.xxx:::::3 at ./cfgmaker line 121.
```

mit --username blablubb kommt der altbekannte Fehler :-(

Und nochmal ^^:

Jetzt habe ich das auf 3 verschiedenen Linux Kisten getestet, 2 hier und auf meinem eigenen Server. Nirgendwo funktioniert die SNMPv3 verbindung,  überall der selbe Fehler. Ich gehe mal davon aus, dass das tatsächlich ein bug ist. Auch mit einer Älteren Version bekam ich diesen Fehler. Die getesteten Rechner verwenden Debian bzw SuSE


----------



## Dennis Wronka (25. April 2006)

Ist vielleicht Net-SNMP nicht mit SNMPv3-Support installiert? Ist zwar im Grunde etwas unwahrscheinlich da dies wohl die Standard-Einstellung des configure-Scripts ist, aber dennoch moeglich.
Ansonsten tipp ich mal, dass vielleicht ein Perl-Modul fehlen koennte. Soweit ich das erkennen kann wird in cfgmaker SNMP::Util eingesetzt.


----------



## GalaxyWarrior (25. April 2006)

Welches Device ist denn gemeint wenn da Enter the IP address of the Device: steht? Die IP Addresse von dem momentanen PC? Und was genau ist nun der Community name? Der Login vom Router ? Irgendwie bin ich momentan etwas verwirrt, und aus der Readme werde ich auch nicht schlau 

Aber zumindes sieht es so aus als wäre die SNMP Util nicht installiert .

Gruß GalaxyWarrior


----------



## Dennis Wronka (25. April 2006)

Die Community ist wohl sowas aehnliches wie der User. Man kann, um den Zugriff zu begrenzen einen Community-Namen angeben mit dem zugegriffen werden muss.


----------



## GalaxyWarrior (25. April 2006)

Wenn ich make test, wie in der Readme beschrieben, ausführe, dann bekomme ich folgende Meldungen.

```
PERL_DL_NONLAZY=1 /usr/bin/perl -Iblib/arch -Iblib/lib -I/usr/lib/perl/5.6.1 -I/usr/share/perl/5.6.1 -e 'use Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
t/libtest...........Can't locate SNMP.pm in @INC (@INC contains: . blib/arch blib/lib /usr/lib/perl/5.6.1 /usr/share/perl/5.6.1 /usr/local/lib/perl/5.6.1 /usr/local/share/perl/5.6.1 /usr/lib/perl5/5.005 /usr/lib/perl5 /usr/share/perl5 /usr/local/lib/site_perl/i386-linux /usr/local/lib/site_perl) at blib/lib/SNMP/Util.pm line 15.
BEGIN failed--compilation aborted at blib/lib/SNMP/Util.pm line 15.
Compilation failed in require at t/libtest.t line 4.
BEGIN failed--compilation aborted at t/libtest.t line 4.
t/libtest...........dubious
        Test returned status 2 (wstat 512, 0x200)
FAILED--1 test script could be run, alas--no output ever seen
make: *** [test_dynamic] Error 2
```

Egal ob ich nun bei Device IP die des Routers oder des Linuxrechners selber eingebe. 

Aber was genau sagt mir die Fehlermeldung

Gruß GalaxyWarrior


----------



## Dennis Wronka (25. April 2006)

Bei der Installation wovon gibt der die Fehlermeldung? SNMP::Utils?
Wahrscheinlich brauchst Du auch noch das SNMP-Modul.


----------



## GalaxyWarrior (26. April 2006)

Jetzt benötigt er eine Datei ucd-snmp-config.h Laut google ist diese im ucd-snmp-devel Paket enthalten, welches ich aber nur für RedHead gefunden habe. Mit apt-get von Debian habe ich dieses Paket nicht gefunden, und auch bei google nicht für Debian. Ein Paket ucd-snmp findet Dabian, allerdings ist es nicht verfügbar. Gibt es eine gute Seite auf der man Debian Pakete finden kann? Ich habe auf http://rpmseek.com/rpm/ucd-snmp-devel-4.2.4-3.i386.html?hl=de&cx=591:U:0:216161:0:0:0 eben nur das RedHead Paket gefunden, nicht aber das Debian Paket. Auch sonst blieb die google suche erfolglos.

Tut mir leid das ich soviel frage, aber ich bin in Debian zimlicher neuling. 

Danke schonmal.
Gruß GalaxyWarrior


----------



## Dennis Wronka (26. April 2006)

Aus UCD-SNMP ist wohl irgendwann Net-SNMP geworden.

Moeglicherweise reicht es einen Link von net-snmp-config.h auf ucd-snmp-config.h zu legen.
Da UCD-SNMP jedoch ein paar Jahre auf dem Buckel zu haben scheint und Net-SNMP wohl der Nachfolger ist koennte dies auch durchaus nichts bringen, wovon ich fast ausgehe.
Ein kurzer Blick durch's System laesst auf jeden Fall vermuten, dass sich die beiden nicht im Weg stehen sollten.


----------



## GalaxyWarrior (26. April 2006)

So, ich habe nurn die ucd-snmp und das snmp Modul installiert. Allerdings bekomme ich bei der installation der Utils immernoch eine Fehlermeldung, aber er kommt schon weiter als vorher. Ich vermute stark, dass es an meiner eingabe bei Device IP und Community Name hängt, denn ich habe keine Ahnung welche IP er da will. Ich habe einfach mal die des Linux Rechners genommen. Die Ausgabe die ich dann bei make test bekommt ist:


```
Skip blib/lib/SNMP/Util.pm (unchanged)
cp Util_env.pm blib/lib/SNMP/Util_env.pm
PERL_DL_NONLAZY=1 /usr/bin/perl -Iblib/arch -Iblib/lib -I/usr/lib/perl/5.6.1 -I/usr/share/perl/5.6.1 -e 'use Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
t/libtest..........."my" variable $value masks earlier declaration in same statement at blib/lib/SNMP/Util.pm line 804.
"my" variable @oid_names masks earlier declaration in same statement at blib/lib/SNMP/Util.pm line 1636.
t/libtest...........NOK 2Use of uninitialized value in pattern match (m//) at blib/lib/SNMP/Util.pm line 1261, <GEN0> line 2.
Use of uninitialized value in string eq at blib/lib/SNMP/Util.pm line 1261, <GEN0> line 2.
Use of uninitialized value in pattern match (m//) at blib/lib/SNMP/Util.pm line 1270, <GEN0> line 2.
Use of uninitialized value in string at blib/lib/SNMP/Util.pm line 1287, <GEN0> line 2.
Use of uninitialized value in join or string at blib/lib/SNMP/Util.pm line 408, <GEN0> line 2.
Use of uninitialized value in pattern match (m//) at blib/lib/SNMP/Util.pm line 1555, <GEN0> line 2.
Use of uninitialized value in string eq at blib/lib/SNMP/Util.pm line 1555, <GEN0> line 2.
Use of uninitialized value in pattern match (m//) at blib/lib/SNMP/Util.pm line 1564, <GEN0> line 2.
Use of uninitialized value in join or string at blib/lib/SNMP/Util.pm line 1499, <GEN0> line 2.
Use of uninitialized value in join or string at blib/lib/SNMP/Util.pm line 1500, <GEN0> line 2.
Use of uninitialized value in join or string at blib/lib/SNMP/Util.pm line 1502, <GEN0> line 2.
Use of uninitialized value in join or string at blib/lib/SNMP/Util.pm line 1502, <GEN0> line 2.
Use of uninitialized value in pattern match (m//) at blib/lib/SNMP/Util.pm line 1261, <GEN0> line 2.
Use of uninitialized value in string eq at blib/lib/SNMP/Util.pm line 1261, <GEN0> line 2.
Use of uninitialized value in pattern match (m//) at blib/lib/SNMP/Util.pm line 1270, <GEN0> line 2.
Use of uninitialized value in string at blib/lib/SNMP/Util.pm line 1287, <GEN0> line 2.
Use of uninitialized value in join or string at blib/lib/SNMP/Util.pm line 408, <GEN0> line 2.
Use of uninitialized value in pattern match (m//) at blib/lib/SNMP/Util.pm line 1555, <GEN0> line 2.
Use of uninitialized value in string eq at blib/lib/SNMP/Util.pm line 1555, <GEN0> line 2.
Use of uninitialized value in pattern match (m//) at blib/lib/SNMP/Util.pm line 1564, <GEN0> line 2.
Use of uninitialized value in join or string at blib/lib/SNMP/Util.pm line 1499, <GEN0> line 2.
Use of uninitialized value in join or string at blib/lib/SNMP/Util.pm line 1500, <GEN0> line 2.
Use of uninitialized value in join or string at blib/lib/SNMP/Util.pm line 1502, <GEN0> line 2.
Use of uninitialized value in join or string at blib/lib/SNMP/Util.pm line 1502, <GEN0> line 2.
t/libtest...........NOK 4Can't use an undefined value as an ARRAY reference at blib/lib/SNMP/Util.pm line 1481, <GEN0> line 2.
t/libtest...........dubious
        Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 1-8
        Failed 8/8 tests, 0.00% okay
Failed Test Status Wstat Total Fail  Failed  List of Failed
--------------------------------------------------------------------------------
t/libtest.t        2   512     8    8 100.00%  1-8
Failed 1/1 test scripts, 0.00% okay. 8/8 subtests failed, 0.00% okay.
make: *** [test_dynamic] Error 2
```

Was genau muss ich denn da eingeben? Ich bin etwas ratlos :-(

auf der von dir gelinkten seite habe ich unter http://www.cpanforum.com/posts/1943 das selbe Problem gefunden, aber leider gibt es dazu auch noch keine Antworten.

Gruß GalaxyWarrior


----------



## Suchfunktion (26. April 2006)

Ach, weisste was?
Mach mal:

```
apt-get install snmp*
```
Dann haste alles was man fuer snmp benutzen 'koennte'.

Also einfach stupide alles installieren 
Das ist meine Methode, wenn irgendwie nix geht und ich keinen Bock mehr habe, fehler zu suchen. hrhrhr. 
(Klappt meistens..)


P.S.:
Ich find das irgendwie nice, dass bei dir auf der Homepage steht "Ich denke mit der sehr genauen Anleitung sollten auch Eisteiger zum einem Akzeptablen Ergebnis kommen."
Hehe.. leicht ironisch, oder?


----------



## GalaxyWarrior (27. April 2006)

Naja, intern auf SNMP geht in 5 minuten. Das ist überhaupt kein Problem. Nur das verbinden auf einen externen Router oder sonstwas wird schwierig ^^. Naja, ich lass es mal, denn das ist ein P1 166 MHz, der hatte durch Perl eine auslastung von 99% ^^

Allerdings bin ich für weitere Hilfe dankbar, da ich das jetzt mal direkt auf meinem root teste

:suspekt: 


```
Failed Test Stat Wstat Total Fail  Failed  List of Failed
-------------------------------------------------------------------------------
t/libtest.t  255 65280     8   12 150.00%  1-8
```

12 von 8 Tests fehlerhaft ...... sehr interessant ^^


----------

