Zum Hauptinhalt springen

RFC 1157 - Einfaches Netzwerkverwaltungsprotokoll (A Simple Network Management Protocol, SNMP)

Network Working Group
Request for Comments: 1157
Veraltet: RFC 1098

Autoren:
J. Case (SNMP Research)
M. Fedor (Performance Systems International)
M. Schoffstall (Performance Systems International)
J. Davin (MIT Laboratory for Computer Science)

Veröffentlichungsdatum: Mai 1990


Zusammenfassung (Abstract)

Dieses RFC definiert ein einfaches Protokoll, mit dem Verwaltungsinformationen für ein Netzwerkelement von logisch entfernten Benutzern überprüft oder geändert werden können. Insbesondere bieten diese Dokumente zusammen mit ihren begleitenden Memos, die die Struktur der Verwaltungsinformationen und die Management Information Base beschreiben, eine einfache, praktikable Architektur und ein System zur Verwaltung von TCP/IP-basierten Internets und insbesondere des Internets.

Das Internet Activities Board (IAB) empfiehlt, dass alle IP- und TCP-Implementierungen netzwerkverwaltbar sein sollten. Dies bedeutet die Implementierung der Internet MIB (RFC 1156) und mindestens eines der beiden empfohlenen Verwaltungsprotokolle: SNMP (RFC 1157) oder CMOT (RFC 1095).


Inhaltsverzeichnis (Table of Contents)


1. Status dieses Memos

Dies ist ein Internet-Standardprotokoll. Das IAB empfiehlt, dass alle IP- und TCP-Implementierungen netzwerkverwaltbar sein sollten, was die Implementierung von SNMP bedeutet.


2. Einführung

Ziel von SNMP: Bereitstellung eines einfachen Protokolls zur Verwaltung von Netzwerkgeräten im Internet.

Hauptmerkmale:

  • 🔍 Überwachung (Monitoring): Abfrage des Gerätestatus und der Statistiken
  • ⚙️ Konfiguration: Änderung der Gerätekonfigurationsparameter
  • 🔔 Benachrichtigungen: Empfang von Geräteausnahmewarnungen (Traps)
  • 📊 Einfachheit: Leicht zu implementieren und bereitzustellen

SNMP-Funktionsweise:

Verwaltungsstation (Manager)             Verwaltetes Gerät (Agent)
| |
|------ GetRequest (Abfrage) --------->|
|<----- GetResponse (Antwort) ---------|
| |
|------ SetRequest (Setzen) ---------->|
|<----- GetResponse (Bestätigung) -----|
| |
|<----- Trap (unaufgeforderte Warnung)-|

3. SNMP-Architektur

3.1 Ziele der Architektur

  1. Einfachheit: Das Protokoll ist einfach und leicht zu implementieren
  2. Erweiterbarkeit: Unterstützung für das Hinzufügen neuer Verwaltungsobjekte
  3. Unabhängigkeit: Unabhängig von spezifischen Netzwerkarchitekturen
  4. Minimale Auswirkungen: Minimale Auswirkungen auf die Geräteleistung

3.2 Elemente der Architektur

3.2.1 Umfang der Verwaltungsinformationen

Von SNMP verwaltete Informationen umfassen:

  • Schnittstellenstatistiken (Verkehr, Fehler usw.)
  • Routingtabellen
  • TCP/UDP-Verbindungen
  • Systeminformationen

3.2.2 Darstellung der Verwaltungsinformationen

Verwendet die Darstellung der Management Information Base (MIB):

Beispiel für ein MIB-Objekt:

Objektidentifikator (OID): 1.3.6.1.2.1.1.1.0
Name: sysDescr (Systembeschreibung)
Syntax: OCTET STRING
Zugriff: read-only
Wert: "Cisco IOS Software, Version 15.2"

3.2.3 Unterstützte Operationen

OperationBeschreibungRichtung
GetRequestAnfrage zum Abrufen eines ObjektwertsManager → Agent
GetNextRequestAnfrage zum Abrufen des nächsten Objektwerts (zum Durchlaufen)Manager → Agent
SetRequestAnfrage zum Setzen eines ObjektwertsManager → Agent
GetResponseAntwort auf Get/Set-AnfrageAgent → Manager
TrapAsynchrone EreignisbenachrichtigungAgent → Manager

