Benutzer-Werkzeuge

Webseiten-Werkzeuge


lager:lok_netze:riplabor

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
lager:lok_netze:riplabor [2014/10/13 08:51] – angelegt richardlager:lok_netze:riplabor [2025/11/19 17:19] (aktuell) – Status der Diskussion geändert richard
Zeile 1: Zeile 1:
-~~DISCUSSION|Ergänzungen~~ +~~DISCUSSION:off|Ergänzungen~~ 
-====== RIP-Laborübung ======+====== RIP-Laborübung mit VMs ======
  
-===== Allgemeine Informationen zu RIP =====+**IN ARBEIT** 
 + 
 +===== Hinweis-Seite: ===== 
 + 
 +Offizielle Dokumentation zu ''quagga'': 
 +http://www.nongnu.org/quagga/docs.html 
 + 
 +HowTo: 
 +http://opentodo.net/2012/08/configuring-routing-protocols-with-quagga/ 
 + 
 + 
 + 
 +===== Allgemeine Informationen zu quagga ===== 
 + 
 +Unter Linux kann das Software-Paket ''quagga'' verwendet werden, um die einzelnen Routing Protokolle zu steuern. Folgende Module stehen unter ''quagga'' zur Verfügung: 
 +^Protokoll ^ Modulname in ''quagga''
 +| Konfiguration-Frontend für ''quagga'' | ''zebra''((Kernel-Interface, Statische Routen)) | 
 +| RIPv1/RIPv2 für IPv4 | ''ripd''((''ripd'': **R**outing **I**nformation **P**rotocol **D**aemon)) | 
 +| RIPv1/RIPv2 für IPv6 | ''ripngd''((''ripngd'': **R**outing **I**nformation **P**rotocol **N**ext **G**eneration **D**aemon)) | 
 +| OSPFv2/OSPFv3 für IPv4 | ''ospfd''((''osfpd'': **O**pen **S**hortest **P**ath **F**irst **D**aemon)) | 
 +| OSPFv2/OSPFv3 für IPv6 | ''ospf6d''((''osfp6d'': **O**pen **S**hortest **P**ath **F**irst IPv**6** **D**aemon)) | 
 +| BGP für IPv4/IPv6 | ''bgpd''((''bgpd'': **B**order **G**ateway **P**rotocol **D**aemon))| 
 +| IS-IS für IPv4/IPv6 | ''isisd''((''isisd'': **I**ntermediate **S**ystem to **I**ntermediate **S**ystem **D**aemon)) |  
 + 
 +Daneben gibt es noch die Module ''babeld'', ''osrd'', ''ldpd'' und ''bfdd'' auf die hier nicht weiter eingegangen wird. 
 + 
 +Die gesamte Architektur sieht wie folgt aus: 
 + 
 +**BILD mit quagga-Modulen** 
 + 
 +Der ''zebra''-Daemon((Daemon: Ein Daemon stellt unter Linux einen Dienst bereit. Z.B. Der Druckerwarteschlagen-Daemon ''cups'')) stellt als Routing-Manager die übergeordnete Schnittstelle zu den Untermodulen dar. Das ''zebra''-Modul stößt u.a. die Aktualisierung der Kernel-Routing-Table Einträge an, beobachten die Schnittstellen und tauschen Routing-Informationen zwischen den Routing Modulen aus. 
 + 
 +==== Routing aktivieren (FORWARDING) ==== 
 + 
 +Um einen PC zum Router zu machen, muss dieser in den ''FORWARDING''-Modus versetzt werden. Das heißt der PC kann Datenpakete über Schnittstellen hinweg weiterleiten. Normalerweise behandelt ein PC jede Schnittstelle getrennt und würde die Datenpakete nicht weiterleiten. 
 + 
 +Unter Linux geschieht dies über den folgenden Befehl: 
 +<code>sudo sysctl net.ipv4.ip_forward=1</code> 
 + 
 +Über den folgenden Befehl kann der aktuelle Status des ''FORWARDING'' überprüft werden: 
 +<code>cat /proc/sys/net/ipv4/ip_forward 
 +1: FORWARDING aktiviert 
 +0: FORWARDING deaktiviert</code>
  
 ===== Einrichten der virtuellen Maschine ===== ===== Einrichten der virtuellen Maschine =====
Zeile 10: Zeile 52:
 ===== Quagga einrichten ===== ===== Quagga einrichten =====
  
