Herramientas de usuario

Herramientas del sitio


informatica:certificaciones:lpic:lpic-1:109_networking_fundamentals:109.2_persistent_network_configuration

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.conf
    • nmcli
    • hostnamectl
    • ifup
    • ifdown

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 inicio
  • allow-hotplug: similar a auto pero detecta eventos
  • iface: definición de la interfaz de red.
  • inet static: dispositivo con ip fija
  • inet dhcp: dispositivo que obtiene dirección por dhcp
  • address: dirección IP
  • netmask: máscara de subred
  • gateway: puerta de enlace (para que pueda conectarse con otras redes o salga a Internet)
  • broadcast: dirección de broadcast de la subred
  • dns-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 interface
  • pre-up: cosas a ejecutar antes de levantar el interface
  • post-up: cosas a ejecutar tras levantar el interface
  • pre-down: cosas a ejecutar antes de tumbar el interface
  • post-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 interfaz ethX.

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:

  • IPADDR
  • NETMASK
  • GATEWAY
  • DEVICE
  • BROADCAST
  • NETWORK
  • DNS{1,2}
  • PEERDNS=yes,no
  • HWADDR: dirección MAC del dispositivo
  • ONBOOT=yes,no
  • BOOTPROTO=none,dhcp,static
  • NM_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 Manager
    • status
    • hostname: nombre de la máquina
    • permissions
  • n[etworking): configuración general de la red
    • on/off
    • connectivity
  • d[evices]: los interfaces
  • c[onnnection]: conexiones de red
  • r[adio]: dispositivos de radio
  • a[gents]

nmcli Connections

  • nmcli c show: mostrar conexiones
  • nmcli c up <id>: levantar conexión
  • nmcli c down <id>: tumbar conexión
  • nmcli c edit: editar conexiones

nmcli Devices (las tarjetas de red)

  • nmcli d status: mostrar dispositivos
  • nmcli 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áquina
  • networkctl: para mostrar info de los dispositvos de red
  • systemd-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.

informatica/certificaciones/lpic/lpic-1/109_networking_fundamentals/109.2_persistent_network_configuration.txt · Última modificación: por tempwin