GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erstellen Sie ein SDN unter Linux mit Open Source

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.


Linux
  1. Open-Source-Dateifreigabe mit diesem Linux-Tool

  2. Open-Source-3D-Pixelkunst mit Goxel

  3. Führen Sie mit diesem Open-Source-Tool eine Linux-Speicherforensik durch

  4. Meine Linux-Geschichte:Sprachbarrieren mit Open Source überwinden

  5. Arbeitgeber, um die Einstellung von IT-Experten mit Open-Source-Kenntnissen zu erhöhen

Erstellen Sie mit Ruby eine Linux-Desktopanwendung

Linux-Quellbefehl mit Beispielen

So erstellen Sie eine Sicherung mit dem tar-Befehl unter Linux

Top 6 Open-Source-Shells für Linux

Erstellen Sie ein bootfähiges USB-Laufwerk mit USBImager unter Linux

So erstellen Sie eine Volumengruppe in Linux mit LVM