NMState Una herramienta de configuración de red declarativa para Linux

NMState Una herramienta de configuración de red declarativa para Linux

El ecosistema de Linux proporciona numerosas formas de configurar redes de redes, incluidas las populares herramientas de Daemon de Network Manager y de comandos, como NMCLI y Utilidad de GUI NMTUI. Esta guía presenta otra herramienta de configuración de red conocida como Nmstate

Nmstate es un administrador de red declarativo para configurar redes en hosts de Linux. Es una biblioteca que proporciona una herramienta de línea de comandos que administra la configuración de la red de host. Administra las redes anfitrionas a través de una API declarativa hacia el norte. Al momento de escribir esta guía, el Gerente de Redes Daemon es el único proveedor respaldado por Nmstate.

En esta guía, observamos algunos de los usos de ejemplo del Nmstate herramienta. Para esta guía, demostraremos esto usando Fedora Linux.

Enfoques imperativos vs declarativos

La gestión de la red puede adoptar dos enfoques - Imperativo y declarativo. En el imperativo enfoque, define explícitamente el estado de red de una interfaz ejecutando comandos en el terminal. El enfoque está en el 'cómo'.

Por ejemplo, para derribar una red utilizando el enfoque imperativo, ejecute el comando:

$ sudo ifconfig enp0s3 down 

Por otro lado, el declarativo El enfoque utiliza un Yaml archivo para aplicar los cambios a una configuración. La mayoría de las herramientas de orquestación de DevOps como Kubernetes Utilice este enfoque para implementar aplicaciones PODS utilizando un Yaml archivo.

Este enfoque proporciona lo que comúnmente se conoce como infraestructura como código (IAC) En los círculos DevOps. Esto mejora la automatización de la configuración de red en el host y proporciona una forma rápida y más confiable de hacer múltiples cambios en una interfaz de red con errores mínimos.

Ahora, déjanos cambiar de marcha y ver cómo puedes usar el Nmstate Herramienta de configuración para configurar sus interfaces de red en Linux.

Paso 1: Instale la herramienta de configuración de networking nmState

Conseguiremos que la pelota rodara instalando el Nmstate. Primero, verifique la disponibilidad del paquete desde Fedora Repositorios de la siguiente manera:

$ sudo DNF Search nmstate 

Desde la salida, podemos ver que el administrador de red está disponible en los repositorios oficiales.

Verifique el paquete NMState

A continuación, instalar Nmstate como sigue. Esto funciona en Fedora 31 y versiones posteriores.

$ sudo dnf install nmstate 

El comando instala el Nmstate API de Network Manager junto con otras dependencias de Python.

Instalar nmstate en Fedora

Una vez que se complete la instalación, verifique el nmstate El paquete se instala de la siguiente manera.

$ rpm -qi nmstate 
Verificar el paquete NMState

Para Linux con sede en Rhel, habilite primero el repositorio de COPR.

$ sudo DNF COPR Enable NMSTATE/NMSTATE-Estable 

Luego instalar Nmstate como sigue.

$ sudo dnf install nmstate 

Consulte instrucciones adicionales sobre cómo instalar NMState desde la fuente.

Una vez instalado, puede verificar la versión de Nmstate instalado de la siguiente manera.

$ nmstatectl versión 1.0.2 

Uso de la herramienta de configuración de NMState en Linux

Con Nmstate Instalado, bajemos a los británicos de cómo puede aprovechar al máximo la API de Network Manager.

Para ver la configuración de red actual de su interfaz de red, ejecute el siguiente comando. Aquí, es la configuración de su ENP0S3 interfaz.

$ nmstatectl show enp0s3 
Mostrar la configuración de la interfaz de red

La salida se divide en 4 secciones distintas:

  • residente de DNS: Esta sección contiene la configuración del servidor de nombres para la interfaz particular.
  • reglas de ruta: Esto estipula las reglas de enrutamiento.
  • rutas: Esto incluye rutas dinámicas y estáticas.
  • Interfaces: Esta sección especifica la configuración IPv4 e IPv6.

Cambiar la configuración de red en Linux

Puedes usar el Nmstate Herramienta de configuración para configurar sus hosts en el estado deseado utilizando modos interactivos o basados ​​en archivos.

  • Interactivo: Esto edita una interfaz de red utilizando el nmstatectl editar dominio. Este comando abre un editor de texto que está definido por la variable de entorno del editor. Una vez que se guardan los cambios, NMState aplica la nueva configuración inmediatamente a menos que se detecten errores de sintaxis.
  • Basado en archivos: En el modo basado en archivos, la configuración de la interfaz se aplica utilizando un archivo YAML o JSON utilizando el nmstatectl aplicar dominio.

Permítanos ahora ensuciarnos las manos y ver cómo puede modificar la configuración de la red utilizando Nmstate.

