GNU/Linux >> Tutoriales Linux >  >> Linux

Crear un SDN en Linux con código abierto

Los protocolos de enrutamiento de red se dividen en dos categorías principales:protocolos de puerta de enlace interior y protocolos de puerta de enlace exterior. Los enrutadores utilizan los protocolos de puerta de enlace interior para compartir información dentro de un solo sistema autónomo. Si está ejecutando Linux, puede hacer que su sistema se comporte como un enrutador a través de la pila de enrutamiento de código abierto (GPLv2) Quagga.

¿Qué es Quagga?

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Quagga es un paquete de software de enrutamiento y una bifurcación de GNU Zebra. Proporciona implementaciones de todos los principales protocolos de enrutamiento, como Open Shortest Path First (OSPF), Protocolo de información de enrutamiento (RIP), Protocolo de puerta de enlace fronteriza (BGP) y Sistema intermedio a sistema intermedio (IS-IS) para plataformas similares a Unix. /P>

Aunque Quagga implementa los protocolos de enrutamiento tanto para IPv4 como para IPv6, no actúa como un enrutador completo. Un verdadero enrutador no solo implementa todos los protocolos de enrutamiento, sino que también tiene la capacidad de reenviar el tráfico de red. Quagga solo implementa la pila de enrutamiento y el kernel de Linux se encarga del trabajo de reenviar el tráfico de red.

Arquitectura

Quagga implementa los diferentes protocolos de enrutamiento a través de demonios específicos del protocolo. El nombre del demonio es el mismo que el protocolo de enrutamiento seguido de la letra "d". Zebra es el núcleo y un demonio independiente del protocolo que proporciona una capa de abstracción al kernel y presenta la API de Zserv a través de sockets TCP a los clientes de Quagga. Cada demonio específico del protocolo es responsable de ejecutar el protocolo relevante y construir la tabla de enrutamiento en función de la información intercambiada.

Configuración

Este tutorial implementa el protocolo OSPF para configurar el enrutamiento dinámico usando Quagga. La configuración incluye dos hosts CentOS 7.7, llamados Alpha y Beta. Ambos anfitriones comparten acceso a 192.168.122.0/24 red.

Host alfa:

IP:192.168.122.100/24

Puerta de enlace:192.168.122.1

Anfitrión Beta:

IP:192.168.122.50/24

Puerta de enlace:192.168.122.1

Instalar el paquete

Primero, instale el paquete Quagga en ambos hosts. Está disponible en el repositorio base de CentOS:

yum install quagga -y

Habilitar el reenvío de IP

A continuación, habilite el reenvío de IP en ambos hosts, ya que eso lo realizará el kernel de Linux:

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

Configuración

Ahora, ve a /etc/quagga directorio y cree los archivos de configuración para su instalación. Necesitas tres archivos:

  • zebra.conf :el archivo de configuración del demonio de Quagga, que es donde definirá las interfaces y sus direcciones IP y el reenvío de IP
  • ospfd.conf :el archivo de configuración del protocolo, que es donde definirá las redes que se ofrecerán a través del protocolo OSPF
  • demonios :donde especificará los demonios de protocolo relevantes que se requieren para ejecutar

En el anfitrión 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

En el 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

Configurar el cortafuegos

Para usar el protocolo OSPF, debe permitirlo en el firewall:

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

firewall-cmd –reload

Ahora, inicie los demonios zebra y ospfd.

# systemctl start zebra
# systemctl start ospfd

Mire la tabla de rutas en ambos hosts 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

Puede ver que la tabla de enrutamiento en Alpha contiene una entrada de 10.10.10.0/24 a través de 192.168.122.50 ofrecido a través del protocolo zebra . De manera similar, en el host Beta, la tabla contiene una entrada de red 10.12.13.0/24 a través de 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

Conclusión

Como puede ver, la instalación y la configuración son relativamente simples. Para agregar complejidad, puede agregar más interfaces de red al enrutador para proporcionar enrutamiento para más redes. También puede implementar los protocolos BGP y RIP utilizando el mismo método.


Linux
  1. Uso compartido de archivos de código abierto con esta herramienta de Linux

  2. Arte de píxeles 3D de código abierto con Goxel

  3. Realice análisis forense de memoria de Linux con esta herramienta de código abierto

  4. Mi historia de Linux:romper las barreras del idioma con código abierto

  5. Los empleadores aumentarán la contratación de profesionales de TI con habilidades de código abierto

Crear una aplicación de escritorio Linux con Ruby

Comando fuente de Linux con ejemplos

Cómo crear una copia de seguridad con el comando tar en Linux

Los 6 mejores shells de código abierto para Linux

Cree una unidad USB de arranque con USBImager en Linux

Cómo crear un grupo de volúmenes en Linux con LVM