El ecosistema de Linux proporciona varias formas de configurar la red, incluidos los demonios de administración de red populares y las herramientas de línea de comandos, como las utilidades GUI nmcli y nmtui.Esta guía presenta otra herramienta de configuración de red llamada Estado costa afuera
Estado costa afuera es un administrador de red declarativo para configurar redes en hosts Linux. Es una biblioteca que proporciona herramientas de línea de comandos para administrar la configuración de la red del host. Administra la red de host a través de una API declarativa hacia el norte. Al momento de escribir esta guía, gerente de Redes daemon es el único proveedor compatible Estado costa afuera.
En esta guía, veremos algunos ejemplos de uso Estado costa afuera herramienta.Para esta guía, usaremos fedora linux.
Tabla de Contenidos
Enfoques imperativo vs declarativo
La administración de la red puede adoptar dos enfoques: Crítico y declarativo. dentro Crítico método, define explícitamente el estado de la red de la interfaz mediante la ejecución de un comando en el terminal. La cuestión es’cómo‘.
Por ejemplo, para apagar la red usando el método imperativo, ejecute el siguiente comando:
$ sudo ifconfig enp0s3 down
en la otra mano, declarativo método usando un YAML archivo para aplicar los cambios a la configuración.La mayoría de las herramientas de orquestación de DevOps, como Gobernador Use este método para implementar aplicaciones de pod YAML documento.
Este enfoque proporciona lo que comúnmente se conoce como infraestructura como código (CAI) en los círculos de DevOps. Esto mejora la automatización de la configuración de red en el host y proporciona una forma más rápida y confiable de realizar múltiples cambios en las interfaces de red con errores mínimos.
Ahora, tomemos un ángulo diferente y veamos cómo puedes usar Estado costa afuera Herramienta de configuración para configurar interfaces de red en Linux.
Paso 1: Instale la herramienta de configuración de red NMState
instalaremos ExpresarPrimero, verifique la disponibilidad del paquete sombrero de fieltro El repositorio es el siguiente:
$ sudo dnf search nmstate
Desde la salida, podemos ver que el administrador de red está disponible en el repositorio oficial.
A continuación, instale nuevo estado como sigue.Esto aplica a sombrero de fieltro 31 y después.
$ sudo dnf install nmstate
Este comando instala Estado costa afuera API de Network Manager y otras dependencias de Python.
Una vez completada la instalación, verifique nanoestado El paquete se instala de la siguiente manera.
$ rpm -qi nmstate
Para Linux basado en RHEL, primero habilite el repositorio copr.
$ sudo dnf copr enable nmstate/nmstate-stable
luego instalar nuevo estado como sigue.
$ sudo dnf install nmstate
Ver instrucciones adicionales sobre cómo hacerlo Instalar NMState desde la fuente.
Puede comprobar la versión después de la instalación nuevo estado Instale de la siguiente manera.
$ nmstatectl version 1.0.2
Uso de la herramienta de configuración NMState en Linux
y nuevo estado Una vez instalado, profundicemos en cómo aprovechar al máximo la API de Network Manager.
Para ver la configuración de red actual de una interfaz de red, ejecute el siguiente comando.aquí está su configuración enp0s3 interfaz.
$ nmstatectl show enp0s3
La salida se divide en 4 partes diferentes:
- resolver dns: Esta sección contiene la configuración del servidor de nombres para una interfaz específica.
- reglas de enrutamiento: Esto especifica las reglas de enrutamiento.
- ruta: Esto incluye rutas dinámicas y estáticas.
- interfaz: esta sección especifica la configuración de ipv4 e ipv6.
Cambiar la configuración de red en Linux
puedes usarlo Estado costa afuera Una herramienta de configuración que configura un host en un estado deseado mediante modos interactivos o basados en archivos.
- interactivo: esto usará nmstatectl Editar Pedido. Este comando abre un editor de texto definido por la variable de entorno EDITOR. NMState aplica la nueva configuración inmediatamente después de guardar los cambios, a menos que se detecte un error de sintaxis.
- basado en archivos: En el modo basado en archivos, la configuración de la interfaz se aplica usando un archivo YAML o JSON, usando aplicación nmstatectl Pedido.
Ahora pongámoslo en nuestras manos y veamos cómo modificar la configuración de la red usando Estado costa afuera.
nuestro sombrero de fieltro El sistema tiene dos interfaces de red activas configuradas de la siguiente manera:
$ ip -br -4 a
Salida de muestra
lo UNKNOWN 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 interactiva
Usaremos el modo interactivo para cambiar MTU (unidad máxima de transmisión) de enp0s3 Interfaz de red.Por defecto, esta configuración es 1500 como muestra la imagen.
$ ifconfig
lo cambiamos a 4000. Usaremos nmstatectl Editar El comando es el siguiente.
$ sudo nmstatectl edit enp0s3
Esto abrirá la configuración en un editor de texto.Para nuestro caso está en empuje editar.A continuación, desplácese hacia abajo y busque hombre Alcance.Cambiamos el valor a 4000, al igual que editamos archivos en vim. Luego guardaremos los cambios.
Cuando guarde y salga del archivo, verá una salida distorsionada en la terminal nuevo estado guardar cambios. No se requiere intervención, solo siéntese quieto.
Ahora confirmemos que se han realizado los cambios.
$ ifconfig
Desde la salida del terminal podemos ver que hemos cambiado con éxito la MTU a 4000 por defecto 1500 valor.
Ejemplo de modo de configuración basado en archivos
Ahora modifiquemos la configuración usando el modo basado en archivos.En este ejemplo, desactivaremos IPv6 por enp0s8 Interfaz de red.El primer paso es crear un archivo YAML que especificará el estado deseado enp0s8 Interfaz de red.
$ sudo nmstatectl show enp0s8 > enp0s8.yml
A continuación, editaremos YAML El archivo es el siguiente.
$ sudo vim enp0s8.yml
Desplácese hacia abajo hasta la sección ipv6. Para deshabilitar IPv6, establezca el parámetro habilitado en falso y elimine la línea eliminada.
Guarde la configuración y aplique el nuevo estado usando el archivo YAML como se muestra a continuación.
$ sudo nmstatectl apply enp0s8.yml
Ahora ejecute el comando que se muestra para verificar que IPv6 esté deshabilitado.El resultado que se muestra muestra que IPv6 se usa para enp0s8 La interfaz de red está en blanco, lo que indica que hemos deshabilitado correctamente IPv6 en esa interfaz.
$ ip -br a
Aplicar cambios de red temporalmente
Otra característica muy útil nuevo estado Brinda 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, una vez que expire el tiempo de espera, los cambios se revertirán a la configuración original. El tiempo de espera predeterminado es de 60 segundos.
Para demostrar esto, haremos enp0s3 interfaz y deshabilitar DHCPVuelva a utilizar un editor de texto para acceder al archivo.
$ sudo vim enp0s3.yml
desplazarse a IPv4 parte.Especificar IP estática – en nuestro caso 192.168.2.150 y elimine la fila eliminada.Además, asegúrese de establecer dhcp Los parámetros son Incorrecto.
Guarde el archivo y confirme temporalmente los cambios como se muestra a continuación.
$ sudo nmstatectl apply --no-commit --timeout 20 enp0s3.yml
Esta --no-commit
opción para aplicar cambios temporalmente a --timeout
En este caso la opción de 20 segundos.
Para verificar la aplicación temporal de los cambios, verificaremos la configuración de IP en intervalos de 20 segundos.
$ ip -br a
En el resultado, puede ver que la configuración IP de la interfaz vuelve a DHCP después de un intervalo de 20 segundos. Las direcciones IP están de vuelta 192.168.2.104 IP de configuración estática anterior 192.168.2.150.
Cierto, Estado costa afuera Herramientas es una herramienta útil para configurar interfaces de red. Es una herramienta declarativa que aplica el estado de configuración deseado de una interfaz de host mediante la API NetworkManager.
Esta Expresar fácil de definir usando interactivo acercarse o usar basado en archivos Usar métodos preconfigurados YAML documento. Esto mejora la automatización de las tareas de configuración y reduce los errores en el proceso de configuración.