domingo, 5 de noviembre de 2023

Gestión de redes en Debian: NetworkManager - interfaces

Durante el proceso de instalación de Debian, la red se configura al principio de la instalación, se guarda la configuración de red en un archivo de texto plano. Y dependiendo de quien gestione la red: NetworkManager o interfaces, la configuración se guarda en una carpeta y un fichero diferente.

1- NetworkManager: /etc/NetworkManager/system-connections
2- interfaces: /etc/network/interfaces

Este archivo se lee en el proceso de arranque del sistema operativo. solo lo puede editar y modificar el usuario administrador del sistema, por defecto es el usuario: root

NOTA MUY IMPORTANTE: No se puede usar los dos gestores de redes a la misma vez, pues dará conflictos entre ellos. En una instalación nueva, no se tiene que desactivar nada, ya que Debian configura una de ellas, dependiendo de si usa entorno de escritorio o una consola de comandos.

1- Si está usando NetworkManager, se tiene que desactivar las entradas en: /etc/network/interfaces

2- Si está usando interfaces, se tiene que desactivar las entradas en: /etc/NetworkManager/system-connections


Diferencia entre NetworkManager e interfaces

- NetworkManager: es un servicio que administra los dispositivos y conexiones de red. Proporciona una interfaz gráfica de usuario (GUI) para administrar la configuración de red, así como una interfaz de línea de comandos (CLI) para administrar redes desde la línea de comandos. Se puede configurar a nivel de usuario. Por defecto le da preferencias a las conexiones por cable (ethernet o usb) antes que las inalámbricas (WiFi o Bluetooth).

- Interfaces: son las conexiones físicas o virtuales que permiten que un ordenador se comunique con otros dispositivos en una red. Los ejemplos de interfaces incluyen: Ethernet, Wi-Fi, Bluetooth y USB. Solo lo puede configurar el usuario administrador.

NOTA: La principal diferencia entre NetworkManager e interfaces es que NetworkManager es una abstracción de nivel superior que administra las interfaces de red en el sistema operativo. Se ocupa de tareas como activar y desactivar interfaces, asignar direcciones IP y realizar la configuración de red. Por otro lado, las interfaces son las conexiones físicas o virtuales que permiten que una computadora se comunique con otros dispositivos en la misma red.


Instalación automática

1- Durante la instalación de Debian, se instalará NetworkManager: en las instalaciones por defecto que usen un entorno de escritorio, como puede ser: kde plasma, gnome, etc... Normalmente no se requiere ninguna configuración para una conexión alámbrica DHCP por cable ethernet. Si se requiere una configuración para una interfaz inalámbrica Wi-Fi, y creará un archivo específico con la configuración en:

/etc/NetworkManager/system-connections.

Cuando Debian se conecta por primera vez a una red, por defecto, crear una carpeta llamada: system-connections (Conexiones del sistema). Y dentro va creando archivos con cada una de las conexiones que realicemos (Ethernet, WiFi,USB, Bluetooth, etc..). Nosotros podemos editar y modificar el contenido de dicho archivo usando alguna aplicación en modo gráfico (o desde consola), en el caso de de KDE Plasma el programa se llama: plasma-nm

- Conexión por cable (Ethernet), por defecto se crea automáticamente un archivo llamado: 'Wired connection 1' Las configuraciones de red ethernet, suelen ser automáticas ya que por defecto usa el protocolo DHCP y se conecta a la primera red que encuentra, pero nosotros podemos crear y/o editar dicha configuración a mano. 

NOTA: aunque nosotros le cambiemos el nombre a la conexión por cable (ethernet), el fichero se va a seguir llamando: 'Wired connection 1' ya que el nombre se cambia dentro del archivo, en el apartado: [connection] en la variable id= nombre_que_le_demos




- Conexión inalámbrica (WiFi), esta configuración siempre es manual, ya que 
somos nosotros los que seleccionamos la red a la que nos vamos a conectar, y conocemos previamente los datos de: SSID, usuario y contraseña, que son necesarios para la conexión. Se crea un nuevo fichero dentro de: system-connections con la siguiente estructura: nombre_del_SSID.nmconnection. Lo que cambia es el nombre_del_SSID. Ejemplo: mi_wifi.mnconnection




2- Durante la instalación de Debian, se instalará interfaces: en las instalaciones sin escritorio, como Servidores o sistemas sin entorno de escritorio.

El instalador configura interfaces, creando el archivo: /etc/network/interfaces

Cuando hay muchas interfaces, es una buena práctica mantener la configuración en diferentes archivos dentro: /etc/network/interfaces.d/



Interfaz de red

Normalmente casi todos los ordenadores actuales, están conectados a internet, la configuración de la interfaz de red se realiza durante la instalación del sistema operativo Debian GNU/Linux.

Cuando usamos el término: Interfaz de red, nos estamos refiriendo al hardware de red que tiene nuestro ordenador, para conectarnos a una red (internet, local, etc...), algunas de estas interfaces son: Ethernet, WiFi, USB, Bluetooth, etc..





