Netzwerk-Routing-Protokolle fallen in zwei Hauptkategorien:interne Gateway-Protokolle und externe Gateway-Protokolle. Innere Gateway-Protokolle werden von Routern verwendet, um Informationen innerhalb eines einzelnen autonomen Systems auszutauschen. Wenn Sie Linux ausführen, können Sie Ihr System über den Open Source (GPLv2)-Routing-Stack Quagga dazu bringen, sich wie ein Router zu verhalten.
Was ist Quagga?
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
Quagga ist eine Routing-Software-Suite und ein Fork von GNU Zebra. Es bietet Implementierungen aller wichtigen Routing-Protokolle wie Open Shortest Path First (OSPF), Routing Information Protocol (RIP), Border Gateway Protocol (BGP) und Intermediate System to Intermediate System (IS-IS) für Unix-ähnliche Plattformen /P>
Obwohl Quagga die Routing-Protokolle für IPv4 und IPv6 implementiert, fungiert es nicht als vollständiger Router. Ein echter Router implementiert nicht nur alle Routing-Protokolle, sondern hat auch die Fähigkeit, den Netzwerkverkehr weiterzuleiten. Quagga implementiert nur den Routing-Stack, und die Weiterleitung des Netzwerkverkehrs wird vom Linux-Kernel erledigt.
Architektur
Quagga implementiert die verschiedenen Routing-Protokolle durch protokollspezifische Daemons. Der Daemon-Name ist derselbe wie das Routing-Protokoll, gefolgt vom Buchstaben „d“. Zebra ist der Kern und ein protokollunabhängiger Daemon, der dem Kernel eine Abstraktionsschicht bereitstellt und Quagga-Clients die Zserv-API über TCP-Sockets präsentiert. Jeder protokollspezifische Daemon ist dafür verantwortlich, das relevante Protokoll auszuführen und die Routing-Tabelle basierend auf den ausgetauschten Informationen zu erstellen.
Einrichtung
Dieses Tutorial implementiert das OSPF-Protokoll, um dynamisches Routing mit Quagga zu konfigurieren. Das Setup umfasst zwei CentOS 7.7-Hosts mit den Namen Alpha und Beta. Beide Hosts teilen sich den Zugriff auf 192.168.122.0/24 Netzwerk.
Host-Alpha:
IP:192.168.122.100/24
Gateway:192.168.122.1
Host-Beta:
IP:192.168.122.50/24
Gateway:192.168.122.1
Installieren Sie das Paket
Installieren Sie zunächst das Quagga-Paket auf beiden Hosts. Es ist im CentOS-Basisrepo verfügbar:
yum install quagga -y
IP-Weiterleitung aktivieren
Aktivieren Sie als Nächstes die IP-Weiterleitung auf beiden Hosts, da dies vom Linux-Kernel ausgeführt wird:
sysctl -w net.ipv4.ip_forward = 1
sysctl -p
Konfiguration
Gehen Sie nun in die /etc/quagga Verzeichnis und erstellen Sie die Konfigurationsdateien für Ihr Setup. Sie benötigen drei Dateien:
- zebra.conf :Quaggas Daemon-Konfigurationsdatei, in der Sie die Schnittstellen und ihre IP-Adressen und IP-Weiterleitung definieren.
- ospfd.conf :Die Protokollkonfigurationsdatei, in der Sie die Netzwerke definieren, die über das OSPF-Protokoll angeboten werden
- Daemons :Hier geben Sie die relevanten Protokoll-Daemons an, die zum Ausführen erforderlich sind
Auf Host Alpha,
[root@alpha]# cat /etc/quagga/zebra.conf
interface eth0
ip address 192.168.122.100/24
ipv6 nd suppress-ra
interface eth1
ip address 10.12.13.1/24
ipv6 nd suppress-ra
interface lo
ip forwarding
line vty
[root@alpha]# cat /etc/quagga/ospfd.conf
interface eth0
interface eth1
interface lo
router ospf
network 192.168.122.0/24 area 0.0.0.0
network 10.12.13.0/24 area 0.0.0.0
line vty
[root@alphaa ~]# cat /etc/quagga/daemons
zebra=yes
ospfd=yes
Auf Host Beta
[root@beta quagga]# cat zebra.conf
interface eth0
ip address 192.168.122.50/24
ipv6 nd suppress-ra
interface eth1
ip address 10.10.10.1/24
ipv6 nd suppress-ra
interface lo
ip forwarding
line vty
[root@beta quagga]# cat ospfd.conf
interface eth0
interface eth1
interface lo
router ospf
network 192.168.122.0/24 area 0.0.0.0
network 10.10.10.0/24 area 0.0.0.0
line vty
[root@beta ~]# cat /etc/quagga/daemons
zebra=yes
ospfd=yes
Firewall konfigurieren
Um das OSPF-Protokoll zu verwenden, müssen Sie es in der Firewall zulassen:
firewall-cmd --add-protocol=ospf –permanent
firewall-cmd –reload
Starten Sie nun die Daemons zebra und ospfd.
# systemctl start zebra
# systemctl start ospfd
Sehen Sie sich die Routing-Tabelle auf beiden Hosts an mit:
[root@alpha ~]# ip route show
default via 192.168.122.1 dev eth0 proto static metric 100
10.10.10.0/24 via 192.168.122.50 dev eth0 proto zebra metric 20
10.12.13.0/24 dev eth1 proto kernel scope link src 10.12.13.1
192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.100 metric 100
Sie können sehen, dass die Routing-Tabelle auf Alpha einen Eintrag von 10.10.10.0/24 enthält über 192.168.122.50 angeboten durch das Protokoll Zebra . In ähnlicher Weise enthält die Tabelle auf Host Beta einen Eintrag des Netzwerks 10.12.13.0/24 über 192.168.122.100 .
[root@beta ~]# ip route show
default via 192.168.122.1 dev eth0 proto static metric 100
10.10.10.0/24 dev eth1 proto kernel scope link src 10.10.10.1
10.12.13.0/24 via 192.168.122.100 dev eth0 proto zebra metric 20
192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.50 metric 100
Schlussfolgerung
Wie Sie sehen können, sind die Einrichtung und Konfiguration relativ einfach. Um die Komplexität zu erhöhen, können Sie dem Router weitere Netzwerkschnittstellen hinzufügen, um Routing für mehr Netzwerke bereitzustellen. Sie können auch BGP- und RIP-Protokolle mit derselben Methode implementieren.