Nuestro Fedora El sistema tiene dos interfaces de red activas con la siguiente configuración:

$ ip -br -4 a 
Salida de muestra
Lo desconocido 127.0.0.1/8 ENP0S3 UP 192.168.2.104/24 ENP0S8 UP 192.168.2.103/24 

Ejemplo de modo de configuración interactivo

Usaremos el modo interactivo para cambiar el Mtu (Unidad de transmisión máxima) del ENP0S3 interfaz de red. Por defecto, esto está configurado en 1500 como se muestra.

$ ifconfig 
Verifique la MTU de la red en Linux

Cambiaremos esto a 4000. Lo haremos usando el nmstatectl editar Comando de la siguiente manera.

$ sudo nmstatectl edit enp0s3 

Esto abre la configuración en un editor de texto. Para nuestro caso, se abre en empuje editor. A continuación, desplácese todo el camino hacia abajo y localice el mtu parámetro. Cambiaremos el valor a 4000, tal como editaríamos un archivo en VIM. Entonces guardaremos los cambios.

Cambiar MTU de red en Linux

Cuando guarde y salga del archivo, verá una salida revuelta en el terminal como Nmstate Guarda los cambios. No se requiere intervención, solo siéntate quieto.

Confirmemos ahora que se realizó el cambio.

$ ifconfig 

Desde la salida terminal, podemos ver que hemos cambiado con éxito la MTU a 4000 Desde el valor predeterminado 1500 valor.

Verificar la MTU de la red en Linux

Ejemplo de modo de configuración basado en archivos

Permítanos modificar ahora la configuración utilizando el modo basado en archivos. En este ejemplo, vamos a deshabilitar IPv6 Para el ENP0S8 interfaz de red. El primer paso es crear un archivo YAML que especifique el estado deseado del ENP0S8 interfaz de red.

$ sudo nmstatectl show enp0s8> enp0s8.YML 
Crear archivo Yaml de red

A continuación, editaremos el Yaml Archivo de la siguiente manera.

$ sudo vim enp0s8.YML 

Desplácese hacia abajo hasta la sección IPv6. Para deshabilitar IPv6, configure el parámetro habilitado en falso y elimine las líneas que se han atacado.

Deshabilitar IPv6 en Linux

Guarde la configuración y aplique el nuevo estado utilizando el archivo YAML de la siguiente manera.

$ sudo nmstatectl aplicar enp0s8.YML 

Ahora ejecute el comando que se muestra para verificar que IPv6 ha sido deshabilitado. La salida que se muestra muestra que el IPv6 para el ENP0S8 La interfaz de red está en blanco, lo que implica que hemos deshabilitado con éxito IPv6 en la interfaz.

$ ip -br a 
Confirmar IPv6 deshabilitado en Linux

Aplicar cambios de red temporalmente

Otra funcionalidad realmente útil que Nmstate proporciona la capacidad de configurar temporalmente el estado de red deseado. Una vez que esté satisfecho con la configuración, puede continuar y hacer que los cambios sean permanentes. De lo contrario, los cambios realizados volverán a la configuración inicial una vez que expire el tiempo de espera. El tiempo de espera predeterminado es de 60 segundos.

Para demostrar esto, estableceremos temporalmente una IP estática en el ENP0S3 interfaz y deshabilitar DHCP. Una vez más, acceda al archivo usando un editor de texto.

$ sudo vim enp0s3.YML 

Desplácese hasta el IPv4 sección. Especifique la IP estática - en nuestro caso 192.168.2.150 y elimine las líneas que han sido golpeadas. Además, asegúrese de configurar el DHCP parámetro FALSO.

Establecer IP estática en Linux

Guardar el archivo y confirme temporalmente los cambios de la siguiente manera.

$ sudo nmStatectl Aplicar--no-Commit-TimeOut 20 ENP0S3.YML 

El --no comprometido La opción aplica temporalmente los cambios para un período definido por el --se acabó el tiempo opción que, en este ejemplo, es de 20 segundos.

Para verificar la aplicación temporal de los cambios, verificaremos la configuración de IP en un intervalo de tiempo de 20 segundos.

$ ip -br a 

Desde la salida, puede ver que la configuración de IP de la interfaz volvió a DHCP después del intervalo de tiempo de 20 segundos. La dirección IP volvió a 192.168.2.104 del anterior IP estáticamente configurado que fue 192.168.2.150.

Verifique la interfaz de red

Es cierto que el Nmstate La herramienta es una herramienta conveniente para configurar sus interfaces de red. Es una herramienta declarativa que aplica el estado de configuración deseado de la interfaz de un host utilizando la API NetworkManager.

El estado se define fácilmente usando el interactivo acercarse o usar el basado en archivos método que utiliza un preconfigurado Yaml archivo. Esto mejora la automatización de las tareas de configuración y la reducción de los errores durante la configuración.