109.2 Lección 2
Certificación: |
LPIC-1 |
---|---|
Versión: |
5.0 |
Tema: |
109 Fundamentos de redes |
Objetivo: |
109.2 Configuración de red persistente |
Lección: |
2 de 2 |
Introducción
Linux es compatible con prácticamente todas las tecnologías de red utilizadas para conectar servidores, contenedores, máquinas virtuales, ordenadores de sobremesa y dispositivos móviles. Las conexiones entre todos estos nodos de red pueden ser dinámicas y heterogéneas, por lo que requieren una gestión adecuada por parte del sistema operativo que se ejecuta en ellos.
En el pasado, las distribuciones desarrollaban sus propias soluciones personalizadas para gestionar la infraestructura de red dinámica. Hoy en día, herramientas como NetworkManager y systemd ofrecen funciones más completas e integradas para satisfacer todas las demandas específicas. === NetworkManager
La mayoría de las distribuciones de Linux adoptan el demonio de servicio NetworkManager para configurar y controlar las conexiones de red del sistema. El propósito de NetworkManager es hacer que la configuración de la red sea lo más sencilla y automática posible. Cuando se utiliza DHCP, por ejemplo, NetworkManager organiza los cambios de ruta, la obtención de direcciones IP y las actualizaciones de la lista local de servidores DNS, si es necesario. Cuando se dispone de conexiones por cable e inalámbricas. NetworkManager da prioridad por defecto a la conexión por cable e intentará mantener al menos una conexión activa todo el tiempo, siempre que sea posible.
Note
|
Una solicitud mediante DHCP (Protocolo de configuración dinámica de host) suele enviarse a través del adaptador de red en cuanto se establece el enlace con la red. El servidor DHCP que está activo en la red responde entonces con la configuración (dirección IP, máscara de red, ruta por defecto, etc.) que el solicitante debe utilizar para comunicarse mediante el protocolo IP. |
Por defecto, el demonio NetworkManager controla las interfaces de red no mencionadas en el fichero /etc/network/interfaces
. Lo hace para no interferir con otros métodos de configuración que puedan estar presentes también, modificando así sólo las interfaces desatendidas.
El servicio NetworkManager se ejecuta en segundo plano con privilegios de root y desencadena las acciones necesarias para mantener el sistema en línea. Los usuarios normales pueden crear y modificar las conexiones de red con aplicaciones cliente que, aunque no tengan privilegios de root, son capaces de comunicarse con el servicio subyacente para realizar las acciones solicitadas.
Las aplicaciones cliente para NetworkManager están disponibles tanto para la línea de comandos como para el entorno gráfico. Para este último, la aplicación cliente viene como un accesorio del entorno de escritorio (bajo nombres como, nm-tray, network-manager-gnome, nm-applet o plasma-nm) y suele ser accesible a través de un icono indicador en la esquina de la barra del escritorio o desde la utilidad de configuración del sistema.
En la línea de comandos, el propio NetworkManager proporciona dos programas cliente: nmcli
y nmtui
. Ambos programas tienen las mismas características básicas, pero nmtui
tiene una interfaz basada en curses mientras que nmcli
es un comando más completo que también puede ser utilizado en scripts. El comando nmcli
separa todas las propiedades relacionadas con la red controladas por NetworkManager en categorías llamadas objects:
general
-
El estado y las operaciones generales de NetworkManager.
networking
-
Control general de la red.
radio
-
Conmutadores de radio NetworkManager.
connection
-
Las conexiones del NetworkManager.
device
-
Dispositivos gestionados por NetworkManager.
agent
-
Agente secreto NetworkManager o agente polkit.
monitor
-
Supervisar los cambios del NetworkManager.
El nombre del objeto es el argumento principal del comando nmcli
. Para mostrar el estado general de conectividad del sistema, por ejemplo, se debe dar como argumento el objeto general
:
$ nmcli general STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled
La columna STATE
indica si el sistema está conectado a una red o no. Si la conexión está limitada debido a una mala configuración externa o a restricciones de acceso, la columna CONNECTIVITY
no informará del estado de conectividad completa
. Si aparece Portal
en la columna CONNECTIVITY
, significa que se requieren pasos adicionales de autenticación (normalmente a través del navegador web) para completar el proceso de conexión. Las columnas restantes informan del estado de las conexiones inalámbricas (si las hay), ya sean WIFI
o WAN
(Wide Wireless Area Network, es decir, redes celulares). El sufijo HW
indica que el estado corresponde al dispositivo de red y no a la conexión de red del sistema, es decir, indica si el hardware está activado o desactivado para ahorrar energía.
nmcli
también necesita un argumento de comando para ejecutarse. El comando status
se utiliza por defecto si no hay ningún argumento de comando, por lo que el comando nmcli general
se interpreta en realidad como nmcli general status
.
No es necesario realizar ninguna acción cuando el adaptador de red se conecta directamente al punto de acceso a través de cables, pero las redes inalámbricas requieren una mayor interacción para aceptar nuevos miembros. nmcli
facilita el proceso de conexión y guarda la configuración para conectarse automáticamente en el futuro, por lo que es muy útil para los ordenadores portátiles o cualquier otro aparato móvil.
Antes de conectarse al wi-fi, es conveniente listar primero las redes disponibles en el área local. Si el sistema tiene un adaptador wi-fi en funcionamiento, entonces el objeto device
lo utilizará para escanear las redes disponibles con el comando nmcli device wifi list
:
$ nmcli device wifi list IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY 90:F6:52:C5:FA:12 Hypnotoad Infra 11 130 Mbit/s 67 ▂▄▆_ WPA2 10:72:23:C7:27:AC Jumbao Infra 1 130 Mbit/s 55 ▂▄__ WPA2 00:1F:33:33:E9:BE NETGEAR Infra 1 54 Mbit/s 35 ▂▄__ WPA1 WPA2 A4:33:D7:85:6D:B0 AP53 Infra 11 130 Mbit/s 32 ▂▄__ WPA1 WPA2 98:1E:19:1D:CC:3A Bruma Infra 1 195 Mbit/s 22 ▂___ WPA1 WPA2
La mayoría de los usuarios probablemente utilizarán el nombre de la columna SSID
para identificar la red de interés. Por ejemplo, el comando nmcli
puede conectarse a la red llamada Hypnotoad
utilizando de nuevo el objeto device
:
$ nmcli device wifi connect Hypnotoad
Si el comando se ejecuta dentro de un emulador de terminal en el entorno gráfico, aparecerá un cuadro de diálogo solicitando la frase de acceso a la red. Cuando se ejecuta en una consola de sólo texto, la contraseña puede ser proporcionada junto con los otros argumentos:
$ nmcli device wifi connect Hypnotoad password MyPassword
Si la red wi-fi oculta su nombre SSID, nmcli
aún puede conectarse a ella con los argumentos extra hidden yes
:
$ nmcli device wifi connect Hypnotoad password MyPassword hidden yes
Si el sistema tiene más de un adaptador wi-fi, se puede indicar el que se va a utilizar con ifname
. Por ejemplo, para conectarse usando el adaptador llamado wlo1
:
$ nmcli device wifi connect Hypnotoad password MyPassword ifname wlo1
Después de que la conexión tenga éxito, NetworkManager le dará el nombre del SSID correspondiente (si es una conexión wi-fi) y lo conservará para futuras conexiones. Los nombres de las conexiones y sus UUIDs son listados por el comando nmcli connection show
:
$ nmcli connection show NAME UUID TYPE DEVICE Ethernet 53440255-567e-300d-9922-b28f0786f56e ethernet enp3s5 tun0 cae685e1-b0c4-405a-8ece-6d424e1fb5f8 tun tun0 Hypnotoad 6fdec048-bcc5-490a-832b-da83d8cb7915 wifi wlo1 4G a2cf4460-0cb7-42e3-8df3-ccb927f2fd88 gsm --
Se muestra el tipo de cada conexión — que puede ser ethernet
, wifi
, tun
, gsm
, bridge
, etc. — así como el dispositivo al que están asociadas. Para realizar acciones sobre una conexión concreta, hay que proporcionar su nombre o UUID. Para desactivar la conexión Hypnotoad
, por ejemplo:
$ nmcli connection down Hypnotoad Connection 'Hypnotoad' successfully deactivated
Igualmente, el comando nmcli connection up Hypnotoad
puede ser utilizado para traer la conexión, ya que ahora está guardada por NetworkManager. El nombre de la interfaz también se puede utilizar para reconectar, pero en este caso se debe utilizar el objeto device
en su lugar:
$ nmcli device disconnect wlo2 Device 'wlo1' successfully disconnected.
El nombre de la interfaz también puede utilizarse para restablecer la conexión:
$ nmcli device connect wlo2 Device 'wlo1' successfully activated with '833692de-377e-4f91-a3dc-d9a2b1fcf6cb'.
Tenga en cuenta que el UUID de la conexión cambia cada vez que se abre la conexión, por lo que es preferible utilizar su nombre para mantener la coherencia.
Si el adaptador inalámbrico está disponible pero no se está utilizando, entonces se puede apagar para ahorrar energía. Esta vez, el objeto radio debe ser pasado a nmcli
:
$ nmcli radio wifi off
Por supuesto, el dispositivo inalámbrico se puede volver a encender con el comando nmcli radio wifi on
.
Una vez establecidas las conexiones no será necesaria ninguna interacción manual en el futuro, ya que NetworkManager identifica las redes conocidas disponibles y se conecta automáticamente a ellas. Si es necesario, NetworkManager tiene plugins que pueden ampliar sus funcionalidades, como el plugin para soportar conexiones VPN.
systemd-networkd
Los sistemas que ejecutan systemd pueden utilizar opcionalmente sus demonios incorporados para gestionar la conectividad de red: systemd-networkd
para controlar las interfaces de red y systemd-resolved
para gestionar la resolución de nombres locales. Estos servicios son compatibles con los métodos de configuración heredados de Linux, pero la configuración de las interfaces de red en particular tiene características que vale la pena conocer.
Los archivos de configuración utilizados por systemd-networkd para configurar las interfaces de red pueden encontrarse en cualquiera de los tres directorios siguientes:
/lib/systemd/network
-
El directorio de la red del sistema.
/run/systemd/network
-
El directorio de red volátil en tiempo de ejecución.
/etc/systemd/network
-
El directorio de red de la administración local.
Los archivos se procesan en orden lexicográfico, por lo que se recomienda comenzar sus nombres con números para facilitar la lectura y el ordenamiento.
Los archivos en /etc
tienen la mayor prioridad, mientras que los archivos en /run
tienen prioridad sobre los archivos con el mismo nombre en /lib
. Esto significa que si los archivos de configuración en diferentes directorios tienen el mismo nombre, entonces systemd-networkd ignorará los archivos con menor prioridad. Separar los archivos de esta manera es una forma de cambiar la configuración de la interfaz sin tener que modificar los archivos originales: se pueden colocar modificaciones en /etc/systemd/network
para anular las de /lib/systemd/network
.
El propósito de cada archivo de configuración depende de su sufijo. Los archivos que terminan en .netdev
son utilizados por systemd-networkd para crear dispositivos de red virtuales, como los dispositivos bridge o tun. Los archivos que terminan en .link
establecen configuraciones de bajo nivel para la interfaz de red correspondiente. systemd-networkd detecta y configura los dispositivos de red automáticamente a medida que aparecen — además de ignorar los dispositivos ya configurados por otros medios — por lo que no es necesario añadir estos archivos en la mayoría de las situaciones.
El sufijo más importante es .network
. Los archivos que utilizan este sufijo pueden utilizarse para configurar direcciones y rutas de red. Al igual que con los otros tipos de archivos de configuración, el nombre del archivo define el orden en el que se procesará el archivo. La interfaz de red a la que se refiere el fichero de configuración se define en la sección [Match]
dentro del mismo.
Por ejemplo, la interfaz de red ethernet enp3s5
puede ser seleccionada dentro del archivo /etc/systemd/network/30-lan.network
utilizando la entrada Name=enp3s5
en la sección [Match]
:
[Match] Name=enp3s5
También se acepta una lista de nombres separados por espacios en blanco para hacer coincidir muchas interfaces de red con este mismo archivo a la vez. Los nombres pueden contener globos de estilo shell, como es*
. Otras entradas proporcionan varias reglas de coincidencia, como la selección de un dispositivo de red por su dirección MAC:
[Match] MACAddress=00:16:3e:8d:2b:5b
La configuración del dispositivo se encuentra en la sección [Network]
del archivo. Una modificación de red estática simple sólo requiere las entradas Address
y Gateway
:
[Match] MACAddress=00:16:3e:8d:2b:5b [Network] Address=192.168.0.100/24 Gateway=192.168.0.1
Para utilizar el protocolo DHCP en lugar de direcciones IP estáticas, se debe utilizar la entrada DHCP
:
[Match] MACAddress=00:16:3e:8d:2b:5b [Network] DHCP=yes
El servicio systemd-networkd intentará obtener tanto direcciones IPv4 como IPv6 para la interfaz de red. Para utilizar sólo IPv4, se debe utilizar DHCP=ipv4
. Del mismo modo, DHCP=ipv6
ignorará la configuración de IPv4 y utilizará únicamente la dirección IPv6 proporcionada.
Las redes inalámbricas protegidas por contraseña también pueden ser configuradas por systemd-networkd, pero el adaptador de red debe estar ya autenticado en la red antes de que systemd-networkd pueda configurarlo. La autenticación la realiza WPA supplicant, un programa dedicado a configurar adaptadores de red para redes protegidas por contraseña.
El primer paso es crear el archivo de credenciales con el comando wpa_passphrase
:
# wpa_passphrase MyWifi > /etc/wpa_supplicant/wpa_supplicant-wlo1.conf
Este comando tomará la frase de contraseña para la red inalámbrica MyWifi
de la entrada estándar y almacenará su hash en el archivo /etc/wpa_supplicant/wpa_supplicant-wlo1.conf
. Tenga en cuenta que el nombre del archivo debe contener el nombre apropiado de la interfaz inalámbrica, de ahí el wlo1
en el nombre del archivo.
El gestor systemd lee los archivos de frases de paso WPA en /etc/wpa_supplicant/
y crea el servicio correspondiente para ejecutar WPA supplicant y poner en marcha la interfaz. El archivo de frases de paso creado en el ejemplo tendrá entonces una unidad de servicio correspondiente llamada wpa_supplicant@wlo1.service
. El comando systemctl start wpa_supplicant@wlo1.service
asociará el adaptador inalámbrico con el punto de acceso remoto. El comando systemctl enable wpa_supplicant@wlo1.service
hace que la asociación sea automática durante el arranque.
Finalmente, un archivo .network
que coincida con la interfaz wlo1
debe estar presente en /etc/systemd/network/
, ya que systemd-networkd lo utilizará para configurar la interfaz tan pronto como el suplicante WPA finalice la asociación con el punto de acceso.
Ejercicios guiados
-
¿Qué significa la palabra
Portal
en la columnaCONNECTIVITY
en la salida del comandonmcli general status
? -
En un terminal de consola, ¿cómo puede un usuario normal utilizar el comando
nmcli
para conectarse a la red inalámbricaMyWifi
protegida por la contraseñaMyPassword
? -
¿Qué comando puede encender el adaptador inalámbrico si el sistema operativo lo ha desactivado previamente?
-
¿En qué directorio deben colocarse los archivos de configuración personalizados cuando systemd-networkd gestiona las interfaces de red?
Ejercicios de exploración
-
¿Cómo puede un usuario ejecutar el comando
nmcli
para eliminar una conexión no utilizada llamadaHotel Internet
? -
NetworkManager escanea las redes wi-fi periódicamente y el comando
nmcli device wifi list
sólo lista los puntos de acceso encontrados en el último escaneo. ¿Cómo debería usarse el comandonmcli
para pedir a NetworkManager que vuelva a escanear inmediatamente todos los puntos de acceso disponibles? -
¿Qué entrada
name
debe utilizarse en la sección[Match]
de un archivo de configuración systemd-networkd para que coincida con todas las interfaces ethernet? -
¿Cómo debe ejecutarse el comando
wpa_passphrase
para utilizar la frase de paso dada como argumento y no desde la entrada estándar?
Resumen
Esta lección cubre las herramientas comunes utilizadas en Linux para gestionar conexiones de red heterogéneas y dinámicas. Aunque la mayoría de los métodos de configuración no requieren la intervención del usuario, a veces es necesaria y herramientas como NetworkManager y systemd-networkd pueden reducir las molestias al mínimo. La lección repasa los siguientes temas: * Como se integran NetworkManager y systemd-networkd en el sistema. * Como el usuario puede interactuar con NetworkManager y systemd-networkd. * Configuración básica de la interfaz tanto con NetworkManager como con systemd-networkd.
Los conceptos, comandos y procedimientos abordados fueron:
-
Comandos de cliente de NetworkManager:
nmtui
ynmcli
. -
Escaneo y conexión a redes inalámbricas usando los comandos apropiados de
nmcli
. -
Conexiones persistentes a redes wi-fi usando systemd-networkd.
Respuestas a los ejercicios guiados
-
¿Qué significa la palabra
Portal
en la columnaCONNECTIVITY
en la salida del comandonmcli general status
?Significa que se requieren pasos adicionales de autenticación (normalmente a través del navegador web) para completar el proceso de conexión.
-
En un terminal de consola, ¿cómo puede un usuario normal utilizar el comando
nmcli
para conectarse a la red inalámbricaMyWifi
protegida por la contraseñaMyPassword
?En un terminal de texto, el comando sería
$ nmcli device wifi connect MyWifi password MyPassword
-
¿Qué comando puede encender el adaptador inalámbrico si el sistema operativo lo ha desactivado previamente?
$ nmcli radio wifi on
-
¿En qué directorio deben colocarse los archivos de configuración personalizados cuando systemd-networkd gestiona las interfaces de red?
En el directorio de red de la administración local:
/etc/systemd/network
.
Respuestas a los ejercicios de exploración
-
¿Cómo puede un usuario ejecutar el comando
nmcli
para eliminar una conexión no utilizada llamadaHotel Internet
?$ nmcli connection delete "Hotel Internet"
-
NetworkManager escanea las redes wi-fi periódicamente y el comando
nmcli device wifi list
sólo lista los puntos de acceso encontrados en el último escaneo. ¿Cómo debería usarse el comandonmcli
para pedir a NetworkManager que vuelva a escanear inmediatamente todos los puntos de acceso disponibles?El usuario root puede ejecutar
nmcli device wifi rescan
para que NetworkManager vuelva a escanear los puntos de acceso disponibles. -
¿Qué entrada
name
debe utilizarse en la sección[Match]
de un archivo de configuración systemd-networkd para que coincida con todas las interfaces ethernet?La entrada
name=en*
, ya queen
es el prefijo de las interfaces ethernet en Linux y systemd-networkd acepta globos de tipo shell. -
¿Cómo debe ejecutarse el comando
wpa_passphrase
para utilizar la frase de paso dada como argumento y no desde la entrada estándar?La contraseña debe darse justo después del SSID, como en
wpa_passphrase MyWifi MyPassword
.