Búsqueda de sitios web

Configurar Open vSwitch en CentOS | RHEL | Sombrero de fieltro |


En nuestra guía reciente, analizamos la instalación de Open vSwitch en el servidor Linux CentOS/RHEL 8. Este artículo continuará mostrándole cómo configurar interfaces de red para usar con Open vSwitch. Demostraré la creación de interfaces VLAN, la creación de OVS Bridge y Bonds con Open vSwitch editando manualmente archivos de configuración o usando herramientas auxiliares de línea de comandos como os-net-config.

Considero que el uso del script os-net-config es la mejor y más eficiente forma de configurar Open vSwitch en lugar de editar manualmente los archivos de configuración en su sistema CentOS, RHEL o Fedora Linux. Este es el método que seguiremos en esta guía, pero puede consultar los scripts de configuración de red generados para saber cómo se deben agregar las líneas reales manualmente.

Paso 1: Instale Open vSwitch en CentOS | RHEL | sombrero

Es posible que ya tengas Open vSwitch instalado en la máquina en la que estás trabajando. Si no está instalado, consulte nuestra guía a continuación para la instalación en RHEL/CentOS 8:

  • Cómo instalar Open vSwitch en CentOS 8 | RHEL 8
  • Instale Open vSwitch en Rocky Linux 8|AlmaLinux 8

Para CentOS 7, use los comandos:

sudo yum install -y epel-release centos-release-openstack-train
sudo yum install openvswitch libibverbs

En Fedora:

sudo dnf -y install openvswitch libibverbs

Active y habilite el servicio openvswitch:

sudo systemctl enable --now openvswitch

Validar comprobando el estado del servicio:

$ systemctl status openvswitch
● openvswitch.service - Open vSwitch
   Loaded: loaded (/usr/lib/systemd/system/openvswitch.service; enabled; vendor preset: disabled)
   Active: active (exited) since Sat 2020-06-06 13:56:42 UTC; 1s ago
  Process: 5826 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 5826 (code=exited, status=0/SUCCESS)

Paso 2: Instale la herramienta de configuración de red os-net-config

A continuación, instalemos la herramienta CLI os-net-config que proporciona la configuración de la red del host a través de formatos de archivo YAML o JSON.

De forma predeterminada, os-net-config utiliza un archivo de configuración YAML ubicado en /etc/os-net-config/config.yaml. Pero esto se puede personalizar a través de la opción CLI --config-file(-c).

Opción 1: instalar os-net-config desde el repositorio de OpenStack

Si tiene configurado el repositorio OpenStack, puede instalar la herramienta desde él.

sudo yum -y install vim os-net-config

Consulta más detalles sobre el paquete:

