💡Tipps & Tricks

Was im Betrieb wirklich hilft: Fehlermeldungen richtig lesen, schneller abfragen, Zähler korrekt auswerten und SNMP sicher betreiben.

🩺Fehlersuche nach Symptom

Was zeigt das Werkzeug?
Timeout: No Response from 192.0.2.10

Es kam gar keine Antwort. Bei SNMPv1/v2c antwortet der Agent auf eine falsche Community nicht – der Manager sieht dann ebenfalls nur einen Timeout.

Häufige Ursachen
  • snmpd läuft nicht oder lauscht nur auf 127.0.0.1 (agentAddress)
  • Firewall auf dem Agenten oder dazwischen lässt udp/161 nicht durch
  • falsche Community oder Quelladresse nicht in rocommunity erlaubt
  • falsche Version (-v1 statt -v2c) oder falscher Port
  • Antwort zu groß und wird unterwegs fragmentiert verworfen – GetBulk mit kleinerem -Cr testen
Prüfen
# auf dem Agenten
sudo ss -ulpn | grep ':161'
sudo snmpget -v2c -c beispiel-community 127.0.0.1 sysUpTime.0
# vom Manager, mehr Geduld und Paket-Dump
snmpget -d -t 3 -r 1 -v2c -c beispiel-community 192.0.2.10 sysUpTime.0
sudo tcpdump -ni any udp port 161
Die Faustregel
Timeout = das Paket kommt nicht an oder wird ignoriert (Netz, Firewall, agentAddress, Community). No Such … = der Agent hat geantwortet, die Frage war falsch oder nicht erlaubt. Authentication/Decryption = SNMPv3-Parameter passen nicht zusammen.

📎 Quellen: snmpcmd(1) · RFC 3414 – User-based Security Model · RFC 3416 – Protokolloperationen (PDUs) · snmptrapd.conf(5) · snmpwalk(1) / snmpbulkwalk(1)

📈Bandbreite aus zwei Abfragen

Δ Oktette
1.125.000.000
kein Überlauf
Durchsatz
30 Mbit/s
= Δ · 8 / 300 s
Auslastung
3 %
✅ Bei 1.000 Mbit/s läuft ein 64-Bit-Zähler unter Volllast nach 4.676 Jahre über. Innerhalb des Abfrageintervalls ist höchstens ein Überlauf möglich – die Rechnung ist eindeutig.

Setzt der Agent die Zähler zurück (Neustart, erkennbar an kleinerer sysUpTime oder geänderter ifCounterDiscontinuityTime), ist die Differenz bedeutungslos – gute Monitoring-Systeme verwerfen diesen einen Messpunkt.

📎 Quellen: RFC 2863 – IF-MIB · RFC 2578 – SMIv2

🚀Performance: GetBulk statt Walk

Die ifTable des Beispiel-Agenten (3 Schnittstellen, 12 Spalten = 36 Werte), im Browser nachgezählt:

BefehlAnfragenWerte
snmpwalk3736
snmpbulkwalk -Cr10436
snmpbulkwalk -Cr25236
  • ⏱️ Jede Anfrage kostet eine Round-Trip-Zeit. Bei 20 ms Latenz sind 37 Anfragen ≈ 740 ms, 2 Anfragen ≈ 40 ms.
  • 🎯 Nur walken, was gebraucht wird: IF-MIB::ifHCInOctets statt mib-2. Ein Walk über den ganzen Baum eines großen Switches kann Minuten dauern und die CPU des Geräts belasten.
  • 🧺 Mehrere Spalten in einer GetBulk-Anfrage: snmpbulkget -Cr20 … ifHCInOctets ifHCOutOctets liefert beide Spalten verzahnt.
  • ⌛ In langsamen Netzen -t (Timeout) erhöhen und -r (Wiederholungen) senken – sonst stapeln sich Wiederholungen.

📎 Quellen: RFC 3416 – Protokolloperationen (PDUs) · snmpwalk(1) / snmpbulkwalk(1)

