Hazte amigo de NetworkManager | Activar administrador del sistema

[*]

¿Alguna vez se ha sorprendido cuando su host Linux configura automáticamente su red? Si es así, hay una buena posibilidad de que Gerente de Redes era responsable. NetworkManager es uno de los demonios de configuración de red más comunes en las distribuciones de Linux. Si quieres saber más y aprender a controlarlo, sigue leyendo.

Sin embargo, ¿desea desactivar NetworkManager y se pregunta por qué su distribución de Linux favorita no utiliza herramientas IP antiguas como método de configuración de red predeterminado? ¿Crees que NetworkManager es "solo para WiFi"? Bueno, esta publicación de blog también es para ti. Deja atrás los prejuicios y dale una oportunidad a esta herramienta siguiéndola durante unos minutos. Apuesto a que hará las paces y tal vez incluso se haga amigo de NetworkManager.

En este artículo, le muestro por qué NetworkManager es una buena opción para muchos escenarios (incluida la línea de comandos y la GUI). A continuación, explicaré la filosofía subyacente característica (ya menudo mal entendida) de esta herramienta. Y finalmente, resaltaré algunos comandos que todo usuario debe saber para tomar el control total de NetworkManager.

Índice

    ¿Por qué administrador de red?

    Hay varias formas de configurar la red en su host Linux, por lo que puede preguntarse por qué debería usar NetworkManager específicamente. Si bien hay varias buenas respuestas, me gustaría resaltar un punto principal que a menudo se pasa por alto: NetworkManager permite que los usuarios y las aplicaciones recuperen y modifiquen la configuración de la red al mismo tiempo, lo que garantiza una vista coherente y actualizada de la red. .

    Esta herramienta se puede configurar de varias maneras, a través de la interfaz gráfica de usuario de escritorio (Gnome, KDE, nm-applet), interfaz de usuario basada en texto (nmtui), la línea de comando (nmcli), archivos y una consola web (Cabina). Network Manager proporciona una biblioteca y una interfaz D-Bus (libnm) para que las API estén disponibles para las aplicaciones. Ninguna otra herramienta de configuración de red ofrece tanta flexibilidad.

    La filosofía NetworkManager

    Para comprender y controlar NetworkManager, primero debe comprender su filosofía de configuración subyacente. Tomado de man NetworkManager:

    "...intenta hacer que la configuración y el funcionamiento de la red sea lo menos doloroso y automático posible..."

    Eso es bastante diferente de la filosofía estándar de un demonio de Unix, ¿no es así? Los demonios tradicionales de Unix requieren que los usuarios proporcionen la configuración explícitamente, generalmente a través de un archivo de configuración, y luego reinicien el servicio. Sin configuración, el daemon no realizará ninguna acción.

    En cambio, NetworkManager, en caso de configuración parcial o nula, verifica los dispositivos disponibles y hace todo lo posible para brindar conectividad al host. El objetivo de NetworkManager es satisfacer las necesidades de todos, desde el usuario estándar que busca "una red que simplemente funcione" hasta el administrador de red avanzado que necesita un control total sobre la red host.

    Pero este es el punto: NetworkManager espera que el administrador de red avanzado proporcione su propia configuración. Si bien es inusual configurar un demonio de Linux para realizar ciertas acciones (configuraciones automáticas), ¿no parece un enfoque razonable para adaptarse a cualquier escenario?

    Conceptos básicos de NetworkManager

    La configuración de NetworkManager se basa en los conceptos de y . Un dispositivo mapea una interfaz de red, más o menos equivalente a lo que obtiene de ip link pedido. Cada dispositivo sigue:

    • Si es administrado por NetworkManager
    • Conexiones disponibles para el dispositivo
    • La conexión activa en el dispositivo (si corresponde)

    Una conexión representa la configuración completa que se aplicará en un dispositivo y es solo una lista de propiedades. Las propiedades pertenecientes a una misma área de configuración se agrupan en parámetros (por ejemplo, el ipv4 definir propiedades de grupo como direcciones, puerta de enlace y rutas).

    Configurar la red en NetworkManager es tan simple como activar una conexión en un dispositivo: el dispositivo se configurará con todas las propiedades especificadas en la conexión.

    Es hora de realizar una configuración práctica de NetworkManager. Aunque hay varias herramientas que se pueden usar como se discutió anteriormente, aquí nos centraremos en nmcli, la herramienta de línea de comandos incluida con NetworkManager.

    OBSERVACIÓN: El nmcli El programa tiene una función avanzada de finalización automática. Asegúrate que bash-completion El paquete está instalado para poder aprovecharlo.

    nmcli lo esencial

    Veamos cómo trabajar con diferentes aspectos de su red con nmcli.

    Dispositivos

    Para enumerar los dispositivos detectados por NetworkManager, escriba:

    $ nmcli device
    DEVICE   TYPE       STATE           CONNECTION
    enp1s0   ethernet   connected       ether-enp1s0
    enp7s0   ethernet   disconnected    --
    enp8s0   ethernet   disconnected    -- 
    

    Como puede ver en la salida, NetworkManager ha detectado tres dispositivos Ethernet en el sistema. Solo el primero, enp1s0, tiene una conexión activa aplicada (lo que significa que está configurada).

    Si desea que NetworkManager deje de dar servicio a un dispositivo por un tiempo, no es necesario que lo apague. Solo temporalmente el dispositivo:

    $ nmcli device set enp8s0 managed no
    $ nmcli device
    DEVICE   TYPE       STATE          CONNECTION
    enp1s0   ethernet   connected      ether-ens3
    enp7s0   ethernet   disconnected   --
    enp8s0   ethernet   unmanaged      --
    

    Sin embargo, este cambio no es persistente y no sobrevivirá a un reinicio.

    La forma más fácil de recuperar la configuración IP de cada dispositivo es emitir el nmcli comando sin argumentos:

    $ nmcli
    enp1s0: connected to enp1s0
          "Red Hat Virtio"
          ethernet (virtio_net), 52:54:00:XX:XX:XX, hw, mtu 1500
          ip4 default
          inet4 192.168.122.225/24
          route4 0.0.0.0/0
          route4 192.168.122.0/24
          inet6 fe80::4923:6a4f:da44:6a1c/64
          route6 fe80::/64
          route6 ff00::/8
    
    enp7s0: disconnected
          "Intel 82574L"
          ethernet (e1000e), 52:54:00:XX:XX:XX, hw, mtu 1500
    
    enp8s0: unmanaged
          "Red Hat Virtio"	
          ethernet (virtio_net), 52:54:00:XX:XX:XX, hw, mtu 1500
    

    Conexiones

    Para listar las conexiones disponibles, escriba:

    $ nmcli connection
    NAME                 UUID                                  TYPE       DEVICE
    ether-enp1s0         23e0d89e-f56c-3617-adf2-841e39a85ab4  ethernet   enp1s0
    Wired connection 1   fceb885b-b510-387a-b572-d9172729cf18  ethernet   --
    Wired connection 2   074fd16d-daa6-3b6a-b092-2baf0a8b91b9  ethernet   --
    

    El resultado de este ejemplo muestra que la única conexión activa es ether-enp1s0, aplicado en el dispositivo enp1s0. También hay otras dos conexiones, pero no están activas.

    Para desactivar una conexión, es decir desconfigurar el dispositivo asociado, basta con pedirle al NetworkManager que ponga la conexión. Por ejemplo, para deshabilitar el ether-enp1s0 Enlace:

    $ nmcli connection down ether-enp1s0
    

    Para reactivarlo, y así reconfigurar el dispositivo:

    $ nmcli connection up ether-enp1s0
    

    Para ver los detalles de una conexión en particular, necesitamos inspeccionar las propiedades de la conexión:

    $ nmcli connection show ether-enp1s0
    connection.id:                     ether-enp1s0
    connection.uuid:                   23e0d89e-f56c-3617-adf2-841e39a85ab4
    connection.stable-id:              --
    connection.type:                   802-3-ethernet
    connection.interface-name:         enp1s0
    connection.autoconnect:            yes
    connection.autoconnect-priority:   -999
    connection.autoconnect-retries:    -1 (default)
    connection.auth-retries:           -1
    connection.timestamp:              1559320203
    connection.read-only:              no
    [...]
    

    La lista de propiedades de conexión es bastante larga y está agrupada por parámetros. De hecho, cada propiedad se especifica como setting_name.property_name. Resaltemos algunas propiedades básicas pertenecientes a la conexión y configuración de IPv4:

    Tabla 1: Propiedades básicas para la conexión y configuración de IPv4.
    PropiedadLa descripcionalias
    connection.id

    Contiene un nombre legible por humanos para la conexión (que se muestra en la nmcli connection salir).

    con-name
    connection.uuidContiene el identificador único universal UUID identificar de forma única la conexión.(nada)
    connection.typeContiene el tipo de conexión.type
    connection.interface-name

    Vincula la conexión a un dispositivo específico, de modo que la conexión solo se puede activar en este dispositivo.

    ifname
    connection.autoconnectDefine si la conexión debe activarse automáticamente o no.autoconnect
    ipv4.methodContiene el método IPv4 de la conexión: auto, disabled, link local, manual, Donde shared.(nada)
    ipv4.addressesContiene la dirección IPv4 estática de la conexión.(nada)

    Tenga en cuenta que pocas propiedades de uso común tienen , es decir, nombres cortos que se pueden usar en lugar de la notación completa. La Tabla 1 enumera los alias (si los hay) en la tercera columna. Además, todos nmcli los comandos se pueden truncar para usar versiones para realizar la misma acción. Por ejemplo, para deshabilitar el inicio de sesión automático para el ether-enp1s0 conexión, podríamos acortar el comando de edición anterior de la siguiente manera:

    $nmcli c m ether-ens1s0 autoconnect no

    Cuando se trata de detalles, el autoconnect La propiedad controla la activación automática de la conexión. Si está habilitado (= yes, el valor predeterminado), tan pronto como el interface-name dispositivo está listo y no hay otra conexión activa en él, NetworkManager activa automáticamente la conexión. Con ipv4.method si se establece en auto, la configuración de IPv4 se recupera a través de DHCP.

    Si prefiere una configuración IPv4 estática, configure ipv4.method en manualy especifique una dirección IP estática y una subred (en notación CIDR) en el ipv4.addresses propiedad. Para una descripción más completa de todas las propiedades y sus significados, consulte la nm-settings página de manual (man nm-settings).

    Ahora, para cambiar las propiedades de una conexión, necesitamos usar el nmcli connection modify pedido. Cambiemos nuestro ether-enp1s0 conexión para tener una dirección IPv4 estática (elija 10.10.10.1), una puerta de enlace (10.10.10.254) y un DNS (10.10.10.254):

    $ nmcli connection modify ether-enp1s0 ipv4.method manual ipv4.addresses 10.10.10.1/24 
    ipv4.gateway 10.10.10.254 ipv4.dns 10.10.10.254
    

    Este comando cambia permanentemente la conexión, pero la nueva configuración no se aplicará inmediatamente al dispositivo: se aplicará la próxima vez que se active la conexión en este dispositivo. Entonces, para que nuestra configuración funcione ahora mismo, volvamos a habilitar la conexión:

    $ nmcli connection up ether-enp1s0
    

    También puede evitar que NetworkManager habilite el ether-enp1s0 Enlace:

    $ nmcli connection modify ether-ens1s0 connection.autoconnect no
    

    A partir de ahí, deberá activar el ether-enp1s0 inicie sesión usted mismo.

    Crear una nueva conexión con nmcli

    Aquí estamos, es hora de crear una nueva conexión en NetworkManager con nmcli! el nmcli el subcomando de conexión es add, y la sintaxis es similar a la modify subcomando:

    $ nmcli con add type ethernet ifname enp0s1 con-name enp0s1_dhcp autoconnect no
    $ nmcli con
    NAME UUID TYPE DEVICE
    ether-enp1s0 23e0d89e-f56c-3617-adf2-841e39a85ab4 ethernet enp1s0
    enp0s1_dhcp 64b499cb-429f-4e75-a54d-b3fd980c39aa ethernet --
    Wired connection 1 fceb885b-b510-387a-b572-d9172729cf18 ethernet --
    Wired connection 2 074fd16d-daa6-3b6a-b092-2baf0a8b91b9 ethernet --
    

    Como no hemos especificado ninguna propiedad de IPv4, la configuración de IPv4 se recuperará a través de DHCP, de forma predeterminada para el ipv4.method la propiedad es auto.

    Al crear una conexión, las propiedades requeridas dependen de la connection.type (ethernet, wifi, bond, vpn, etc.) Si falta alguna de las propiedades requeridas, nmcli devolverá un error, imprimiendo el nombre de la propiedad que falta.

    Si prefiere una experiencia más interactiva, agregue la --ask bandera a tu nmcli pedido. Esto indica nmcli para preguntarle de forma interactiva qué se necesita para completar el comando, en lugar de fallar:

    $ nmcli --ask con add
    Connection type: ethernet
    Interface name [*]: enp0s1
    There are 3 optional settings for Wired Ethernet.
    Do you want to provide them? (yes/no) [yes] no
    There are 2 optional settings for IPv4 protocol.
    Do you want to provide them? (yes/no) [yes] no
    There are 2 optional settings for IPv6 protocol.
    Do you want to provide them? (yes/no) [yes] no
    There are 4 optional settings for Proxy.
    Do you want to provide them? (yes/no) [yes] no
    Connection 'ethernet-enp0s1' (64b499cb-429f-4e75-a54d-b3fd980c39aa) successfully added.
    

    Se puede acceder a un modo de editor a través de nmcli con edit. Este modo ofrece ayuda en línea y una experiencia aún más interactiva. Llamar a este modo sin ningún argumento hace que el nmcli editor para que le solicite el tipo de conexión que desea crear. En su lugar, pase un nombre de conexión y el editor abrirá la conexión para editarla.

    nmcli hoja de trucos

    Aquí está el resumen de la nmcli connection comandos que hemos visto hasta ahora:

    Tabla 2: Hoja de trucos para los comandos de conexión nmcli.
    PedidoargumentosLa descripcion
    down

    Destruirá la conexión especificada, desconfigurando el dispositivo asociado.

    up

    Activará la conexión especificada.

    show[connection]

    Cuando se usa sin argumentos, el show se puede omitir ya que este es el comando predeterminado: enumera todas las conexiones disponibles. Si se proporciona un nombre de inicio de sesión o UUID como argumento, se imprimen las propiedades de inicio de sesión.

    modify

    conexión {property_name,
    El valor de la propiedad}...

    Cambiará las propiedades de conexión

    addconexión {property_name,
    El valor de la propiedad}...

    Creará una nueva conexión con las propiedades especificadas. Las propiedades obligatorias dependen de la conexión. pegar, que siempre debe especificarse.

    ¿Y después?

    Ahora hemos presentado la filosofía subyacente de NetworkManager y sus conceptos básicos (dispositivo y conexión). También hemos visto que NetworkManager puede manejar solicitudes simultáneas de múltiples herramientas de varias maneras. Con la herramienta de línea de comandos NetworkManager, nmcli, aprendimos cómo ver la configuración real y cómo agregar, editar y habilitar/deshabilitar conexiones en dispositivos. Este conocimiento le brinda los conceptos básicos para comprender y controlar NetworkManager.

    NetworkManager puede hacer mucho más. Muchas características merecen publicaciones de blog separadas, como secuencias de comandos de despachador, verificadores de conectividad, DNS dividido, aleatorización de direcciones MAC, configuración de puntos de acceso y configuración automática. Así que estad atentos aquí para las próximas publicaciones del blog. O, si no puede esperar, ¡comience a buscar en las páginas man de NetworkManager!

    Artículos de interés

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada.

    Subir