Tabla de Contenidos
109.2 Persistent network configuration
Pertenece a Topic 109: Networking Fundamentals
- Weight: 4
- Description: Candidates should be able to manage the persistent network configuration of a Linux host.
- Key Knowledge Areas:
- Understand basic TCP/IP host configuration.
- Configure ethernet and wi-fi network using NetworkManager.
- Awareness of systemd-networkd.
- The following is a partial list of the used files, terms and utilities:
/etc/hostname/etc/hosts/etc/nsswitch.conf/etc/resolv.confnmclihostnamectlifupifdown
Configuración de red en Debian
Interfaces de Red – Modo Clásico
En equipos antiguos, un equipo Linux puede tener diversos tipos de dispositivos de red o NICs (Network Interface Card). A cada tipo de dispositivo se le asigna un nombre y un número de orden:
- Loopback:
lo - Ethernet:
eth0,eth1, … - Modem:
ppp0,ppp1, … - Wifi:
wlan0,wlan1, … - Bluetooth:
hci0,hci1, … - Token Ring:
tr0,tr1, …
El problema es que si el sistema detecta los dispositivos en otro orden, la configuración que tuviésemos especificada no serviría.
Interfaces de Red – Predictable Network Interface Name
A partir de la implementación de systemd, se utiliza una nomenclatura basada en el tipo de dispositivo, bus y número de slot:
- Ethernet On-board:
eno - Ethernet PCI express:
ens - Ethernet PCI (bus y slot):
enp[nº bus]s[nº slot](Ejemplo:enp0s3) - Ethernet MAC:
enx[DIRECCION_MAC](en los casos donde no se detecte correctamente el dispositivo) - Wifi PCI:
wlp[nº bus]s[nº slot](Ejemplo:wlp0s3)
El bus y el slot lo podemos ver con lspci
00:03.0 Ethernet controller: Intel Corporation 8240EM Gigabit Ethernet Controller (rev 02)
/etc/hostname
En el fichero /etc/hostname se guarda el nombre de máquina.
Podemos ver su contenido o usar el comando hostname
Este archivo se puede editar para cambiar el nombre y reiniciar para que se aplique.
También podemos ver esa información en /proc/sys/kernel/hostname. Haciendo el cambio aquí, se aplicaría en el momento. Eso sí, si no se cambia también en /etc/hostname, se perderá en el siguiente reinicio.
En sistemas con systemd, tenemos el comando hostnamectl que también podemos usar para establecer el nombre de la máquina:
hostnamectl set-hostname mimaquina.local
Y reiniciamos el servicio:
systemctl restart systemd-hostnamed
/etc/hosts
/etc/hosts es una pequeña base de datos local de asignación de nombres (DNS)
- Común a todas las distros
- Se utiliza para almacenar los nombres de host y direcciones IP de los sistemas individuales que componen una red local pequeña.
- La primera dirección que se nos muestra es la IP local estándar del localhost (127.0.0.1)
Las direcciones que se pongan en este fichero se resuelven antes que el servidor DNS, es decir, si pusiésemos una dirección pública, se resolverá antes que la petición que se haga al servidor DNS.
/etc/resolv.conf
El fichero /etc/resolv.conf también es común para ambos sistemas.
Se utiliza para indicar al sistema cuál será el servidor de nombres (DNS) a consultar para la resolución de nombres.
Si recibimos la configuración por DHCP, se sobrescribirá la información de dicho fichero. Si la asignación de red fuese manual, sería útil para definir los servidores DNS que quisiéramos, así como los dominios de búsqueda.
Ejemplo de fichero /etc/resolv.conf:
domain casa.local search casa.local nameserver 87.216.1.65 nameserver 87.216.1.66
Obligatorio es tener un nameserver.
/etc/network/interfaces
En el fichero /etc/network/interfaces se define toda la configuración de los dispositivos de red del sistema.
auto: dispositivos que levantan automáticamente al inicioallow-hotplug: similar a auto pero detecta eventosiface: definición de la interfaz de red.inet static: dispositivo con ip fijainet dhcp: dispositivo que obtiene dirección por dhcpaddress: dirección IPnetmask: máscara de subredgateway: puerta de enlace (para que pueda conectarse con otras redes o salga a Internet)broadcast: dirección de broadcast de la subreddns-nameservers: servidores DNS para ese interface
Ejemplo de fichero /etc/network/interfaces:
# The loopback network interface auto lo enp0s3 iface lo inet loopback # The primary network interface iface enp0s3 inet dhcp
Para una asignación estática/manual:
iface enp0s3 inet static
address 192.168.0.130
netmask 255.255.255.0
gateway 192.168.0.1
También tenemos la posibilidad de crear interfaces virtuales (alias), es decir, sobre un dispositivo de red, crear una nueva configuración de tal forma que tenga dos IPs diferentes.
eth0:0: interface virtual
auto lo enp0s3 enp0s3:1
iface lo inet loopback
iface enp0s3 inet static
address 192.168.0.130
netmask 255.255.255.0
iface enp0s3:1 inet static
address 192.168.0.131
netmask 255.255.255.0
Para aplicar cambios en la configuración de red:
systemctl restart networking.service
up,down: comando para levantar o tumbar el interfacepre-up: cosas a ejecutar antes de levantar el interfacepost-up: cosas a ejecutar tras levantar el interfacepre-down: cosas a ejecutar antes de tumbar el interfacepost-down: → cosas a ejecutar tras tumbar el interface
Desde Ubuntu 18, la configuración de red se hace con netplan leyendo ficheros de configuración en formato yaml. Más información.
Configuración de red en CentOS
/etc/sysconfig/network
En el fichero /etc/sysconfig/network podemos definir:
- Gateway
- Hostname
- Networking
Ejemplo:
NETWORKING=yes HOSTNAME=centos6.localdomain
/etc/hosts
Igual que en Debian
/etc/resolv.conf
Igual que en Debian
/etc/sysconfig/network-scripts
Carpeta donde se almacenan las configuraciones de cada dispositivo de red. Cada dispositivo tendrá su propio fichero de configuración:
ifcfg-ethX: archivo de configuración de la interfazethX.
Ejemplo:
DEVICE=eth1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=dhcp
Con configuración estática:
DEVICE=eth2 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.10 NETMASK=255.255.255.0
Posibles opciones:
IPADDRNETMASKGATEWAYDEVICEBROADCASTNETWORKDNS{1,2}PEERDNS=yes,noHWADDR: dirección MAC del dispositivoONBOOT=yes,noBOOTPROTO=none,dhcp,staticNM_CONTROLLED=yes,no (para que lo gestione o no el NetworkManager).USERCTL=yes,no (indica si el usuario puede activar/desactivar el dispositivo de red)
Tras hacer cambios en la configuración de red, lo aplicamos, en el caso de un sistema SysV, con:
service network restart
En sistemas modernos (CentOS 8 y siguientes), usamos NetworkManager:
systemctl restart NetworkManager
Alias de IP
Podemos hacer que una máquina tenga más de una IP por la misma interfaz. Por ejemplo, si editamos /etc/sysconfig/network-scripts/ifcfg-eth1:
NM_CONTROLLED=yes BOOTPROTO=none ONBOOT=yes IPADDR0=192.168.2.5 NETMASK0=255.255.255.0 IPADDR1=192.168.2.55 NETMASK1=255.255.255.0 IPADDR2=192.168.2.150 NETMASK2=255.255.255.0 DEVICE=eth1 DOMAIN=dominio DNS1=8.8.8.8 DNS2=8.8.4.4 PEERDNS=no
Reinicar el servicio para aplicar:
systemctl restart network
Ahora la máquina respondería a las siguientes IPs:
- 192.168.2.5
- 192.168.2.55
- 192.168.2.150
Otra forma de hacer estos alias sería partir de una de las configuraciones y copiarla:
cp /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth1:0
Editando /etc/sysconfig/network-scripts/ifcfg-eth1:0 para cambiar solo IPADDR y DEVICE:
NM_CONTROLLED=yes BOOTPROTO=none ONBOOT=yes IPADDR=192.168.2.55 NETMASK=255.255.255.0 DEVICE=eth1:0 DOMAIN=dominio DNS1=8.8.8.8 DNS2=8.8.4.4 PEERDNS=no
Reinicar el servicio para aplicar:
systemctl restart network
Network Manager
Es un nuevo sistema de gestión de los interfaces e red basado en perfiles de conexión.
Aunque está más pensado para dispositivos de escritorio, podemos gestionarlo también desde la shell (nmcli).
Para instalar Network Manager en Debian 11: apt install network-manager
Tendremos que delegar el funcionamiento de los dispositivos al Network Manager editando el archivo
/etc/NetworkManager/NetworkManager.conf y cambiar la directiva managed a true.
[main] plugins=ifupdown,keyfile [ifupdown] managed=true
Si no estuviesen gestionados por Network Manager, al hacer nmcli device status veríamos algo como:
DEVICE TYPE STATE CONNECTION enp0s3 ethernet sin gestión -- lo loopback sin gestión --
Con Network Manager, cada vez que hagamos cambios en la configuración de red, reiniciaríamos el servicio: systemctl restart NetworkManager
nmcli
El comando nmcli es el que nos va a permitir trabajar con Network Manager desde la linea de comandos
nmcli <objeto> <comando>
El comando help nos da los comandos disponibles para cada objeto:
nmcli <objeto> help
nmcli trabaja con objetos que son los diferentes elementos de la configuración de red con los que puede trabajar:
g[eneral]: El propio Network Managerstatushostname: nombre de la máquinapermissions
n[etworking): configuración general de la red- on/off
- connectivity
d[evices]: los interfacesc[onnnection]: conexiones de redr[adio]: dispositivos de radioa[gents]
nmcli Connections
nmcli c show: mostrar conexionesnmcli c up <id>: levantar conexiónnmcli c down <id>: tumbar conexiónnmcli c edit: editar conexiones
nmcli Devices (las tarjetas de red)
nmcli d status: mostrar dispositivosnmcli d show <id>: mostrar características de los dispositivos
Añadir una conexión
nmcli c add type ethernet con-name miconexion ifname enp0s3 ip4 192.168.0.10/24 gw4 192.168.0.1
Para habilitar la conexión:
nmcli con up id miconexion
NetworkManager TUI
Configura la red de forma gráfica.
Para instalarlo en CentOS:
yum install NetworkManager-tui
Tras instalarlo, se utiliza ejecutando nmtui.
systemd-network
Systemd incorpora también una serie de herramientas y servicios para gestionar la red, pero la mayoría no están habilitados por defecto
hostnamectl: Para ver y modificar el nombre de la máquinanetworkctl: para mostrar info de los dispositvos de redsystemd-networkd.service: servicio que gestiona redes- Archivos
.network: unidades systemd para definir dispositivos y redes - Archivos
.netdev: dispositivos virtuales de red (por ejemplo en VPN) /lib/systemd/network: ruta donde se almacenan los archivos.network
Ejemplo salida de hostnamectl:
Static hostname: debian11
Icon name: computer-vm
Chassis: vm
Machine ID: 1234abcf132412312322323
Boot ID: 1234abcf132412312123423
Virtualization: oracle
Operating System: Debian GNU/Linux 11 (bullseye)
Kernel: Linux 5.10.0-13-amd64
Architecture: x84-64
Ejemplo de networkctl:
IDX LINK TYPE OPERATION SETUP 1 lo loopback n/a unmanaged 2 enp0s3 ether n/a unmanaged
Al igual que ocurría con Network Manager, hay que cederle el control a networkctl si queremos que gestione información sobre los dispositivos de red.
