GNU/Linux >> Linux Esercitazione >  >> Linux

Crea un SDN su Linux con open source

I protocolli di instradamento di rete si dividono in due categorie principali:protocolli gateway interni e protocolli gateway esterni. I protocolli dei gateway interni vengono utilizzati dai router per condividere le informazioni all'interno di un unico sistema autonomo. Se stai utilizzando Linux, puoi fare in modo che il tuo sistema si comporti come un router tramite lo stack di routing open source (GPLv2) Quagga.

Cos'è Quagga?

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

Quagga è una suite di software di routing e un fork di GNU Zebra. Fornisce implementazioni di tutti i principali protocolli di routing come Open Shortest Path First (OSPF), Routing Information Protocol (RIP), Border Gateway Protocol (BGP) e Intermediate System to Intermediate System (IS-IS) per piattaforme simili a Unix.

Sebbene Quagga implementi i protocolli di routing sia per IPv4 che per IPv6, non funge da router completo. Un vero router non solo implementa tutti i protocolli di routing, ma ha anche la capacità di inoltrare il traffico di rete. Quagga implementa solo lo stack di routing e il lavoro di inoltro del traffico di rete è gestito dal kernel Linux.

Architettura

Quagga implementa i diversi protocolli di routing tramite demoni specifici del protocollo. Il nome del demone è lo stesso del protocollo di routing seguito dalla lettera "d". Zebra è il core e un demone indipendente dal protocollo che fornisce un livello di astrazione al kernel e presenta l'API Zserv su socket TCP ai client Quagga. Ogni demone specifico del protocollo è responsabile dell'esecuzione del protocollo pertinente e della creazione della tabella di instradamento in base alle informazioni scambiate.

Configurazione

Questo tutorial implementa il protocollo OSPF per configurare il routing dinamico utilizzando Quagga. La configurazione include due host CentOS 7.7, denominati Alpha e Beta. Entrambi gli host condividono l'accesso a 192.168.122.0/24 rete.

Alfa ospitante:

IP:192.168.122.100/24

Gateway:192.168.122.1

Host Beta:

IP:192.168.122.50/24

Gateway:192.168.122.1

Installa il pacchetto

Innanzitutto, installa il pacchetto Quagga su entrambi gli host. È disponibile nel repository di base CentOS:

yum install quagga -y

Abilita l'inoltro IP

Quindi, abilita l'inoltro IP su entrambi gli host poiché ciò verrà eseguito dal kernel Linux:

sysctl -w net.ipv4.ip_forward = 1
sysctl -p

Configurazione

Ora vai in /etc/quagga directory e creare i file di configurazione per la configurazione. Hai bisogno di tre file:

  • zebra.conf :il file di configurazione del demone di Quagga, dove definirai le interfacce, i loro indirizzi IP e l'inoltro IP
  • ospfd.conf :Il file di configurazione del protocollo, in cui definirai le reti che verranno offerte tramite il protocollo OSPF
  • demoni :dove specificherai i daemon di protocollo rilevanti che devono essere eseguiti

Sull'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

Nella versione beta host,

[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

Configura il firewall

Per utilizzare il protocollo OSPF, devi abilitarlo nel firewall:

firewall-cmd --add-protocol=ospf –permanent

firewall-cmd –reload

Ora avvia i demoni zebra e ospfd.

# systemctl start zebra
# systemctl start ospfd

Guarda la tabella dei percorsi su entrambi gli host usando:

[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

Puoi vedere che la tabella di routing su Alpha contiene una voce di 10.10.10.0/24 tramite 192.168.122.50 offerto attraverso il protocollo zebra . Allo stesso modo, sull'host Beta, la tabella contiene una voce di rete 10.12.13.0/24 tramite 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

Conclusione

Come puoi vedere, l'installazione e la configurazione sono relativamente semplici. Per aggiungere complessità, puoi aggiungere più interfacce di rete al router per fornire il routing per più reti. Puoi anche implementare i protocolli BGP e RIP usando lo stesso metodo.


Linux
  1. Condivisione di file open source con questo strumento Linux

  2. Pixel art 3D open source con Goxel

  3. Esegui analisi forensi sulla memoria di Linux con questo strumento open source

  4. La mia storia su Linux:rompere le barriere linguistiche con l'open source

  5. Datori di lavoro per aumentare l'assunzione di professionisti IT con competenze open source

Crea un'applicazione desktop Linux con Ruby

Comando sorgente Linux con esempi

Come creare backup con il comando tar in Linux

Le 6 migliori shell open source per Linux

Crea un'unità USB avviabile con USBImager in Linux

Come creare un gruppo di volumi in Linux con LVM