Oracle Linux no es una distro muy popular, pero en muchos ámbitos Oracle sigue teniendo peso, sobre todo en escenarios donde la alta disponibilidad o donde escenarios de UNIX predominan se busca «lo conocido» o lo que pueda tener soporte de una empresa que siempre a ofrecido soporte a procesos críticos y Oracle (antes SUN Microsystems con Solaris) tiene esa fama. Para quienes quieren usar Linux con el soporte de Oracle tiene sentido usar Oracle Linux para aplicaciones mas sencillas (y de menor costo) pero que siga «en su mismo escenario» y cuando instalas un equipo de estos lo mínimo que vas a requerir es configurar una unión o Bond con dos interfaces de red para mejorar las prestaciones de la red.
Como configurar un Ethernet Bonding en Oracle Linux 7
Lo primero que tienes que considerar es que la configuración la red en Oracle Linux de preferencia se debe hacer con el comando nmcli, pero no es la única forma. Sin embargo es el enfoque que voy a seguir en este post.
Luego debes considerar que debes tener el servidor instalado y tener disponibles por lo menos dos interfaces de red que puedan recibir la misma configuración de red o VLAN ya sea por una misma trayectoria o por trayectorias distintas (ideal) pero esto lo tienes que consultar con tu administrador de red.
Si quieres hacer esto como una prueba, basta con que crees una máquina virtual y le asignes dos interfaces de red en modo bridge o puente.
Por último, debes saber que para hacer un bond debes indicar un «modo» y algunos modos dependen que el switch soporte ciertos protocolos y configuraciones (que dependen de tu administrador de red) sin embargo existen dos modos que no necesitan configuración en los switches de red y vamos a utilizar uno de ellos.
Limpiando el catálogo de conexiones
Primero vamos a eliminar todas las conexiones que existan, y partiremos de crear las conexciones necesarias para poder operar en un servidor remoto que solo tiene dos interfaces conectadas y podemos acceder al servidor desde la consola física del equipo. Lista las conexiones con el comando «nmcli con show» y te mostrará un texto como el siguiente:
nmcli con show NAME UUID TYPE DEVICE enp0s8 d973c830-5ca2-4caa-b658-9ab548cfc9ad ethernet enp0s8 enp0s3 c81f3933-9ea9-4482-9d01-9879c7a6ff92 ethernet enp0s3
Esos nombres de conexión las eliminaremos con el comando nmcli con del y el nombre de la conexión.
nmcli con del enp0s8
nmcli con del enp0s3
Ahora crearemos 1 conexión que usaremos en caso de «energencia» si algo va mal o por si requerimos levantar la red sin usar el bond que vamos a configurar. Esta conexión la llamaremos et-enp0s3 por el nonbre de la interfaz que tenemos y las primeras letras de Ethernet. La IP es una dirección ficticia de ejemplo que puedes personalizar con la IP que te asigne el administrador de red o la que consideres.
Creamos la conexión de nombre et-enp0s3
nmcli con add type ethernet con-name et-enp0s3 ifname enp0s3 nmcli con mod et-enp0s3 ipv4.addresses 192.168.61.247/24 nmcli con mod et-enp0s3 ipv4.gateway 192.168.61.1 nmcli con mod et-enp0s3 ipv4.dns 192.168.61.1 nmcli con mod et-enp0s3 ipv4.method manual nmcli con mod et-enp0s3 connection.autoconnect no
Una vez creada puedes levantar la red desde esta conexión con el comando:
nmcli con up et-enp0s3
Luego puedes validar que funciona y acceder desde fuera del servidor por medio de ssh para continuar configurando el bond desde una terminal remota.
Configurando el Bond en modo active-backup (modo 1)
La siguiente parte es crear las conexiones para el bond y configurarlo. Crearemos un escenario mas interesante asumiendo que solo podemos configurar el servidor de forma remota y no tenemos oportunidad de perder la conexión a red. Lo primero es acceder a la IP que tenemos asignada:
ssh root@192.168.61.247
y vamos a crear las conexiones para el bond, a la primero conexión la llamaremos bond0 y será la conexión maestra. Es importante mencionar que vamos a configurar la misma IP que el la conexión et-enp0s3
nmcli con add type bond con-name bond0 ifname bond0 mode active-backup ip4 192.168.61.247/24 nmcli con mod bond0 ipv4.gateway 192.168.61.1
Luego vamos a crear dos conexiones esclavas para el bond usando las interfaces disponibles enp0s3 y enp0s8 y las las llamaremos bs-enp0s3 y bs-enp0s8 (por bond slave)
nmcli con add type bond-slave con-name enp0s3 ifname enp0s3 master bond0 nmcli con add type bond-slave con-name enp0s8 ifname enp0s8 master bond0
Ahora hacemos el truco que hace que esto funciona en Oracle Linux 7 por que por alguna razón esta configuración, tal y como está en este momento no se comporta como debería. Lo que se tiene que hacer es editar el archivo de configuración de la conexión bond0 y modificar el parámetro BONDING_OPTS. Para hacer esto usa el comando nano o el comando vim para editar el archivo /etc/sysconfig/network-scripts/bond0
nano /etc/sysconfig/network-scripts/bond0
y modifica el parámetro para agregar el texto fail_over_mac=1 y que quede de esta manera:
BONDING_OPTS="mode=active-backup miimon=100 fail_over_mac=1"
Luego agrega un archivo de nombre /etc/modprobe.d/bonding-enp0s3_enp0s8.conf pero que concuerde con los nombres de tus dispositivos, por ejemplo si es eth0 y eth1 deberia ser bonding-eth0_eth1.conf para que funcione correctamente
nano /etc/modprobe.d/bonding-enp0s3_enp0s8.conf
y agrega el siguiente texto
alias bond0 bonding
Graba el archivos y ahora podrías levantar el bond para que funcione de forma correcta. Pero recuerda tienes que iniciar los servicios de red para que los cambios en la configuración tengan efecto sin perder la conexión de red. Para hacer esto existe un truco, pero todo debes estar correctamente configurado de lo contrario perderás la conexión al servidor y la única forma de recuperar la conexión es acceder físicamente a la consola.
Para reiniciar los servicios de red y levantar el bond sin perder el acceso por SSH con la misma IP que has configurado y manteniendo el acceso al server, lo puedes hacer con este comando:
systemctl restart network && nmcli con up bond0 &
Con este comando se mantendrá tu conexión y se deberá levantar el bond. Para probar el acceso a este servidor por las dos interfaces puede desactivar y activar de forma alternada las interfaces enp0s3 y enp0s8 con los comandos ifdown y ifup segun corresponda. Te muestro un ejemplo:
nmcli con show NAME UUID TYPE DEVICE bond0 dca28654-17d3-463b-9cba-c62c95434514 bond bond0 enp0s3 22b3d268-afa6-4e5a-8135-6a63c4cf0315 ethernet enp0s3 enp0s8 d973c830-5ca2-4caa-b658-9ab548cfc9ad ethernet enp0s8
Puedes ver que el bond está activo y puedes validar el acceso por las dos interfaces al activar y desactivar de forma alternada cada uno de los dispositivos de red.