-Der ''quagga''+Der ''quagga''-Daemon speichert seine Konfiguration unter ''/etc/quagga/''. Dort liegen nach der Installation zu nächst nur zwei Dateien: 
 +^ Dateiname ^ Bedeutung ^ 
 +| ''/etc/quagga/daemons'' | Hier werden die einzelnen Module mit ''yes/no'' aktiviert/deaktiviert | 
 +| ''/etc/quagga/debian.conf'' | Hier werden die Ports und IP-Adressen der einzelne Konfigurationsschnittstellen gesetzt. | 
 + 
 +Damit überhaupt ein Routing Protokoll gestartet wird, muss das entsprechende Modul in der ''/etc/quagga/daemons'' auf ''yes'' gesetzt werden. 
 +<code> 
 +zebra=yes 
 +... 
 +ripd=yes  
 +... 
 +</code> 
 + 
 +Damit die einzelnen Module wissen, was zu tun ist, benötigen auch diese eine Konfigurationsdatei. Am besten nutzt mal als Ausgangspunkt die mitgelieferten Beispielkonfigurationen. Diese liegen im folgenden Ordner: 
 +<code>/usr/share/doc/quagga/examples/</code> 
 + 
 +Mit dem folgenden Befehl, werden die beiden Beispielkonfigurationen für ''zebra'' und ''ripd'' in den ''/etc/quagga/''-Ordner kopiert. 
 +<code> 
 +sudo cp /usr/share/doc/quagga/examples/zebra.conf.sample /etc/quagga/zebra.conf 
 +sudo cp /usr/share/doc/quagga/examples/ripd.conf.sample /etc/quagga/ripd.conf 
 +</code> 
 +HINWEIS: Wichtig ist, dass die Dateien im ''/etc/quagga/''-Ordner korrekt geschrieben werden, da sie ansonsten nicht gefunden werden. 
 + 
 +Nun kann der ''quagga''-Daemon gestartet werden, so dass dieser die gewünschten Module startet. 
 +<code>sudo /etc/init.d/quagga [start/restart/stop]</code> 
 +HINWEIS: In den eckigen Klammern werden alle möglichen Commands an den ''quagga'' aufgeführt. Es kann jeweils nur EINER verwendet werden. 
 + 
 +Die folgende Ausgabe zeigt, dass die Konfiguration von zebra offensichtlich fehlt (''not started without config file''), aber die Konfiguration von ''ripd'' (''ripd'' sonst nichts) vorhanden ist. 
 +<code> 
 +Loading capability module if not yet done. 
 +Starting Quagga daemons (prio:10): zebra (not started without config file) ripd. 
 +Starting Quagga monitor daemon: watchquagga. 
 +</code> 
 + 
 +Um zu überprüfen, ob der Daemon korrekt läuft kann man sich den entsprechenden Prozess anzeigen lassen: 
 +<code>ps aux | grep quagga </code> 
 +HINWEIS: ''ps aux'' listet alle Prozesse inklusiver der Auslastung auf. Mit ''|'' wird diese Ausgabe an den ''grep''-Befehl weitergeleitet, der wiederum in der Ausgabe den String ''quagga'' sucht. 
 + 
 +Die Ausgabe könnte so aussehen: 
 +<code> 
 +ps aux | grep quagga 
 + 
 +quagga    5496  0.0  0.0  24288   980 ?        Ss   17:30   0:00 /usr/lib/quagga/ripd --daemon -A 127.0.0.1 
 +root      5501  0.0  0.0  15364   508 ?        Ss   17:30   0:00 /usr/lib/quagga/watchquagga --daemon zebra ripd 
 +root      5503  0.0  0.0  16660   904 pts/6    S+   17:35   0:00 grep --color=auto quagga 
 +</code> 
 + 
 +==== Konfiguration des zebra-Moduls ==== 
 + 
 +Man muss sich die einzelnen Module wie einen "Standalone"-Router vorstellen, der per Remote-Zugriff konfiguriert wird. Da man direkten Zugriff auf die Maschine selbst hat, ist die ''remote''-Adresse der eigene Rechner also ''localhost'': 
 +<code>telnet localhost 2601</code> 
 + 
 +AUSGABE: 
 +<code> 
 +Hello, this is Quagga (version 0.99.22.1). 
 +Copyright 1996-2005 Kunihiro Ishiguro, et al. 
 + 
 + 
 +User Access Verification 
 + 
 +Password:  
 +</code> 
 + 
 +Als Passwort verwendet man ''zebra'' bzw. das Passwort, das man in der ''zebra''-Konfigurationsdatei (''/etc/quagga/zebra.conf''((hier kann auch der Name des Routers gesetzt werden)) ) gesetzt hat. 
 + 
 +Die folgende Tabelle zeigt die wichtigsten Befehle des ''zebra''-Moduls. Mit ''?'' bzw. ''list'' kann jederzeit die Hilfe angezeigt werden ([[lager:lok_netze:stp_labor|vgl. STP-Übung]]). 
 + 
 +^Befehl ^ Funktion ^ Beispiel ^ 
 +| ''show'' | Zeigt die aktuelle Konfiguration an z.B. die Routing-Tabelle | ''show ip route''
 +| ''enable/disable'' | Aktiviert/deaktiviert den Router | ''enable'' oder ''disable''
 +| ''configure terminal'' | Wechseln in den Konfigurationsmodus. Neues Prompt:''Router(config)'' | ''configure terminal''
 +| ''interface'' | Auswählen der Schnittstelle, die konfiguriert werden soll. Im Prompt:''Router(config)'' | ''interface eth0''
 +| ''ip''/''no ip'' | Setzen/Löschen einer IP-Adresse für das ausgewählte Interface. Im Prompt: ''Router(config-if):'' | ''ip address 10.0.0.1/8''
 +| ''shutdown/no shutdown'' | Schnittstelle aktivieren/deaktivieren. Im Prompt: ''Router(config-if):'' | ''no shutdown''
 +| ''hostname'' | Setzen des Router-Namens. | ''hostname <NEUERNAME>''
 +| ''write'' | Dauerhaftes Speichern der aktuellen (''running-config''). Ansonsten wird nach dem nächsten Restart alles zurückgesetzt. | ''write''
 + 
 +Beispiel Befehlsfolge im CLI((CLI: **c**ommand **l**ine **i**nterface; Kommandozeile des ''zebra''/''ripd''-Daemons)): 
 +<code> 
 +telnet localhost 2601 
 +Password: zerbra 
 + 
 +Router>enable 
 +Password: zebra 
 +Router#configure terminal 
 +Router(config)#interface eth0 
 +Router(config-if)#ip address 10.0.0.1/
 +Router(config-if)#no shutdown 
 +Router(config-if)#exit 
 +Router(config)#hostname tralala 
 +tralala(config-if)#show running-config 
 + 
 +Current configuration: 
 +
 +hostname tralala 
 +password zebra 
 +enable password zebra 
 +
 +interface eth0 
 + ip address 10.0.0.1/
 + ipv6 nd suppress-ra 
 +
 +interface eth1 
 + ipv6 nd suppress-ra 
 +
 +interface lo 
 +
 +
 +
 +line vty 
 +
 +end 
 +</code> 
 + 
 +Alternativ zur direkten Eingabe der Kommandos, kann auch eine Textdatei als Konfigurationsdatei herangezogen werden. Der Befehlt ''show running-config'' gibt die aktuelle Konfiguration aus, die für die Textdatei genutzt werden kann. Für das obige Beispiel würde demnach folgender Inhalt  darin stehen: 
 + 
 +<file bash zerbra.conf_sample> 
 +
 +hostname tralala 
 +password zebra 
 +enable password zebra 
 +
 +interface eth0 
 + ip address 10.0.0.1/
 + ipv6 nd suppress-ra 
 +
 +interface eth1 
 + ipv6 nd suppress-ra 
 +
 +interface lo 
 +
 +
 +
 +line vty 
 +
 +end 
 +</file> 
 + 
 +Damit diese Datei verwendet wird, muss dem ''quagga''-Daemon dies mitgeteilt werden. Über den Kommandozeilenparameter ''-f'' kann dies geschehen. Konfiguriert wird dies in der Datei ''/etc/quagga/debian.conf'' 
 + 
 + 
 + 
 +==== Konfiguration des ripd-Moduls ==== 
 + 
 +Das RIP-Modul ''ripd'' wird ähnlich konfiguriert. Hier legt man fest, auf welchen Schnittstellen das RIP-Protokoll ausgeführt werden soll. 
 +Bei der Telnet-Verbindung muss allerdings der Port 2602 verwendet werden. 
 + 
 +Hier ein Auszug der wichtigsten Befehle: 
 +^Befehl ^ Funktion ^ Beispiel ^ 
 +| ''show'' | Zeigt die aktuelle Konfiguration an z.B. die Routing-Tabelle | ''show running-config''
 +| ''enable/disable'' | Aktiviert/deaktiviert den Router | ''enable'' oder ''disable''
 +| ''configure terminal'' | Wechseln in den Konfigurationsmodus. Neues Prompt:''Router(config)'' | ''configure terminal''
 +| ''hostname'' | Setzen des Router-Namens. | ''hostname <NEUERNAME>''
 +| ''router'' | Auswahl des Routers. Im Prompt:''Router(config)'' | ''router rip'' oder ''router zebra''
 +| ''version'' | Version des RIP-Protokolls. Im Prompt:''Router(config)'' | ''version 2''
 +| ''network <SUBNETZ>'' | Subnetz für das RIP aktiviert werden soll.  Im Prompt:''Router(config)'' | ''network 10.0.0.0/8''
 +| ''network <SCHNITTSTELLE>'' | Schnittstelle für die RIP aktiviert werden soll.  Im Prompt:''Router(config)'' | ''network eth0''
 +| ''passive-interface''/''no passive-interface'' | Das Interface konsumiert zwar alle RIP-Nachrichten, sendet aber selbst keine(DEFAULT). Mit  
 + no'' sendet das Interface aktiv. | ''no passive-interface eth0''
 +| ''ip split-horizon''/''no ip split-horizon'' | Das Split-Horizon wird aktiviert(DEFAULT)/deaktiviert. | ''no passive-interface eth0''
 + 
 +Beispiel Befehlsfolge im CLI((CLI: **c**ommand **l**ine **i**nterface; Kommandozeile des ''zebra''/''ripd''-Daemons)): 
 +<code> 
 +telnet localhost 2602 
 + 
 +<code>telnet localhost 2602</code>
lager/lok_netze/riplabor.1413190263.txt.gz · Zuletzt geändert: (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki