{"id":90,"date":"2012-12-08T13:36:24","date_gmt":"2012-12-08T12:36:24","guid":{"rendered":"https:\/\/caipirinha.spdns.org\/wp\/?p=90"},"modified":"2019-10-01T23:31:59","modified_gmt":"2019-10-01T21:31:59","slug":"snmp","status":"publish","type":"post","link":"https:\/\/caipirinha.spdns.org\/wp\/?p=90","title":{"rendered":"SNMP"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Konzept<\/h2>\n\n\n\n<p><strong>SNMP<\/strong> ist eigentlich zur <strong>Verwaltung ausgedehnter Netzwerke<\/strong>\n mit vielen Knoten gedacht. \u00dcber das SNMP-Protokoll kann man Daten \u00fcber \nden Zustand eines Netzknotens abrufen, also beispielsweise \u00fcber die \nAuslastung, den Datendurchsatz, etc. Mit einer geeigneten Software, \nbeispielsweise <a href=\"http:\/\/openview.hp.com\/\">HP OpenView<\/a>,\n kann man sich ein ausgedehntes Netzwerk auch komplett visualisieren und\n dann gezielt auf einzelne Netzknoten &#8220;klicken&#8221;, um detaillierte Daten \nabzurufen. Aber auch im SOHO-Netzwerk kann man mit SNMP einige n\u00fctzliche\n Dinge anstellen. Au\u00dferdem wird SNMP auch f\u00fcr <a href=\"http:\/\/localhost\/mediawiki\/index.php\/MRTG\">mrtg<\/a> ben\u00f6tigt.\n<\/p>\n\n\n\n<p>Manche SNMP-f\u00e4higen Ger\u00e4te k\u00f6nnen auch noch beim Auftreten \nbestimmter Bedingungen eine Nachricht an eine zentrale Station schicken.\n Man nennt dies einen <strong>Trap<\/strong>. Beispielsweise k\u00f6nnen Router eine Nachricht schicken, wenn eine Verbindung ausf\u00e4llt.\n<\/p>\n\n\n\n<p>Auf meinen Maschinen ist SNMP daher nat\u00fcrlich auch eingerichtet. \nDabei werden Dienste auf Funktionsf\u00e4higkeit gepr\u00fcft, Log-Dateien und die\n Maschinenauslastung \u00fcberwacht, Verkehrsdaten erfasst und auch noch der \nangeschlossene WLAN-Router \u00fcberwacht, der ebenfalls SNMP-f\u00e4hig ist.\n<\/p>\n\n\n\n<p>Weiterf\u00fchrende Informationen zum Thema SNMP gibt es bei Net-SNMP <a href=\"http:\/\/www.net-snmp.org\/\">[1]<\/a>, bei Cisco <a href=\"http:\/\/www.cisco.com\/en\/US\/docs\/internetworking\/technology\/handbook\/SNMP.html\">[2]<\/a> und nat\u00fcrlich bei Wikipedia <a href=\"http:\/\/de.wikipedia.org\/wiki\/SNMP\">[3]<\/a>. Eine \u00dcbersicht von Standard-MIBs und OIDs findet sich bei ByteSphere <a href=\"http:\/\/www.oidview.com\/mibs\/0\/md-0-1.html\">[4]<\/a> sowie auf <a href=\"http:\/\/www.net-snmp.org\/docs\/mibs\/ucdavis.html\">[5]<\/a> und <a href=\"http:\/\/www.net-snmp.org\/wiki\/index.php\/Main_Page\">[6]<\/a>.\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Einrichtung des SNMP-Dienstes<\/h2>\n\n\n\n<p>Um SNMP einzurichten, muss das Paket <strong>net-snmp<\/strong> installiert werden. Dann f\u00fchrt man entweder das interaktive Skript <code>snmpconf -g basic_setup<\/code> aus, um eine erste Version der SNMP-Konfiguration zu erstellen oder man passt gleich die Datei <strong>\/etc\/snmp\/snmpd.conf<\/strong> an, so wie sie hier abgedruckt ist. Eine Beispielkonfiguration mit verschiedenen Einstellungen findet sich auf <a href=\"http:\/\/caipirinha.homelinux.org\/usr\/share\/doc\/packages\/net-snmp\/EXAMPLE.conf\">[7]<\/a>.\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">###########################################################################\n# SNMP-Konfiguration\n#\n# 05-Dec-2012 Gabriel R\u00fceck\n#\n\nrouser       public\nrocommunity  public localhost\nrocommunity  public 192.168.2.0\/24\nrocommunity  public 192.168.3.0\/24\nrocommunity  public 192.168.4.0\/24\n\n###########################################################################\n# SECTION: System Information Setup\n#\n\nsyslocation \"\u4e2d\u56fd110016 \u6c88\u9633\u5e02\u548c\u5e73\u533a\u6587\u4f53\u8def\"\nsyscontact  \"Gabriel R\u00fceck &lt;gabriel@caipirinha.homelinux.org&gt;\"\nsysservices 78\n\n###########################################################################\n# SECTION: Monitor Various Aspects of the Running Host\n#\n\n#   The results are reported in the dskTable section.\n\ndisk  \/                   30%\ndisk  \/home               10%\ndisk  \/home\/public\/Video   5%\ndisk  \/var                20%\ndisk  \/backup             10%\n\n#   The results are reported in the fileTable section\n\nfile  \/var\/log\/messages   100000\nfile  \/var\/log\/warn       100000\n\n#   The results are reported in the laTable section.\n\nload  15  10  10\n\n#   The results are reported in the prTable section.\n\nproc  amavisd          3  1\nproc  apcupsd          1  1\nproc  atd              1  1\nproc  authdaemond     10  1\nproc  clamd            1  1\nproc  couriertcpd      2  2\nproc  cron             4  1\nproc  cupsd            1  1\nproc  dhcpd            1  1\nproc  fail2ban-server  1  1\nproc  famd             1  1\nproc  freshclam        1  1\nproc  httpd2-prefork  50  1\nproc  icecast         10  1\nproc  master           1  1\nproc  mdadm            1  1\nproc  minidlna         5  1\nproc  mrtg             1  1\nproc  mysqld           2  1\nproc  named            1  1\nproc  nmbd             1  1\nproc  ntpd             1  1\nproc  openvpn          6  5\nproc  pure-ftpd        1  1\nproc  rsyncd           5  1\nproc  rsyslogd         1  1\nproc  saslauthd        1  1\nproc  sensord          1  1\nproc  smartd           1  1\nproc  smbd            20  1\nproc  sshd            20  1\nproc  tlsmgr           1  1\n\n###########################################################################\n# SECTION: Custom Programs\n#\n\nexec  mbox_gabriel  \/root\/bin\/mailsize.sh  gabriel\nexec  mbox_joselia  \/root\/bin\/mailsize.sh  joselia\nexec  bw_rueeck     \/root\/bin\/bandwidth.sh rueeck.name\nexec  bw_caipiroska \/root\/bin\/bandwidth.sh caipiroska.homelinux.org\nexec  ping_gw0      \/root\/bin\/pingtimes.sh gw0\nexec  ping_tun0     \/root\/bin\/pingtimes.sh tun0\nexec  ping_gw1      \/root\/bin\/pingtimes.sh gw1\nexec  ping_tun1     \/root\/bin\/pingtimes.sh tun1\nexec  ping_gw2      \/root\/bin\/pingtimes.sh gw2\nexec  ping_tun2     \/root\/bin\/pingtimes.sh tun2\nexec  vpn_tun0_r    \/root\/bin\/vpn_traffic.sh tun0 read\nexec  vpn_tun0_w    \/root\/bin\/vpn_traffic.sh tun0 write\nexec  vpn_tun1_r    \/root\/bin\/vpn_traffic.sh tun1 read\nexec  vpn_tun1_w    \/root\/bin\/vpn_traffic.sh tun1 write\nexec  vpn_tun2_r    \/root\/bin\/vpn_traffic.sh tun2 read\nexec  vpn_tun2_w    \/root\/bin\/vpn_traffic.sh tun2 write\n\n###########################################################################\n# SECTION: Trap Destinations\n#\n\nauthtrapenable  2\niquerySecName   public\ncreateUser      public MD5 auth_pwd_local DES crypto_pwd_local\n#trap2sink       localhost public\ninformsink      localhost public\n#trapsess        -Ci -v3 -u public -a MD5 -A auth_pwd_trap -x DES -X crypto_pwd_trap -l authPriv localhost\n\nmonitor -o prNames  -o prErrMessage \"process table\" prErrorFlag  &nbsp;!= 0\nmonitor -o dskPath  -o dskErrorMsg  \"dskTable\"      dskErrorFlag &nbsp;!= 0\nmonitor -o laNames  -o laErrMessage \"laTable\"       laErrorFlag  &nbsp;!= 0\nmonitor -o fileName -o fileErrorMsg \"fileTable\"     fileErrorFlag&nbsp;!= 0<\/pre>\n\n\n\n<p>Den Community-Namen <strong>public<\/strong> sollte man aus Sicherheitsgr\u00fcnden \ndurch einen selbst gew\u00e4hlten Namen ersetzen. Dieser muss dann aber bei \nallen SNMP-Knoten im Netzwerk gleich gew\u00e4hlt werden. Gleicherma\u00dfen \nm\u00fcssen <strong>auth_pwd_local<\/strong> und <strong>crypto_pwd_local<\/strong> durch m\u00f6glichst komplexe Passworte ersetzt werden. Diese Passworte dienen zur Authentifizierung (<strong>auth_pwd_local<\/strong>) und zur Verschl\u00fcsselung (<strong>crypto_pwd_local<\/strong>) beim Zugriff auf SNMP-Daten, wenn SNMP in der Version 3 (<strong>SNMPv3<\/strong>) zum Einsatz kommt.\n<\/p>\n\n\n\n<p>Die hier gezeigte Konfigurationsdatei <strong>\/etc\/snmp\/snmpd.conf<\/strong>\n gliedert sich in f\u00fcnf Teile und beinhaltet Konfigurationsanweisungen \nsowohl f\u00fcr SNMPv2 als auch f\u00fcr SNMPv3. Im ersten Teil werden die \nZugriffsberechtigungen festgelegt; aus Sicherheitsgr\u00fcnden sind diese auf\n reine Lesezugriffe vom Server selbst und aus dem SOHO-Netzwerk \nbeschr\u00e4nkt. Dort sind 3 Netzwerke angegeben, weil der Caipirinha-Server \n\u00fcber mehrere VPNs mit verschiedenen Netzwerken verbunden ist oder selbst\n \u00fcber VPN-Dienste anbietet. Weiterhin wird f\u00fcr SNMPv3 ein Benutzername \n(hier: <strong>public<\/strong>) angelegt. SNMPv3 kennt verschiedene Sicherheitsmechanismen, welche man sich mit <code>man 5 snmpd.conf<\/code>\n vergegenw\u00e4rtigen kann. Als Standard wird beim Zugriff auf SNMP-Daten \n\u00fcber SNMPv3 zumindest Authentifizierung verlangt. Verschl\u00fcsselung ist \noptional.\n<\/p>\n\n\n\n<p>Im zweiten Abschnitt sind die Kontaktdaten f\u00fcr den Administrator \ndes Caipirinha-Servers und der Maschinenstandort angegeben. Diese Daten \nerleichtern bei einem umfangreichen Netzwerk die Lokalisierung von \nAnsprechpartnern, wenn Probleme auf der Maschine auftreten. Der Wert bei\n <strong>sysservices<\/strong> spiegelt die F\u00e4higkeiten des Netzknotens wieder. Details zur Berechnung dieses Wertes finden sich auf <a href=\"http:\/\/technet.microsoft.com\/de-de\/library\/cc709673(WS.10).aspx\">[8]<\/a>.\n<\/p>\n\n\n\n<p>Der dritten Abschnitt selbst gliedert sich in drei \nUnterabschnitte, in denen verschiedene Kenngr\u00f6\u00dfen \u00fcberwacht werden. \nSobald eine Kenngr\u00f6\u00dfe in eine kritische Richtung durchschritten wird, \nwird eine Mitteilung an den <strong>snmptrapd<\/strong> geschickt.\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Bei den angegebenen <strong>Partitionen<\/strong> ist der kritische Augenblick das Unterschreiten des angegeben Mindest-Prozentsatzes an freiem Speicher.<\/li><li>Bei den angegebenen <strong>Log-Dateien<\/strong> ist der kritische Augenblick das \u00dcberschreiten der Gr\u00f6\u00dfe. Der angegebene Zahlenwert bezieht sich auf kB als Einheit.<\/li><li>Bei der <strong>Maschinenlast<\/strong> ist der kritische Augenblick das \n\u00dcberschreiten der angegebenen Grenzen. Die drei Werte entsprechen den \nZeitintervallen der letzten Minute, der letzten 5 Minuten und der \nletzten 15 Minuten.<\/li><li>Bei den <strong>Prozessen<\/strong> ist die erste angegebene Zahl der zul\u00e4ssige\n Maximalwert und die zweite angegebene Zahl der zul\u00e4ssige Minimalwert. \nEin \u00dcberschreiten des Maximalwertes oder ein Unterschreiten des \nMinimalwertes setzt ein Fehler-Flag und in der abgedruckten \nKonfiguration auch dazu, dass ein <strong>Trap<\/strong> geschickt wird. Der \nsnmptrap-Dienst wird daraus eine E-Mail erzeugen und an den \nSystemadministrator schicken. Es macht nat\u00fcrlich nur Sinn, hier solche \nProzesse beobachten zu lassen, die eigentlich ununterbrochen laufen \nsollen.<\/li><\/ul>\n\n\n\n<p>Im vierten Abschnitt sind Skripte angegeben, die aus dem SNMP-Dienst \nheraus mit festzulegenden Argumenten aufgerufen werden k\u00f6nnen. Jeder \nAufruf selbst bekommt auch noch einen Namen (beispielsweise <strong>mbox_gabriel<\/strong> oder <strong>mbox_joselia<\/strong>). Die hier erw\u00e4hnten Shell-Skripte <a href=\"http:\/\/localhost\/mediawiki\/index.php\/Admin-Skripte#Gr.C3.B6.C3.9Fe_eines_Mailordners\">mailsize.sh<\/a>, <a href=\"http:\/\/localhost\/mediawiki\/index.php\/Admin-Skripte#Bandbreite_zu_entfernten_Maschinen\">bandwidth.sh<\/a>, <a href=\"http:\/\/localhost\/mediawiki\/index.php\/Admin-Skripte#Ping-Zeiten_zu_entfernten_Maschinen\">pingtimes.sh<\/a> und <a href=\"http:\/\/localhost\/mediawiki\/index.php\/Admin-Skripte#VPN-Datenvolumen_ermitteln\">vpn_traffic.sh<\/a> sind in <a href=\"http:\/\/localhost\/mediawiki\/index.php\/Admin-Skripte\">Admin-Skripte<\/a> dokumentiert.\n<\/p>\n\n\n\n<p>Im f\u00fcnften Abschnitt sind schlie\u00dflich die Daten f\u00fcr den <strong>snmptrapd<\/strong> angegeben. Man erkennt mehrere Schl\u00fcsselworte. Mit <strong>authtrapenable<\/strong> werden versuchte SNMP-Abfragen mit einem fehlerhaften Login entweder an den <strong>snmptrapd<\/strong> geschickt (<strong>authtrapenable 1<\/strong>) oder eben nicht (<strong>authtrapenable 2<\/strong>). Mit <strong>iquerySecName<\/strong> wird der SNMPv3-Benutzername festgelegt, unter dem die Abfragen beim <strong>snmpd<\/strong> durchgef\u00fchrt werden. Dieser Name muss gleich dem unter dem Schl\u00fcsselwort <strong>rouser<\/strong> angegebenen Benutzernamen sein. Mit <strong>createUser<\/strong> werden die Algorithmen und die Passworte zur Authentifizierung (<strong>auth_pwd_local<\/strong>) und zur Verschl\u00fcsselung (<strong>crypto_pwd_local<\/strong>)\n beim Zugriff mit dem entsprechenden SNMPv3-Benutzernamen auf lokale \nSNMP-Daten festgelegt. Man kann das Verschl\u00fcsselungspasswort (<strong>crypto_pwd_local<\/strong>) auch weglassen und die Authentifizierung und Verschl\u00fcsselung mit dem gleichen Passwort (in diesem Fall dann <strong>auth_pwd_local<\/strong>) durchf\u00fchren. In diesem Fall muss die <strong>createUser<\/strong>-Anweisung so lauten:\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">createUser      public MD5 auth_pwd_local DES crypto_pwd_local<\/pre>\n\n\n\n<p>Das Schl\u00fcsselwort <strong>trap2sink<\/strong> gibt das Ziel und den \nSNMPv2-Community-Namen an, an den die Traps geschickt werden. Achtung, \nhier wird SNMPv2 benutzt, w\u00e4hrend die Abfrage der SNMP-Werte beim snmpd \nmit SNMPv3 l\u00e4uft! <strong>trap2sink<\/strong> ist hier allerdings auskommentiert, zu Gunsten von <strong>informsink<\/strong>. Durch <strong>informsink<\/strong> wird kein Trap, sondern eine <strong>Inform<\/strong>-Mitteilung\n an den snmptrapd geschickt. Das hat den Vorteil, dass der snmptrapd den\n Erhalt der Mitteilung best\u00e4tigt. Laufen sowohl snmpd als auch snmptrapd\n auf der gleichen Maschine, ist das unwichtig. Ist aber der snmptrapd \nauf einer entfernten Maschine, ist <strong>informsink<\/strong> eindeutig die \nbessere Wahl, denn so vermeidet man, dass die UDP-Pakete eines Trap \nverloren gehen k\u00f6nnen. Man kann bei beiden Schl\u00fcsselworten sowohl eine \nlokale als auch eine entfernte Maschine angeben. Beim Caipirinha-Server \nund Caipiroska-Server laufen die snmptrapd auf den gleichen Maschinen. \nDamit kann auch ein Trap gesendet werden, wenn die Netzwerkverbindung \ngerade <strong>down<\/strong> ist. In einem lokalen Netz, bei dem man sich sicher ist, dass die Verbindungen immer <strong>up<\/strong> sind, kann man den snmptrapd auch auf einer Maschine zentralisieren und von dort aus das gesamte Netzwerk \u00fcberwachen.\n<\/p>\n\n\n\n<p>Die vier <strong>monitor<\/strong>-Anweisungen legen fest, dass beim \nAuftreten einer Fehlerbedingung ein Trap zu schicken ist. Die \nentsprechende Syntax habe ich direkt aus <code>man 5 snmpd.conf<\/code> heraus kopiert. Man h\u00e4tte auch die Anweisung <strong>defaultMonitors yes<\/strong> benutzen k\u00f6nnen, aber diese beinhaltet noch weitere Pr\u00fcfungen, die ich hier nicht haben wollte.\n<\/p>\n\n\n\n<p>Mit dem Schl\u00fcsselwort <strong>trapsess<\/strong> kann man <strong>Traps<\/strong> und <strong>Informs<\/strong>\n auch \u00fcber SNMPv3 zu einem snmptrapd auf einer lokalen oder entfernten \nMaschine schicken. Im falle einer entfernten Maschine muss man <strong>localhost<\/strong> durch den Maschinennamen oder die IP-Adresse ersetzen. Die Parameter <strong>public<\/strong>, <strong>auth_pwd_trap<\/strong> und <strong>crypto_pwd_trap<\/strong>\n m\u00fcssen denen des snmptrapd entsprechen. Mit dieser Konfiguration wird \ndie Nachricht vom snmpd zum snmptrapd dann sowohl an einen g\u00fcltigen \nLogin gebunden als auch verschl\u00fcsselt. Die Option <strong>-Ci<\/strong> legt fest, \ndass eine Inform-Mitteilung geschickt wird. Fehlt diese Option, wird \nlediglich eine (unbest\u00e4tigte) Trap-Mitteilung geschickt.\n<\/p>\n\n\n\n<p>Zum Vergleich ist hier eine Konfigurationsdatei angegeben, bei \nder Inform-Mittelungen an eine entfernte Maschine geschickt werden:\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">###########################################################################\n# SNMP-Konfiguration\n#\n# 05-Dec-2012 Gabriel R\u00fceck\n#\n\nrouser       public\nrocommunity  public localhost\nrocommunity  public 124.95.128.109\/32\n\n###########################################################################\n# SECTION: System Information Setup\n#\n\nsyslocation \"\u8fbd\u5b81\u7701\u6c88\u9633\u5e02\"\nsyscontact  \"Gabriel R\u00fceck &lt;gabriel@rueeck.de&gt;\"\nsysservices 78\n\n###########################################################################\n# SECTION: Monitor Various Aspects of the Running Host\n#\n\n#   The results are reported in the dskTable section.\n\ndisk  \/                    50%\ndisk  \/home                10%\ndisk  \/tmp                 20%\ndisk  \/var                 20%\n\n#   The results are reported in the fileTable section\n\nfile  \/var\/log\/messages    50000\nfile  \/var\/log\/warn        50000\n\n#   The results are reported in the laTable section.\n\nload  5  3  1\n\n#   The results are reported in the prTable section.\n\nproc  atd               1  1\nproc  clamd             1  1\nproc  cron              4  1\nproc  fail2ban-server   1  1\nproc  famd              1  1\nproc  freshclam         1  1\nproc  httpd2-prefork  600  1\nproc  master            1  1\nproc  mdadm             1  1\nproc  mrtg              1  1\nproc  mysqld            2  1\nproc  named             1  1\nproc  ntpd              1  1\nproc  openvpn           2  1\nproc  rsyncd            5  1\nproc  rsyslogd          1  1\nproc  sensord           1  1\nproc  smartd            1  1\nproc  sshd             20  1\n\n###########################################################################\n# SECTION: Custom Programs\n#\n\nexec  bw_rueeck     \/root\/bin\/bandwidth.sh rueeck.name\nexec  bw_caipiroska \/root\/bin\/bandwidth.sh caipiroska.homelinux.org\n\n###########################################################################\n# SECTION: Trap Destinations\n#\n\nauthtrapenable  1\niquerySecName   public\ncreateUser      public MD5 auth_pwd_local DES crypto_pwd_local\n#informsink      caipirinha.homelinux.org public\ntrapsess        -Ci -v3 -u public -a MD5 -A auth_pwd_trap -x DES -X crypto_pwd_trap -l authPriv caipirinha.homelinux.org\n\nmonitor -o prNames  -o prErrMessage \"process table\" prErrorFlag  &nbsp;!= 0\nmonitor -o dskPath  -o dskErrorMsg  \"dskTable\"      dskErrorFlag &nbsp;!= 0\nmonitor -o laNames  -o laErrMessage \"laTable\"       laErrorFlag  &nbsp;!= 0\nmonitor -o fileName -o fileErrorMsg \"fileTable\"     fileErrorFlag&nbsp;!= 0<\/pre>\n\n\n\n<p>Nach der Anpassung der Konfigurationsdatei <strong>\/etc\/snmp\/snmpd.conf<\/strong> muss man noch den snmpd noch starten. Eigentlich geschieht dies ja mit <code>\/etc\/init.d\/snmpd start<\/code>. Allerdings liest der <strong>snmpd<\/strong> beim Start gleich alle m\u00f6glichen Konfigurationsdateien aus unterschiedlichen Verzeichnissen ein (siehe <code>man 5 snmp_config<\/code>). Das ist eine b\u00f6se Falle, die mich viel Zeit gekostet hat. So werden unter anderem existierende SNMPv3-Benutzerdaten aus <strong>\/var\/lib\/net-snmp\/snmpd.conf<\/strong>\n eingelesen, die dann die Einstellungen aus der aktuellen \nKonfigurationsdatei zunichte machen. Deshalb sollte man nach dem \nAnpassen der Konfigurationsdatei den snmpd mit <code>snmpd -C -c \/etc\/snmp\/snmpd.conf<\/code> unter alleiniger Ber\u00fccksichtigung dieser Konfigurationsdatei neu starten. In diesem Fall werden dann die SNMPv3-Benutzer in <strong>\/var\/lib\/net-snmp\/snmpd.conf<\/strong> von der Konfigurationsdatei <strong>\/etc\/snmp\/snmpd.conf<\/strong> \u00fcbernommen.\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Einrichtung des SNMPTRAP-Dienstes<\/h2>\n\n\n\n<p>Wie bereits erw\u00e4hnt, l\u00e4uft auf meinen Maschinen nicht nur der <strong>snmpd<\/strong>, sondern auch noch der <strong>snmptrapd<\/strong>. Der Caipirinha-Server <a href=\"http:\/\/caipirinha.homelinux.org\/\">[9]<\/a>\n ist damit zugleich Quelle von SNMP-Mitteilungen, die den Server selbst \nbetreffen als auch zentrale Station zur Aufnahme aller Meldungen von \nGer\u00e4ten aus dem entsprechenden lokalen Netz. Es handelt sich also bei \nsnmptrapd um einen eigenst\u00e4ndigen Dienst, der auf Port 162\/udp auf \neingehende Mitteilungen von <strong>SNMP-Agenten<\/strong> wartet.\n<\/p>\n\n\n\n<p>Auch f\u00fcr den snmptrapd gibt es eine Konfigurationsdatei, n\u00e4mlich <strong>\/etc\/snmp\/snmptrapd.conf<\/strong>. Diese ist hier abgedruckt:\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">###########################################################################\n# SNMPTRAP-Konfiguration\n#\n# 30-Nov-2012 Gabriel R\u00fceck\n#\n\n# donotfork: Do not fork from the shell\n#   arguments: (1|yes|true|0|no|false)\ndoNotFork      no\n\n# pidfile: Store Process ID in file\n#   arguments: PID file\npidFile  \/var\/run\/snmptrapd.pid\n\n# ignoreauthfailure: Ignore authentication failure traps\n#   arguments: (1|yes|true|0|no|false)\nignoreAuthFailure  yes\n\nauthCommunity    log,execute  public\nauthUser         log,execute  public\nauthUser         log,execute  public_2\ncreateUser       public MD5 auth_pwd_trap DES crypto_pwd_trap\ncreateUser       public_2 MD5 auth_pwd_trap_2 DES crypto_pwd_trap_2\n\ntraphandle default \/usr\/bin\/traptoemail -f \"System Administrator &lt;root@caipirinha.homelinux.org&gt;\" root@caipirinha.homelinux.org\n\nformat1 &nbsp;%04.4y-%02.2m-%02.2l&nbsp;%02.2h:%02.2j From&nbsp;%B:&nbsp;%W \\n\nformat2 &nbsp;%04.4y-%02.2m-%02.2l&nbsp;%02.2h:%02.2j From&nbsp;%B:&nbsp;%W \\n<\/pre>\n\n\n\n<p>Auch hier muss der Community-Name <strong>public<\/strong> durch den im gesamten Netzwerk einheitlich benutzten Community-Namen ersetzt werden. Mit <strong>authUser<\/strong> und <strong>createUser<\/strong> wird ein SNMPv3-Benutzer angelegt. <strong>auth_pwd_trap<\/strong> ist das Passwort zur Authentifizierung beim snmptrapd, und <strong>crypto_pwd_trap<\/strong> ist das Passwort zum Verschl\u00fcsseln der Daten. <strong>MD5<\/strong> ist der bei der Authentifizierung zum Einsatz kommende Algorithmus, und <strong>DES<\/strong> kommt bei der Verschl\u00fcsselung zum Einsatz. <strong>auth_pwd_trap<\/strong> und <strong>crypto_pwd_trap<\/strong>\n m\u00fcssen gleich sein wie bei der Konfiguration des snmpd auf einer \nMaschine, die diesem snmptrapd einen Trap oder eine Inform-Mitteilung \nschicken will. Auch hier kann man das Verschl\u00fcsselungspasswort (<strong>crypto_pwd_trap<\/strong>) weglassen und die Authentifizierung und Verschl\u00fcsselung mit dem gleichen Passwort (in diesem Fall dann <strong>auth_pwd_trap<\/strong>) durchf\u00fchren. In diesem Fall muss die <strong>createUser<\/strong>-Anweisung so lauten:\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">createUser      public MD5 auth_pwd_trap DES<\/pre>\n\n\n\n<p>Es ist auch m\u00f6glich, mehrere SNMPv3-Benutzer anzulegen. Im Beispiel hier wurde mit <strong>public_2<\/strong>, <strong>auth_pwd_trap_2<\/strong> und <strong>crypto_pwd_trap_2<\/strong>\n ein zweiter SNMPv3-Benutzer angelegt, der diesem snmptrapd Mitteilungen\n schicken kann. Dies macht dann Sinn, wenn der snmptrapd Traps von \nunterschiedlichen Maschinen in Empfang nehmen soll, bei denen aber die \njeweiligen Administratoren nichts von den Logins der anderen Maschinen \nwissen sollen. Man k\u00f6nnte nat\u00fcrlich auch generell f\u00fcr den snmptrapd \neinen ganz anderen SNMPv3-Benutzer nehmen, der nichts mit irgendeinem \nSNMPv3-Benutzer auf einer der Maschinen zu tun hat. Dies w\u00e4re ohne \nZweifel die sicherste L\u00f6sung.\n<\/p>\n\n\n\n<p>Die Anweisung <strong>traphandle<\/strong> legt fest, was beim Auftreten eines Traps zu tun ist. In diesem Fall wird eine E-Mail an root geschickt. <strong>format1<\/strong> und <strong>format2<\/strong>\n legen das Format f\u00fcr SNMPv1-Traps und SNMPv2\/SNMPv3-Traps fest. Ich \nhabe hier noch ein Format f\u00fcr SNMPv1 festgelegt, obwohl SNMPv1 nun \ninzwischen wirklich aus der Mode kommt, weil einige einfachen Router \ntats\u00e4chlich auch heute nur SNMPv1 beherrschen.\n<\/p>\n\n\n\n<p>Es gibt f\u00fcr die Konfigurationsdatei auch eine Anweisung <strong>logOption<\/strong>,\n mit dem man in der Konfigurationsdatei einstellen k\u00f6nnen sollte, wohin \ndie Meldungen geloggt werden sollen. Allerdings funktioniert diese bei \nOpenSuSE 11.4 nicht, und wenn man <code>snmptrapd -H<\/code> aufruft, \nkommt ja auch eine entsprechende Meldung, die besagt, lass kein \nLog-Handling aktiv ist. Alle Mitteilungen werden daher leider nach <strong>\/var\/log\/messages<\/strong> geschrieben, ob man das will oder nicht. Beim Caipiroska-Server <a href=\"http:\/\/caipiroska.homelinux.org\/\">[10]<\/a> sieht das dann beispielsweise so aus:\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Nov 26 07:40:49 caipiroska snmptrapd[18445]: localhost [UDP: [127.0.0.1]:56402-&gt;[127.0.0.1]:162]: Trap , DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (22) 0:00:00.22, SNMPv2-MIB::snmpTrapOID.0 = OID: DISMAN-EVENT-MIB::mteTriggerFired, DISMAN-EVENT-MIB::mteHotTrigger.0 = STRING: process table, DISMAN-EVENT-MIB::mteHotTargetName.0 = STRING: , DISMAN-EVENT-MIB::mteHotContextName.0 = STRING: , DISMAN-EVENT-MIB::mteHotOID.0 = OID: UCD-SNMP-MIB::prErrorFlag.24, DISMAN-EVENT-MIB::mteHotValue.0 = INTEGER: 1, UCD-SNMP-MIB::prNames.24 = STRING: smbd, UCD-SNMP-MIB::prErrMessage.24 = STRING: No smbd process running\nNov 26 07:40:49 caipiroska snmptrapd[18445]: localhost [UDP: [127.0.0.1]:56402-&gt;[127.0.0.1]:162]: Trap , DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (23) 0:00:00.23, SNMPv2-MIB::snmpTrapOID.0 = OID: DISMAN-EVENT-MIB::mteTriggerFired, DISMAN-EVENT-MIB::mteHotTrigger.0 = STRING: dskTable, DISMAN-EVENT-MIB::mteHotTargetName.0 = STRING: , DISMAN-EVENT-MIB::mteHotContextName.0 = STRING: , DISMAN-EVENT-MIB::mteHotOID.0 = OID: UCD-SNMP-MIB::dskErrorFlag.3, DISMAN-EVENT-MIB::mteHotValue.0 = INTEGER: 1, UCD-SNMP-MIB::dskPath.3 = STRING: \/home\/public\/Video, UCD-SNMP-MIB::dskErrorMsg.3 = STRING: \/home\/public\/Video: less than 5% free (= 100%)<\/pre>\n\n\n\n<p>Die erste Meldung sagt aus, dass kein <strong>smbd<\/strong>-Prozess l\u00e4uft. Die zweite Meldung sagt aus, dass auf der Partition <strong>\/home\/public\/Video<\/strong> weniger als 5% freier Festplattenspeicher ist. Der <strong>snmptrapd<\/strong>\n schickt auch entsprechende E-Mails, und die zu den zwei Meldungen \ngeh\u00f6renden E-Mails haben genau den gleichen Inhalt, wie man hier \nerkennen kann:\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Host: localhost (UDP: [127.0.0.1]:56402-&gt;[127.0.0.1]:162)\n  DISMAN-EVENT-MIB::sysUpTimeInstance  0:0:00:00.22\n            SNMPv2-MIB::snmpTrapOID.0  DISMAN-EVENT-MIB::mteTriggerFired\n    DISMAN-EVENT-MIB::mteHotTrigger.0  process table\n DISMAN-EVENT-MIB::mteHotTargetName.0  \nDISMAN-EVENT-MIB::mteHotContextName.0  \n        DISMAN-EVENT-MIB::mteHotOID.0  UCD-SNMP-MIB::prErrorFlag.24\n      DISMAN-EVENT-MIB::mteHotValue.0  1\n             UCD-SNMP-MIB::prNames.24  smbd\n        UCD-SNMP-MIB::prErrMessage.24  No smbd process running<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">Host: localhost (UDP: [127.0.0.1]:56402-&gt;[127.0.0.1]:162)\n  DISMAN-EVENT-MIB::sysUpTimeInstance  0:0:00:00.23\n            SNMPv2-MIB::snmpTrapOID.0  DISMAN-EVENT-MIB::mteTriggerFired\n    DISMAN-EVENT-MIB::mteHotTrigger.0  dskTable\n DISMAN-EVENT-MIB::mteHotTargetName.0  \nDISMAN-EVENT-MIB::mteHotContextName.0  \n        DISMAN-EVENT-MIB::mteHotOID.0  UCD-SNMP-MIB::dskErrorFlag.3\n      DISMAN-EVENT-MIB::mteHotValue.0  1\n              UCD-SNMP-MIB::dskPath.3  \/home\/public\/Video\n          UCD-SNMP-MIB::dskErrorMsg.3  \/home\/public\/Video: less than 5% free (= 100%)<\/pre>\n\n\n\n<p>Durch den E-Mail-Mechanismus kann man sich als Systemadministrator \ndaher direkt informieren lassen, wenn auf einem der Server etwas aus dem\n Ruder l\u00e4uft. Das ist eine sehr praktische Sache, insbesondere, wenn man\n eine solche E-Mail gleich noch auf dem Smartphone empfangen kann.\n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/localhost\/mediawiki\/index.php\/Datei:SNMP-Einstellungen_am_A602-Router.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/caipirinha.spdns.org\/wp\/wp-content\/uploads\/SNMP-Einstellungen_am_A602-Router-1024x1024.png\" alt=\"SNMP-Konfiguration bei einem WLAN-Router\" class=\"wp-image-119\" srcset=\"https:\/\/caipirinha.spdns.org\/wp\/wp-content\/uploads\/SNMP-Einstellungen_am_A602-Router-1024x1024.png 1024w, https:\/\/caipirinha.spdns.org\/wp\/wp-content\/uploads\/SNMP-Einstellungen_am_A602-Router-150x150.png 150w, https:\/\/caipirinha.spdns.org\/wp\/wp-content\/uploads\/SNMP-Einstellungen_am_A602-Router-300x300.png 300w, https:\/\/caipirinha.spdns.org\/wp\/wp-content\/uploads\/SNMP-Einstellungen_am_A602-Router-768x769.png 768w, https:\/\/caipirinha.spdns.org\/wp\/wp-content\/uploads\/SNMP-Einstellungen_am_A602-Router.png 1074w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>SNMP-Konfiguration bei einem WLAN-Router<\/figcaption><\/figure>\n\n\n\n<p>Der <strong>snmptrapd<\/strong> muss \u00fcber das Kommando <code>snmptrapd<\/code> gestartet werden. Es ist leider nicht m\u00f6glich, einen automatischen Start \u00fcber den <strong>Runlevel-Editor<\/strong>\n einzustellen. Dies wird auf dem Caipirinha-Server im Rahmen eines \nSkripts durchgef\u00fchrt, welches der Systemadministrator nach dem Start des\n Systems ausf\u00fchren muss. Wie beim spnmd sollte man den snmptrapd nach \ndem \u00c4ndern der Konfigurationsdatei mit <code>snmptrapd -C -c \/etc\/snmp\/snmptrapd.conf<\/code> starten, weil auch der snmptrapd beim Start mehrere Konfigurationsdateien aus unterschiedlichen Verzeichnissen einliest (siehe <code>man 5 snmp_config<\/code>), unter anderem aus <strong> \/var\/lib\/net-snmp\/snmptrapd.conf<\/strong>.\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Konfiguration von SNMP bei DSL-Routern<\/h2>\n\n\n\n<p>Oft ist es m\u00f6glich, selbst bei SOHO-Routern SNMP zu konfigurieren; \ndas nebenstehende Bild zeigt, wie man dies bei der &#8220;EasyBox 602&#8221; von <a href=\"http:\/\/www.vodafone.de\/\">Vodafone<\/a>\n macht. Tr\u00e4gt man dort die IP-Adresse des Caipiroska-Servers im \nHeimnetzwerk ein und konfiguriert den Community-Namen korrekt, so kann \nder DSL-Router Traps an den Caipiroska-Server schicken, beispielsweise, \nwenn die DSL-Verbindung wegen des in Deutschland einmal am Tag \nstattfindenden IP-Adresswechsels kurzzeitig zusammenbricht. Dann bekommt\n man mindestens einen Trap mit der &#8220;Line down&#8221;-Information und einen mit\n der &#8220;Line up&#8221;-Information, \u00fcblicherweise kurze Zeit danach. Man erkennt\n hier auch, dass es Sinn macht, einen <strong>snmptrapd<\/strong> im Heimnetz \nlaufen zu lassen und nicht auf eine entfernte Maschine zu verweisen, die\n ja dann nicht verf\u00fcgbar ist, wenn die DSL-Verbindung gerade \nzusammengebrochen ist. Bei der von snmptrapd erzeugten E-Mail wird \ndagegen vom <a href=\"http:\/\/localhost\/mediawiki\/index.php?title=SMTPD&amp;action=edit&amp;redlink=1\">smtpd<\/a> \u00fcber einen l\u00e4ngeren Zeitraum hinweg mehrmals eine Zustellung versucht.\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Beispiele f\u00fcr SNMP-Abfragen<\/h2>\n\n\n\n<p>Einen ersten <strong>\u00dcberblick<\/strong> \u00fcber die SNMP-Variablen einer Maschine verschafft man sich mit <code>snmpwalk -v2c -cpublic localhost<\/code> oder, wenn SNMPv3 zum Einsatz kommen soll, mit <code>snmpwalk -v3 -u public -l authNoPriv -a MD5 -A auth_pwd_local localhost<\/code>. Die Option <strong>authNoPriv<\/strong>\n besagt, dass hier zwar eine Authentifizierung durchgef\u00fchrt wird, aber \nkeine Verschl\u00fcsselung der Daten, die \u00fcbertragen werden. Leider habe ich \nmit der Option <strong>authPriv<\/strong> und der Angabe des <strong>crypto_pwd_local<\/strong> nur eine Fehlermeldung bekommen.\n<\/p>\n\n\n\n<p>Die Ausgabe dieser Abfrage kann jedenfalls zu einer recht langen Liste f\u00fchren.\n<\/p>\n\n\n\n<p><strong>System-Statistiken<\/strong> kann man sich mit <code>snmpwalk -v2c -cpublic localhost .1.3.6.1.4.1.2021.11<\/code> bzw. <code>snmpwalk -v3 -u public -l authNoPriv -a MD5 -A auth_pwd_local localhost .1.3.6.1.4.1.2021.11<\/code> anzeigen lassen <a href=\"http:\/\/www.net-snmp.org\/docs\/mibs\/ucdavis.html\">[11]<\/a>, <a href=\"http:\/\/www.oidview.com\/mibs\/2021\/UCD-SNMP-MIB.html\">[12]<\/a>. Dies liefert beispielsweise:\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">UCD-SNMP-MIB::ssIndex.0 = INTEGER: 1\nUCD-SNMP-MIB::ssErrorName.0 = STRING: systemStats\nUCD-SNMP-MIB::ssSwapIn.0 = INTEGER: 0 kB\nUCD-SNMP-MIB::ssSwapOut.0 = INTEGER: 0 kB\nUCD-SNMP-MIB::ssIOSent.0 = INTEGER: 353 blocks\/s\nUCD-SNMP-MIB::ssIOReceive.0 = INTEGER: 0 blocks\/s\nUCD-SNMP-MIB::ssSysInterrupts.0 = INTEGER: 537 interrupts\/s\nUCD-SNMP-MIB::ssSysContext.0 = INTEGER: 796 switches\/s\nUCD-SNMP-MIB::ssCpuUser.0 = INTEGER: 0\nUCD-SNMP-MIB::ssCpuSystem.0 = INTEGER: 1\nUCD-SNMP-MIB::ssCpuIdle.0 = INTEGER: 95\nUCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 7043838\nUCD-SNMP-MIB::ssCpuRawNice.0 = Counter32: 1157149\nUCD-SNMP-MIB::ssCpuRawSystem.0 = Counter32: 5023506\nUCD-SNMP-MIB::ssCpuRawIdle.0 = Counter32: 147653397\nUCD-SNMP-MIB::ssCpuRawWait.0 = Counter32: 9671287\nUCD-SNMP-MIB::ssCpuRawKernel.0 = Counter32: 0\nUCD-SNMP-MIB::ssCpuRawInterrupt.0 = Counter32: 352\nUCD-SNMP-MIB::ssIORawSent.0 = Counter32: 1866410120\nUCD-SNMP-MIB::ssIORawReceived.0 = Counter32: 2797478450\nUCD-SNMP-MIB::ssRawInterrupts.0 = Counter32: 597294992\nUCD-SNMP-MIB::ssRawContexts.0 = Counter32: 1239253106\nUCD-SNMP-MIB::ssCpuRawSoftIRQ.0 = Counter32: 338170\nUCD-SNMP-MIB::ssRawSwapIn.0 = Counter32: 0\nUCD-SNMP-MIB::ssRawSwapOut.0 = Counter32: 0<\/pre>\n\n\n\n<p>Angaben \u00fcber <strong>Partitionen<\/strong> und dere Auslastung bekommt man mit <code>snmpwalk -v2c -cpublic localhost .1.3.6.1.4.1.2021.9<\/code> bzw. <code>snmpwalk -v3 -u public -l authNoPriv -a MD5 -A auth_pwd_local localhost .1.3.6.1.4.1.2021.9<\/code> <a href=\"http:\/\/www.net-snmp.org\/docs\/mibs\/ucdavis.html\">[13]<\/a>, <a href=\"http:\/\/www.oidview.com\/mibs\/2021\/UCD-SNMP-MIB.html\">[14]<\/a>. Auf dem Caipirinha-Server ergibt dies dann:\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">UCD-SNMP-MIB::dskIndex.1 = INTEGER: 1\nUCD-SNMP-MIB::dskIndex.2 = INTEGER: 2\nUCD-SNMP-MIB::dskIndex.3 = INTEGER: 3\nUCD-SNMP-MIB::dskIndex.4 = INTEGER: 4\nUCD-SNMP-MIB::dskIndex.5 = INTEGER: 5\nUCD-SNMP-MIB::dskPath.1 = STRING: \/\nUCD-SNMP-MIB::dskPath.2 = STRING: \/home\nUCD-SNMP-MIB::dskPath.3 = STRING: \/home\/public\/Video\nUCD-SNMP-MIB::dskPath.4 = STRING: \/var\nUCD-SNMP-MIB::dskPath.5 = STRING: \/backup\nUCD-SNMP-MIB::dskDevice.1 = STRING: rootfs\nUCD-SNMP-MIB::dskDevice.2 = STRING: \/dev\/mapper\/cr_md2\nUCD-SNMP-MIB::dskDevice.3 = STRING: \/dev\/md3\nUCD-SNMP-MIB::dskDevice.4 = STRING: \/dev\/mapper\/cr_md1\nUCD-SNMP-MIB::dskDevice.5 = STRING: \/dev\/mapper\/cr_sde1\n...\nUCD-SNMP-MIB::dskMinPercent.1 = INTEGER: 30\nUCD-SNMP-MIB::dskMinPercent.2 = INTEGER: 10\nUCD-SNMP-MIB::dskMinPercent.3 = INTEGER: 5\nUCD-SNMP-MIB::dskMinPercent.4 = INTEGER: 20\nUCD-SNMP-MIB::dskMinPercent.5 = INTEGER: 10\nUCD-SNMP-MIB::dskTotal.1 = INTEGER: 51612944\nUCD-SNMP-MIB::dskTotal.2 = INTEGER: 901563648\nUCD-SNMP-MIB::dskTotal.3 = INTEGER: 2147483647\nUCD-SNMP-MIB::dskTotal.4 = INTEGER: 8253744\nUCD-SNMP-MIB::dskTotal.5 = INTEGER: 1922857728\nUCD-SNMP-MIB::dskAvail.1 = INTEGER: 37133060\nUCD-SNMP-MIB::dskAvail.2 = INTEGER: 622951360\nUCD-SNMP-MIB::dskAvail.3 = INTEGER: 922618048\nUCD-SNMP-MIB::dskAvail.4 = INTEGER: 2117264\nUCD-SNMP-MIB::dskAvail.5 = INTEGER: 1687921664\nUCD-SNMP-MIB::dskUsed.1 = INTEGER: 11858084\nUCD-SNMP-MIB::dskUsed.2 = INTEGER: 232815424\nUCD-SNMP-MIB::dskUsed.3 = INTEGER: 2147483647\nUCD-SNMP-MIB::dskUsed.4 = INTEGER: 5717212\nUCD-SNMP-MIB::dskUsed.5 = INTEGER: 234936064\nUCD-SNMP-MIB::dskPercent.1 = INTEGER: 24\nUCD-SNMP-MIB::dskPercent.2 = INTEGER: 27\nUCD-SNMP-MIB::dskPercent.3 = INTEGER: 76\nUCD-SNMP-MIB::dskPercent.4 = INTEGER: 73\nUCD-SNMP-MIB::dskPercent.5 = INTEGER: 12\n...\nUCD-SNMP-MIB::dskErrorFlag.1 = INTEGER: noError(0)\nUCD-SNMP-MIB::dskErrorFlag.2 = INTEGER: noError(0)\nUCD-SNMP-MIB::dskErrorFlag.3 = INTEGER: noError(0)\nUCD-SNMP-MIB::dskErrorFlag.4 = INTEGER: noError(0)\nUCD-SNMP-MIB::dskErrorFlag.5 = INTEGER: noError(0)\nUCD-SNMP-MIB::dskErrorMsg.1 = STRING:\nUCD-SNMP-MIB::dskErrorMsg.2 = STRING:\nUCD-SNMP-MIB::dskErrorMsg.3 = STRING:\nUCD-SNMP-MIB::dskErrorMsg.4 = STRING:\nUCD-SNMP-MIB::dskErrorMsg.5 = STRING:<\/pre>\n\n\n\n<p>Einen \u00dcberblick \u00fcber die <strong>Interfaces<\/strong> an einer Maschine bekommt man mit <code>snmpwalk -v2c -cpublic localhost .1.3.6.1.2.1.2.2.1<\/code> bzw. <code>snmpwalk -v3 -u public -l authNoPriv -a MD5 -A auth_pwd_local localhost .1.3.6.1.2.1.2.2.1<\/code> <a href=\"http:\/\/ftp.uni-bayreuth.de\/netsoftware\/map\/mib.mib\">[15]<\/a>. Dies liefert als Ausgabe auf dem Caipirinha-Server:\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">IF-MIB::ifIndex.1 = INTEGER: 1\nIF-MIB::ifIndex.2 = INTEGER: 2\nIF-MIB::ifIndex.3 = INTEGER: 3\nIF-MIB::ifIndex.68 = INTEGER: 68\nIF-MIB::ifIndex.70 = INTEGER: 70\nIF-MIB::ifIndex.72 = INTEGER: 72\nIF-MIB::ifIndex.73 = INTEGER: 73\nIF-MIB::ifIndex.74 = INTEGER: 74\nIF-MIB::ifDescr.1 = STRING: lo\nIF-MIB::ifDescr.2 = STRING: eth0\nIF-MIB::ifDescr.3 = STRING: eth1\nIF-MIB::ifDescr.68 = STRING: tun2\nIF-MIB::ifDescr.70 = STRING: tun0\nIF-MIB::ifDescr.72 = STRING: tun1\nIF-MIB::ifDescr.73 = STRING: tun4\nIF-MIB::ifDescr.74 = STRING: tun3\n...\nIF-MIB::ifMtu.1 = INTEGER: 16436\nIF-MIB::ifMtu.2 = INTEGER: 1500\nIF-MIB::ifMtu.3 = INTEGER: 1500\nIF-MIB::ifMtu.68 = INTEGER: 1500\nIF-MIB::ifMtu.70 = INTEGER: 1500\nIF-MIB::ifMtu.72 = INTEGER: 1500\nIF-MIB::ifMtu.73 = INTEGER: 1500\nIF-MIB::ifMtu.74 = INTEGER: 1500\nIF-MIB::ifSpeed.1 = Gauge32: 10000000\nIF-MIB::ifSpeed.2 = Gauge32: 1000000000\nIF-MIB::ifSpeed.3 = Gauge32: 10000000\nIF-MIB::ifSpeed.68 = Gauge32: 0\nIF-MIB::ifSpeed.70 = Gauge32: 0\nIF-MIB::ifSpeed.72 = Gauge32: 0\nIF-MIB::ifSpeed.73 = Gauge32: 0\nIF-MIB::ifSpeed.74 = Gauge32: 0\n...\nIF-MIB::ifAdminStatus.1 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.2 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.3 = INTEGER: down(2)\nIF-MIB::ifAdminStatus.68 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.70 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.72 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.73 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.74 = INTEGER: up(1)\nIF-MIB::ifOperStatus.1 = INTEGER: up(1)\nIF-MIB::ifOperStatus.2 = INTEGER: up(1)\nIF-MIB::ifOperStatus.3 = INTEGER: down(2)\nIF-MIB::ifOperStatus.68 = INTEGER: up(1)\nIF-MIB::ifOperStatus.70 = INTEGER: up(1)\nIF-MIB::ifOperStatus.72 = INTEGER: up(1)\nIF-MIB::ifOperStatus.73 = INTEGER: up(1)\nIF-MIB::ifOperStatus.74 = INTEGER: up(1)\n...\nIF-MIB::ifInOctets.1 = Counter32: 123922180\nIF-MIB::ifInOctets.2 = Counter32: 2916738370\nIF-MIB::ifInOctets.3 = Counter32: 0\nIF-MIB::ifInOctets.68 = Counter32: 3764554219\nIF-MIB::ifInOctets.70 = Counter32: 99214022\nIF-MIB::ifInOctets.72 = Counter32: 5293853\nIF-MIB::ifInOctets.73 = Counter32: 0\nIF-MIB::ifInOctets.74 = Counter32: 0\n...<\/pre>\n\n\n\n<p>Interessanter is es aber, diese Abfrage bei einem <strong>Router<\/strong> zu machen. Ein solches Beispiel ist hier wiedergegeben:\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">IF-MIB::ifIndex.1 = INTEGER: 1\nIF-MIB::ifIndex.2 = INTEGER: 2\nIF-MIB::ifIndex.3 = INTEGER: 3\nIF-MIB::ifIndex.4 = INTEGER: 4\nIF-MIB::ifIndex.12 = INTEGER: 12\nIF-MIB::ifIndex.21 = INTEGER: 21\nIF-MIB::ifIndex.22 = INTEGER: 22\nIF-MIB::ifIndex.23 = INTEGER: 23\nIF-MIB::ifIndex.24 = INTEGER: 24\nIF-MIB::ifIndex.25 = INTEGER: 25\nIF-MIB::ifIndex.26 = INTEGER: 26\nIF-MIB::ifDescr.1 = STRING: LOCAL_LOOPBACK\nIF-MIB::ifDescr.2 = STRING: LAN\nIF-MIB::ifDescr.3 = STRING: WLAN\nIF-MIB::ifDescr.4 = STRING: ATM1\nIF-MIB::ifDescr.12 = STRING: PPPoE1\nIF-MIB::ifDescr.21 = STRING: WDS1\nIF-MIB::ifDescr.22 = STRING: WDS2\nIF-MIB::ifDescr.23 = STRING: WDS3\nIF-MIB::ifDescr.24 = STRING: WDS4\nIF-MIB::ifDescr.25 = STRING: WAN2\nIF-MIB::ifDescr.26 = STRING: COM1\n...\nIF-MIB::ifMtu.1 = INTEGER: 1500\nIF-MIB::ifMtu.2 = INTEGER: 1500\nIF-MIB::ifMtu.3 = INTEGER: 1500\nIF-MIB::ifMtu.4 = INTEGER: 1500\nIF-MIB::ifMtu.12 = INTEGER: 1492\nIF-MIB::ifMtu.21 = INTEGER: 1500\nIF-MIB::ifMtu.22 = INTEGER: 1500\nIF-MIB::ifMtu.23 = INTEGER: 1500\nIF-MIB::ifMtu.24 = INTEGER: 1500\nIF-MIB::ifMtu.25 = INTEGER: 1500\nIF-MIB::ifMtu.26 = INTEGER: 1500\nIF-MIB::ifSpeed.1 = Gauge32: 0\nIF-MIB::ifSpeed.2 = Gauge32: 100000000\nIF-MIB::ifSpeed.3 = Gauge32: 54000000\nIF-MIB::ifSpeed.4 = Gauge32: 224000\nIF-MIB::ifSpeed.12 = Gauge32: 2304000\nIF-MIB::ifSpeed.21 = Gauge32: 54000000\nIF-MIB::ifSpeed.22 = Gauge32: 54000000\nIF-MIB::ifSpeed.23 = Gauge32: 54000000\nIF-MIB::ifSpeed.24 = Gauge32: 54000000\nIF-MIB::ifSpeed.25 = Gauge32: 100000000\nIF-MIB::ifSpeed.26 = Gauge32: 0\n...\nIF-MIB::ifAdminStatus.1 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.2 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.3 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.4 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.12 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.21 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.22 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.23 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.24 = INTEGER: up(1)\nIF-MIB::ifAdminStatus.25 = INTEGER: 0\nIF-MIB::ifAdminStatus.26 = INTEGER: 0\nIF-MIB::ifOperStatus.1 = INTEGER: up(1)\nIF-MIB::ifOperStatus.2 = INTEGER: up(1)\nIF-MIB::ifOperStatus.3 = INTEGER: up(1)\nIF-MIB::ifOperStatus.4 = INTEGER: up(1)\nIF-MIB::ifOperStatus.12 = INTEGER: up(1)\nIF-MIB::ifOperStatus.21 = INTEGER: up(1)\nIF-MIB::ifOperStatus.22 = INTEGER: up(1)\nIF-MIB::ifOperStatus.23 = INTEGER: up(1)\nIF-MIB::ifOperStatus.24 = INTEGER: up(1)\nIF-MIB::ifOperStatus.25 = INTEGER: 0\nIF-MIB::ifOperStatus.26 = INTEGER: 0\n...\nIF-MIB::ifInOctets.1 = Counter32: 210\nIF-MIB::ifInOctets.2 = Counter32: 0\nIF-MIB::ifInOctets.3 = Counter32: 101309606\nIF-MIB::ifInOctets.4 = Counter32: 511415216\nIF-MIB::ifInOctets.12 = Counter32: 250011578\nIF-MIB::ifInOctets.21 = Counter32: 0\nIF-MIB::ifInOctets.22 = Counter32: 0\nIF-MIB::ifInOctets.23 = Counter32: 0\nIF-MIB::ifInOctets.24 = Counter32: 0\nIF-MIB::ifInOctets.25 = Counter32: 0\nIF-MIB::ifInOctets.26 = Counter32: 0\n...\nIF-MIB::ifOutOctets.1 = Counter32: 0\nIF-MIB::ifOutOctets.2 = Counter32: 62445328\nIF-MIB::ifOutOctets.3 = Counter32: 0\nIF-MIB::ifOutOctets.4 = Counter32: 109637356\nIF-MIB::ifOutOctets.12 = Counter32: 50021044\nIF-MIB::ifOutOctets.21 = Counter32: 0\nIF-MIB::ifOutOctets.22 = Counter32: 0\nIF-MIB::ifOutOctets.23 = Counter32: 0\nIF-MIB::ifOutOctets.24 = Counter32: 0\nIF-MIB::ifOutOctets.25 = Counter32: 0\nIF-MIB::ifOutOctets.26 = Counter32: 0<\/pre>\n\n\n\n<p>Die interessanten Interfaces sind hier #12 (PPPoE1), welches  Statistiken der \u00fcber ADSL transportierten Datenmengen an diesem Router z\u00e4hlt und #3, welches die \u00fcber das WLAN transportierten Datenmengen  protokolliert. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00dcber das SNMP-Protokoll kann man Daten \u00fcber den Zustand eines Netzknotens abrufen, also beispielsweise \u00fcber die Auslastung, den Datendurchsatz, etc.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35],"tags":[70,71],"class_list":["post-90","post","type-post","status-publish","format-standard","hentry","category-it","tag-snmp","tag-snmptrap"],"_links":{"self":[{"href":"https:\/\/caipirinha.spdns.org\/wp\/index.php?rest_route=\/wp\/v2\/posts\/90","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/caipirinha.spdns.org\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/caipirinha.spdns.org\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/caipirinha.spdns.org\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/caipirinha.spdns.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=90"}],"version-history":[{"count":2,"href":"https:\/\/caipirinha.spdns.org\/wp\/index.php?rest_route=\/wp\/v2\/posts\/90\/revisions"}],"predecessor-version":[{"id":120,"href":"https:\/\/caipirinha.spdns.org\/wp\/index.php?rest_route=\/wp\/v2\/posts\/90\/revisions\/120"}],"wp:attachment":[{"href":"https:\/\/caipirinha.spdns.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=90"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/caipirinha.spdns.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=90"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/caipirinha.spdns.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}