3.2.4 Form und Bedeutung von Protokollaustauschen

SNMP verwendet das UDP-Protokoll:

  • Verwaltungsstation-Port: 162 (Empfang von Traps)
  • Agent-Port: 161 (Empfang von Get/Set)

3.2.5 Definition administrativer Beziehungen

SNMP verwendet einen Community-Namen (Community Name) für einfache Authentifizierung:

Community-Name: "public" (standardmäßig nur lesbar)
Community-Name: "private" (standardmäßig lesen-schreiben)

3.2.6 Identifizierung verwalteter Objekte

Objektinstanz-Identifikation:

Skalare Objekte:

sysDescr.0  (.0 für Instanz hinzufügen)

Tabellenobjekte:

ifDescr.1   (Beschreibung der Schnittstelle 1)
ifDescr.2 (Beschreibung der Schnittstelle 2)

4. Protokollspezifikation

4.1 Verfahrenselemente

SNMP-Nachrichtenformat

SNMP-Nachricht ::= SEQUENCE {
version INTEGER, -- SNMP-Version (0 = SNMPv1)
community OCTET STRING, -- Community-Name
data PDUs -- Protokolldateneinheit
}

4.1.1 Gemeinsame Konstrukte

Von allen PDUs gemeinsam genutzte Felder:

  • request-id: Anforderungsidentifikator
  • error-status: Fehlerstatus
  • error-index: Fehlerindex
  • variable-bindings: Variablenbindungsliste

4.1.2 GetRequest-PDU

Zweck: Werte eines oder mehrerer Verwaltungsobjekte abrufen.

Beispiel:

GetRequest {
request-id: 1234,
error-status: 0,
error-index: 0,
variable-bindings: [
{name: 1.3.6.1.2.1.1.1.0, value: NULL}, -- sysDescr
{name: 1.3.6.1.2.1.1.3.0, value: NULL} -- sysUpTime
]
}

4.1.3 GetNextRequest-PDU

Zweck: Den lexikografischen Nachfolger jedes Variablennamens in der Variablenbindungsliste abrufen.

Beispiel für Tabellendurchlauf:

Schritt 1: GetNextRequest(ifDescr)
Antwort: ifDescr.1 = "eth0"

Schritt 2: GetNextRequest(ifDescr.1)
Antwort: ifDescr.2 = "eth1"

Schritt 3: GetNextRequest(ifDescr.2)
Antwort: ifType.1 = 6 (nächstes Objekt)

4.1.4 GetResponse-PDU

Zweck: Antwort auf GetRequest, GetNextRequest oder SetRequest.

Fehlerstatus:

WertNameBeschreibung
0noErrorErfolg
1tooBigAntwort zu groß
2noSuchNameObjekt existiert nicht
3badValueUngültiger Wert
4readOnlyObjekt ist nur lesbar
5genErrAllgemeiner Fehler

4.1.5 SetRequest-PDU

Zweck: Werte eines oder mehrerer Verwaltungsobjekte ändern.

Beispiel:

SetRequest {
request-id: 1235,
error-status: 0,
error-index: 0,
variable-bindings: [
{name: 1.3.6.1.2.1.1.6.0, value: "New Location"} -- sysLocation
]
}

4.1.6 Trap-PDU

Zweck: Der Agent sendet asynchrone Benachrichtigungen an den Manager.

Trap-Typen:

TrapBeschreibung
coldStartGerät-Kaltstart
warmStartGerät-Warmstart
linkDownVerbindung unterbrochen
linkUpVerbindung wiederhergestellt
authenticationFailureAuthentifizierungsfehler
egpNeighborLossEGP-Nachbar verloren
enterpriseSpecificHerstellerspezifisches Ereignis

Trap-Nachrichtenformat:

Trap-PDU ::= SEQUENCE {
enterprise OBJECT IDENTIFIER, -- Unternehmens-OID
agent-addr NetworkAddress, -- Agent-Adresse
generic-trap INTEGER, -- Generischer Trap-Typ
specific-trap INTEGER, -- Spezifischer Trap-Code
time-stamp TimeTicks, -- Zeitstempel
variable-bindings VarBindList -- Variablenbindungen
}