$ rpm -qi os-net-config
Name        : os-net-config
Version     : 15.2.0
Release     : 1.el8
Architecture: noarch
Install Date: Mon Sep  5 15:53:57 2022
Group       : Unspecified
Size        : 3966230
License     : ASL 2.0
Signature   : RSA/SHA256, Thu Apr 21 17:13:59 2022, Key ID f9b9fee7764429e6
Source RPM  : os-net-config-15.2.0-1.el8.src.rpm
Build Date  : Wed Apr 13 15:51:28 2022
Build Host  : x86-06.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CBS <[email >
Vendor      : CentOS Community Build Service
URL         : http://pypi.python.org/pypi/os-net-config
Summary     : Host network configuration tool
Description :
Host network configuration tool for OpenStack.

Opción 2: instalar os-net-config usando Pip

La herramienta de configuración de red os-net-config se distribuye como un paquete de Python que se puede instalar con pip|pip3:

Fedora/CentOS 8:

sudo dnf -y install python3-pip

CentOS 7:

sudo yum install -y epel-release
sudo yum -y install python-pip
sudo pip install os-net-config

Si la instalación se realiza correctamente, debería ver un resultado al final similar al siguiente.

....
Downloading https://files.pythonhosted.org/packages/df/f5/9c052db7bd54d0cbf1bc0bb6554362bba1012d03e5888950a4f5c5dadc4e/scandir-1.10.0.tar.gz
Installing collected packages: pbr, anyjson, six, monotonic, dnspython, greenlet, enum34, eventlet, iso8601, netaddr, wrapt, debtcollector, stevedore, oslo.i18n, rfc3986, PyYAML, certifi, idna, chardet, urllib3, requests, oslo.config, pytz, netifaces, pyparsing, oslo.utils, fasteners, oslo.concurrency, pyrsistent, attrs, unknown, unknown, contextlib2, scandir, pathlib2, importlib-metadata, functools32, jsonschema, pyudev, os-net-config
  Running setup.py install for anyjson ... done
  Running setup.py install for wrapt ... done
  Running setup.py install for debtcollector ... done
  Running setup.py install for stevedore ... done
  Running setup.py install for oslo.i18n ... done
  Running setup.py install for PyYAML ... done
  Found existing installation: chardet 2.2.1
    Uninstalling chardet-2.2.1:
      Successfully uninstalled chardet-2.2.1
  Running setup.py install for oslo.config ... done
  Running setup.py install for oslo.utils ... done
  Running setup.py install for oslo.concurrency ... done
  Running setup.py install for pyrsistent ... done
  Running setup.py install for unknown ... done
  Running setup.py install for unknown ... done
  Running setup.py install for scandir ... done
  Running setup.py install for functools32 ... done
  Found existing installation: pyudev 0.15
    Uninstalling pyudev-0.15:
      Successfully uninstalled pyudev-0.15
  Running setup.py install for pyudev ... done
  Running setup.py install for os-net-config ... done
Successfully installed PyYAML-5.3.1 anyjson-0.3.3 attrs-19.3.0 certifi-2020.4.5.1 chardet-3.0.4 contextlib2-0.6.0.post1 debtcollector-2.1.0 dnspython-1.16.0 enum34-1.1.10 eventlet-0.25.2 fasteners-0.15 functools32-3.2.3.post2 greenlet-0.4.16 idna-2.9 importlib-metadata-1.6.1 iso8601-0.1.12 jsonschema-3.2.0 monotonic-1.5 netaddr-0.7.19 netifaces-0.10.9 os-net-config-12.3.0 oslo.concurrency-4.1.0 oslo.config-8.1.0 oslo.i18n-5.0.0 oslo.utils-4.2.0 pathlib2-2.3.5 pbr-5.4.5 pyparsing-2.4.7 pyrsistent-0.16.0 pytz-2020.1 pyudev-0.22.0 requests-2.23.0 rfc3986-1.4.0 scandir-1.10.0 six-1.15.0 stevedore-2.0.0 unknown-0.0.0 unknown-0.0.0 urllib3-1.25.9 wrapt-1.12.1
You are using pip version 8.1.2, however version 20.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Confirme si el comando está en su RUTA después de la instalación.

$ which os-net-config
/usr/bin/os-net-config

Paso 3: Configurar Open vSwitch con os-net-config

Después de la instalación del paquete openvswitch y de la herramienta de línea de comandos os-net-config, podemos comenzar a configurar las interfaces, puentes y enlaces de OVS según lo exija su caso de uso.

Ejemplo 1: configuración de interfaz única con dirección IP estática

Cree un archivo de configuración YAML:

vim ovs-interface.yml

Configure como se muestra a continuación.

network_config:
  - type: interface
    name: eth1
    use_dhcp: false
    use_dhcpv6: false
    addresses:
    - ip_netmask: 172.21.200.10/24
    routes:
      - ip_netmask: 0.0.0.0/0
        next_hop: 172.21.200.254
        default: true

Esto configurará la interfaz eth1 con la dirección IP estática 172.21.200.10/24 y la puerta de enlace 172.21.200.254.

Aplicar configuración:

sudo os-net-config -c ovs-interface.yml

Ejemplo 2: configurar el puente OVS con una única interfaz (puerto) conectada

Para la creación de puentes, el archivo de configuración se ve como se muestra a continuación.

$ vim ovs-bridge-single-interface.yml
network_config:
  - type: ovs_bridge
    name: br-ex
    use_dhcp: false
    use_dhcpv6: false
    addresses:
    - ip_netmask: 172.21.200.10/24
    routes:
      - ip_netmask: 0.0.0.0/0
        next_hop: 172.21.200.254
        default: true
    members:
      -
        type: interface
        name: eth1

Realice cambios y luego aplique la configuración os-net-config -c

Ejemplo 3: configurar un puente OVS sobre un enlace OVS

Aquí está la configuración para el puente OVS creado en un enlace OVS.

network_config:
  - type: ovs_bridge
     name: br-ex
     use_dhcp: true
     members:
       - type: ovs_bond
         name: bond1
         members:
           - type: interface
             name: em1
           - type: interface
             name: em2

Ejemplo 4: configurar una interfaz VLAN etiquetada encima de un puente OVS

network_config:
  - type: ovs_bridge
    name: br-ctlplane
    use_dhcp: true
    members:
      - type: interface
        name: em1
      - type: vlan
        vlan_id: 20
        addresses:
          - ip_netmask: 192.0.2.1/24

Ejemplo 5: crear un bono OVS

Este ejemplo solo creará un vínculo OVS.

network_config:
  - type: ovs_bridge
    name: bond1
    use_dhcp: true
    members:
      - type: interface
        name: eno1
      - type: interface
        name: eno2

Comprobación de configuraciones de OVS

Una vez que haya aplicado las configuraciones de OVS, los scripts de configuración de red se agregarán automáticamente al directorio /etc/sysconfig/network-scripts/ .

$ ls /etc/sysconfig/network-scripts/

Puede verificar la configuración de OVS y las conexiones de puertos usando el comando ovs-vsctl:

$ ovs-vsctl show

Paso 4: cree una red KVM con OVS

Si está utilizando Open vSwitch con virtualización KVM, deberá definir una red que utilizarán las máquinas virtuales.

Cree un nuevo archivo XML puente.

vim kvm-ovs.xml

Agregue detalles del puente al archivo.

<network>
  <name>ovs-bridge</name>
  <forward mode='bridge'/>
  <bridge name='br-ex'/>
  <virtualport type='openvswitch'/>
</network>

Dónde :

  • ovs-bridge es el nombre de la red libvirt que se creará.
  • br-ex es el nombre del puente OVS que utilizará la red creada.

Para definir una red a partir de un archivo XML sin iniciarla, utilice:

sudo virsh net-define  kvm-ovs.xml

Para iniciar una red inactiva (previamente definida), utilice:

sudo virsh net-start ovs-bridge

Para configurar la red para que se inicie automáticamente al iniciar el servicio:

sudo virsh net-autostart  ovs-bridge

Marque para confirmar si el indicador inicio automático está activado yes; Persistente también debería decir sí.

$ sudo virsh net-list --all
 Name              State    Autostart   Persistent
----------------------------------------------------
 ovs-bridge        active   yes         yes
 default           active   yes         yes

Estén atentos para más guías sobre OVS. Aquí hay otras guías interesantes para seguir.

  • Cómo utilizar Ansible Playbook con Vagrant up
  • Instale Minikube Kubernetes en CentOS 8 con KVM