También existe una interfaz llamada: loopback, que el sistema operativo utiliza para establecer una conexión consigo mismo.

Para que podamos conectarnos a una red (internet, local, etc..), y compartir información, tenemos que configurar correctamente unos parámetros. En caso contrario no podemos conectarnos a dicha red.

Los ordenadores de sobremesa y los portátiles suelen tener dos o tres interfaces de red (Ethernet, WiFi, USB y un loopback). Los servidores suelen tener muchas más interfaces de red.

Existen varios comandos para ver las interfaces de red que tiene nuestro ordenador:

- ip link show
- nmcli device show
- nmtui



Nombres de interfaces de red

Antiguamente las interfaces de red ethernet se nombraban y numeraban según el orden, en que el kernel identifica las interfaces, las interfaces alámbricas o cableadas (Ethernet o USB) como: eth0, eth1, etc... Las interfaces inalámbricas (WiFi o Bluetooth) se nombraban como: wlan0, wlan1, etc..

Actualmente y con el uso de systemd, las interfaces de red emplean una convención de nomenclatura diferente, estableciendo una relación entre el nombre de la interfaz y la conexión física del hardware.

Los nombres de interfaz de red comienzan con un prefijo de dos caracteres que significa el tipo de interfaz.

Prefijos del nombre de la interfaz de red:

- en : Ethernet
- ib : InfiniBand
- sl : Serial line IP (slip)
- usb: Universal Serial Bus (USB)
- wl : Wireless local area network (WLAN)
- ww : Wireless wide area network (WWAN)



Orden para nombrar y numerar las interfaces de red:.

1.- Proporcionado por la BIOS / UEFI. por ejemplo: eno1.
2.- Puerto al que está conectado, como indica la BIOS / UEFI, por ejemplo: ens1.
3.- Dirección correspondiente al bus de conexión, por ejemplo: enp3s5.
4.- Dirección MAC de la interfaz, por ejemplo: enx78e7d1ea46da.
5.- Usando el nombre antiguo, por ejemplo: eth0.



Gestión de las interfaces de red

/etc/network/interfaces

Antes de usar systemd, se usaba el comando: ifconfig, aunque todavía se puede utilizar para realizar configuraciones y consultas a las interfaces de red, ahora se considera obsoleto, debido que era limitado en la gestión de interfaces WiFi. El comando: ifconfig es sustituido por el comando: ip, ya que gestiona mejor las interfaces de red.

El comando: ip contiene muchas opciones, por lo que existen comandos para la activación y configuración de las interfaces de red.

Los comandos: ifup y ifdown, se ejecutan automáticamente durante el arranque del sistema. Se utilizan para configurar las interfaces de red que se encuentran presentes en el fichero:

/etc/network/interfaces

Algunas de las opciones más comunes son:
  • auto: Indica al sistema que encienda automáticamente la interfaz de red cuando arranque el sistema.
  • iface: Define el nombre de la interfaz de red.
  • address: Define la dirección IP de la interfaz de red.
  • netmask: Define la máscara de subred de la interfaz de red.
  • gateway: Define la puerta de enlace predeterminada para la interfaz de red.
  • dns-nameservers: Define los servidores DNS que utilizará la interfaz de red.
- las líneas que comienzan con la palabra: auto se utilizan para identificar las interfaces físicas que se van a activar cuando se ejecute ifup con la opción -a. Todas las interfaces marcadas como: auto se activan durante el arranque del sistema operativo, en el orden en que aparecen en la lista.

- El nombre de la interfaz debe seguir a la palabra: auto en la misma línea.

- La configuración real de la interfaz se escribe en otra línea, empezando por la palabra: iface, seguida del nombre de la interfaz de red, el nombre de la interfaz y el nombre del método utilizado para configurar la interfaz. El siguiente ejemplo muestra un fichero de configuración básico para las interfaces lo (loopback) y enp3s5:

auto lo
iface lo inet loopback

auto enp3s5
iface enp3s5 inet dhcp


En redes sin servidor DHCP, se puede utilizar el método static en su lugar y proporcionar la configuración IP manualmente en: 

/etc/network/interfaces.

Por ejemplo:

iface enp3s5 inet static
address 192.168.1.2/24
gateway 192.168.1.1

o

iface enp3s5 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1


Las interfaces que utilizan el método: static, no necesitan una directiva: auto, ya que se activan siempre que se detecta el hardware de la red. Si la misma interfaz tiene más de una entrada iface, entonces todas las direcciones y opciones configuradas se aplicarán al abrir esa interfaz. Esto es útil para configurar tanto direcciones IPv4 como IPv6 en la misma interfaz, así como para configurar múltiples direcciones del mismo tipo en una sola interfaz.




/etc/NetworkManager/system-connections