5. Definitionen

ASN.1-Definitionen (vereinfachte Version):

RFC1157-SNMP DEFINITIONS ::= BEGIN

IMPORTS
ObjectName, ObjectSyntax, NetworkAddress, IpAddress, TimeTicks
FROM RFC1155-SMI;

-- PDU-Typen
PDUs ::= CHOICE {
get-request GetRequest-PDU,
get-next-request GetNextRequest-PDU,
get-response GetResponse-PDU,
set-request SetRequest-PDU,
trap Trap-PDU
}

-- GetRequest, GetNextRequest, SetRequest teilen diese Struktur
GetRequest-PDU ::= [0] IMPLICIT PDU
GetNextRequest-PDU ::= [1] IMPLICIT PDU
SetRequest-PDU ::= [3] IMPLICIT PDU

PDU ::= SEQUENCE {
request-id INTEGER,
error-status INTEGER,
error-index INTEGER,
variable-bindings VarBindList
}

GetResponse-PDU ::= [2] IMPLICIT PDU

Trap-PDU ::= [4] IMPLICIT SEQUENCE {
enterprise OBJECT IDENTIFIER,
agent-addr NetworkAddress,
generic-trap INTEGER,
specific-trap INTEGER,
time-stamp TimeTicks,
variable-bindings VarBindList
}

VarBindList ::= SEQUENCE OF VarBind

VarBind ::= SEQUENCE {
name ObjectName,
value ObjectSyntax
}

END

6. Danksagungen

Die Entwicklung von SNMP profitierte von der breiten Teilnahme und den Beiträgen der Internet-Community.


7. Referenzen

  • [RFC1155] - Structure and Identification of Management Information for TCP/IP-based Internets
  • [RFC1156] - Management Information Base for Network Management of TCP/IP-based internets
  • [RFC1098] - A Simple Network Management Protocol (durch dieses RFC veraltet)

8. Sicherheitsüberlegungen

Sicherheitsbeschränkungen von SNMPv1:

⚠️ Schwache Authentifizierung: Community-Namen werden im Klartext übertragen
⚠️ Keine Verschlüsselung: Alle Daten werden im Klartext übertragen
⚠️ Kein Integritätsschutz: Nachrichten können manipuliert werden

Abhilfemaßnahmen:

  • Starke Community-Namen verwenden
  • SNMP-Zugriff nach IP-Adresse einschränken
  • Nur-Lese-Community-Namen für Überwachung verwenden
  • Firewalls zum Schutz von SNMP-Ports einsetzen

Verbesserungen in nachfolgenden Versionen:

  • SNMPv2c: Erweiterte Protokolloperationen
  • SNMPv3: Hinzufügung von Authentifizierung, Verschlüsselung und Zugriffskontrolle (RFC 3414)

9. Adressen der Autoren

(Das Originaldokument enthält Kontaktinformationen der Autoren)


SNMP ist das grundlegende Protokoll für das Netzwerkmanagement. Obwohl SNMPv1 schwache Sicherheit aufweist, wird es aufgrund seiner Einfachheit immer noch weithin verwendet.

Gängige SNMP-Tools:

# Systembeschreibung abfragen
snmpget -v1 -c public 192.168.1.1 sysDescr.0

# Schnittstellentabelle durchlaufen
snmpwalk -v1 -c public 192.168.1.1 ifTable

# Systemstandort setzen
snmpset -v1 -c private 192.168.1.1 sysLocation.0 s "Beijing"

Gängige OIDs:

  • 1.3.6.1.2.1.1.1.0 - sysDescr (Systembeschreibung)
  • 1.3.6.1.2.1.1.3.0 - sysUpTime (System-Laufzeit)
  • 1.3.6.1.2.1.2.2.1.2 - ifDescr (Schnittstellenbeschreibung)
  • 1.3.6.1.2.1.2.2.1.10 - ifInOctets (Eingangs-Oktette der Schnittstelle)

Verwandte RFCs:

  • RFC 1155 - SMI (Struktur der Verwaltungsinformationen)
  • RFC 1156 - MIB-I
  • RFC 1213 - MIB-II
  • RFC 3414 - SNMPv3-Sicherheit