🛡️Sicherheit – Checkliste

  • 🚫 SNMPv1/v2c nie über das Internet und nie mit offenem udp/161 nach außen: Die Community steht im Klartext im Paket, und offene Agenten werden für Reflexionsangriffe missbraucht (kleine Anfrage, große Antwort).
  • 🔐 SNMPv3 mit authPriv, SHA-256 (oder stärker) und AES – wenn beide Seiten es unterstützen.
  • 👁️ Views eng halten: rouser monitor priv -V monitoring, für v2c höchstens -V systemonly.
  • 🌐 Quellnetz begrenzen: rocommunity … 198.51.100.0/24 plus Firewall-Regel auf dem Agenten.
  • ✍️ Kein Schreibzugriff, solange er nicht gebraucht wird – kein rwcommunity, rwuser nur mit eigener, kleiner View.
  • 🔑 Passwörter ≥ 8 Zeichen (Pflicht) und je Zweck ein eigener Benutzer; public/private nie behalten.
  • 🧩 extend/pass-Skripte laufen mit den Rechten von snmpd – nur eigene, geprüfte Programme eintragen.

📎 Quellen: RFC 3414 – User-based Security Model · RFC 3415 – View-based Access Control · RFC 3826 – AES-CFB-128 für USM · RFC 7860 – HMAC-SHA-2 für USM · snmpd.conf(5) · EXAMPLE.conf (Beispielkonfiguration)

📚MIB-Dateien laden

  • -m ALL lädt alle MIBs aus den Suchpfaden, -m +CISCO-SMI fügt eine hinzu. Dauerhaft: mibs +ALL in ~/.snmp/snmp.conf oder Umgebungsvariable MIBS.
  • -M +/opt/mibs bzw. MIBDIRS ergänzt Verzeichnisse. Herstellerdateien dort ablegen – der Dateiname muss nicht zum Modulnamen passen.
  • Auf Debian/Ubuntu steht in /etc/snmp/snmp.conf häufig die Zeile mibs :, die das Laden abschaltet; auskommentieren (die Standard-MIBs liefert dort das Paket snmp-mibs-downloader).
  • snmptranslate -On IF-MIB::ifHCInOctets → .1.3.6.1.2.1.31.1.1.1.6, snmptranslate -Tp -IR ifXTable zeichnet den Teilbaum.

📎 Quelle: snmpcmd(1)

🖨️Ausgabe für Skripte formen

-OnOIDs numerisch.1.3.6.1.2.1.1.5.0 = STRING: gw1.example.org
-OfOIDs mit vollem Pfad.iso.org.dod.internet.mgmt.mib-2.system.sysName.0 = …
-Osnur der letzte NamesysName.0 = STRING: gw1.example.org
-Oqohne „=“ und TypSNMPv2-MIB::sysName.0 gw1.example.org
-Ovnur der WertSTRING: gw1.example.org
-Oqvnur der nackte Wert – ideal für Skriptegw1.example.org
-OeAufzählungen als ZahlIF-MIB::ifOperStatus.3 = INTEGER: 2
# Uptime eines Agenten als Zahl (Hundertstelsekunden)
snmpget -Oqvt -v3 … 192.0.2.10 SNMPv2-MIB::sysUpTime.0

📎 Quelle: snmpcmd(1)

📡Einbindung ins Monitoring (allgemein)

⏲️
Polling + Traps

Zustände regelmäßig abfragen (typisch 1–5 min) und Traps nur als schnellen Hinweis nutzen – Traps können verloren gehen.

🧮
Raten statt Rohwerte

Counter speichern, Differenz je Intervall bilden, Überlauf und Zählerrücksetzung (sysUpTime kleiner) erkennen.

🏷️
Stabile Zuordnung

Schnittstellen über ifName/ifAlias statt über den ifIndex zuordnen – der kann sich nach Neustarts ändern.

🔒
Zugang pro System

eigener SNMPv3-Benutzer für das Monitoring, nur lesend, View mit genau den benötigten Teilbäumen.

Ob Zabbix, LibreNMS, Icinga/Nagios, Prometheus mit SNMP-Exporter oder Telegraf – alle nutzen dieselben Bausteine: GetBulk-Walks über Tabellen, Counter64 für Oktette, Traps/Informs über snmptrapd oder einen eigenen Empfänger auf udp/162.

📎 Quellen: RFC 2863 – IF-MIB · RFC 3416 – Protokolloperationen (PDUs) · RFC 3418 – SNMPv2-MIB