NetworkManager
hace que la configuración de la red sea automática, y muy fácil. Cuando tenemos la posibilidad de conectarnos por cable (ethernet) e inalámbricas (WiFi), NetworkManager por defecto da prioridad a la conexión por cable (ethernet) y luego a la inalámbrica (WiFi) intentando mantener al menos una conexión activa todo el tiempo, siempre que sea posible.


NetworkManager controlará las interfaces de red, que no se encuentren configuradas en el fichero: /etc/network/interfaces. Esto es así, para no interferir la configuración de: /etc/NetworkManager/system-connections con la configuración de: /etc/network/interfaces.

Gestionar NetworkManager solo lo puede hacer el usuario root. Pero los usuarios normales, pueden usar aplicaciones clientes para crear y modificar las conexiones de red, dichas aplicaciones viene de serie en los entornos de escritorios de GNU/Linux, como son: nm-tray, network-manager-gnome, nm-applet o plasma-nm, (se encuentran, en un icono en la esquina derecha la barra de tareas del escritorio (superior o inferior, dependiendo del entorno de escritorio) o en el centro del control de configuración del sistema.

Las aplicaciones clientes de configuración de NetworkManager, se encuentran, tanto en modo gráfico, como en modo texto para usar en una consola de comandos. Para la consola de comandos usaremos:

- mncli: Interfaz de línea de comandos para NetworkManager. Este comando es el más potente.

- mntui: Interfaz de usuario en modo texto para NetworkManager


Recordemos, la carpeta: /etc/NetworkManager/system-connections es un directorio que contiene los archivos de configuración para las conexiones de red administradas por NetworkManager. Los archivos de configuración en este directorio se denominan: perfiles y cada perfil contiene la configuración para una conexión de red específica.

Los perfiles de NetworkManager están escritos en un formato de texto plano. Cada perfil contiene una serie de opciones que definen la configuración de la conexión de red (ethernet, wifi). 

Algunas de las opciones más comunes incluyen:

=====================
[connection]
id= Define la red a la que nos vamos a conectar.
type= Define el tipo de conexión de red (ethernet, wifi y vpn).
interface-name= Define la interfaz de red que se utilizará para la conexión.
autoconnect= Define que conecte automáticamente al arrancar el sistema.

[ethernet]
address= Define la dirección IP de la conexión de red.
netmask=Define la máscara de subred de la conexión de red.
gateway= Define la puerta de enlace predeterminada para la conexión de red.

[wifi]
mode= Define el modo de conexión a la red
ssid= Define el SSID de la red Wi-Fi a la que se conectará la conexión.

[wifi-security]
auth-alg= Define el algoritmo de autenticación de la red
key-mgmt= Define el tipo de clave usada para la red (wap, wpa-psk, etc...)
psk= Define la contraseña de la red Wi-Fi a la que se conectará la conexión.

[ipv4]
method= Define el método para la conexión

[ipv6]
addr-gen-mode= Define el método para la conexión
method= Define el método para conexión
ip6-privacy= Define 0,1 ó 2 para habilitar la dirección temporal

[proxy]
=====================

Para que los cambios surtan efecto, reiniciamos el ordenador o mejor aún, reiniciamos el servicio, usando el siguiente comando:

nmcli connection reload <perfil-id>

Aquí hay un ejemplo de un perfil de NetworkManager que configura una conexión de red Ethernet con una dirección IP de 192.168.1.10, una máscara de subred de 255.255.255.0 y una puerta de enlace de 192.168.1.1:

[connection]
id=eth0
interface-name=eth0
type=ethernet
autoconnect=true

[ethernet]
address=192.168.1.2
netmask=255.255.255.0
gateway=192.168.1.1




==============================================================

Servicios de red en el escritorio de Debian

Comúnmente la interfaz: lo, se inicializa mediante el servicio: networking.service y el resto de las interfaces de red (para los entornos de escritorio: kde plasma, gnome, etc... usando systemd), se inicializa mediante el servicio: NetworkManager.service.

systemctl status networking
service networking status

systemctl status NetworkManager
service NetworkManager status

Debian en entornos de escritorios, gestiona la conexión de red mediante el servicio: NetworkManager (nm)

Ellos tienen sus propios interfaz gráfico de usuarios y programas de línea de órdenes como interfaces de usuario.
  • Tienen su propio demonio así como su motor de sistema.
  • Permiten la conexión sencilla entre su sistema e Internet.
  • Permiten la gestión sencilla de la configuración inalámbrica y cableada.
  • Nos permiten configurar la red de forma independiente del histórico paquete ifupdown.

1- Nota muy importante: No use las herramientas de configuración de red automática para servidores. Ya que están pensadas para escritorios, móviles y portátiles.


2- NOTA IMPORTANTE EN AUTOCOMPLETADO:
Para el uso de la tecla tabulación, es decir autocompletado de comandos, en consola o tty, para nmcli, hay que instalar el paquete: bash-completion






No hay comentarios: