Configuración de la red

Ubuntu viene con una serie de utilidades gráficas para configurar sus dispositivos de red. Este documento está orientado a los administradores de servidores y se centrará en la gestión de su red en la línea de comandos.

Interfaces Ethernet

Las interfaces Ethernet son identificadas por el sistema utilizando nombres de interfaz de red predecibles. Estos nombres pueden aparecer como eno1 o enp0s25. Sin embargo, en algunos casos una interfaz puede seguir utilizando el estilo de nomenclatura eth# del kernel.

Identificar las interfaces Ethernet

Para identificar rápidamente todas las interfaces Ethernet disponibles, puede utilizar el comando ip como se muestra a continuación.

ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:16:3e:e2:52:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 10.102.66.200/24 brd 10.102.66.255 scope global dynamic eth0 valid_lft 3257sec preferred_lft 3257sec inet6 fe80::216:3eff:fee2:5242/64 scope link valid_lft forever preferred_lft forever

Otra aplicación que puede ayudar a identificar todas las interfaces de red disponibles en su sistema es el comando lshw. Este comando proporciona mayores detalles en torno a las capacidades de hardware de adaptadores específicos. En el ejemplo siguiente, lshw muestra una única interfaz Ethernet con el nombre lógico de eth0 junto con la información del bus, los detalles del controlador y todas las capacidades soportadas.

sudo lshw -class network *-network description: Ethernet interface product: MT26448 vendor: Mellanox Technologies physical id: 0 bus info: [email protected]:01:00.0 logical name: eth4 version: b0 serial: e4:1d:2d:67:83:56 slot: U78CB.001.WZS09KB-P1-C6-T1 size: 10Gbit/s capacity: 10Gbit/s width: 64 bits clock: 33MHz capabilities: pm vpd msix pciexpress bus_master cap_list ethernet physical fibre 10000bt-fd configuration: autonegotiation=off broadcast=yes driver=mlx4_en driverversion=4.0-0 duplex=full firmware=2.9.1326 ip=192.168.1.1 latency=0 link=yes multicast=yes port=fibre speed=10Gbit/s resources: iomemory:24000-23fff irq:481 memory:3fe200000000-3fe2000fffff memory:240000000000-240007ffffff

Nombres lógicos de las interfaces Ethernet

Los nombres lógicos de las interfaces también pueden configurarse a través de una configuración de netplan. Si desea controlar qué interfaz recibe un nombre lógico concreto, utilice las claves match y set-name. La clave match se utiliza para encontrar un adaptador basado en algunos criterios como la dirección MAC, el controlador, etc. Luego la tecla set-name se puede utilizar para cambiar el dispositivo al nombre lógico deseado.

network: version: 2 renderer: networkd ethernets: eth_lan0: dhcp4: true match: macaddress: 00:11:22:33:44:55 set-name: eth_lan0

Configuración de la interfaz Ethernet

Eethtool es un programa que muestra y cambia la configuración de la tarjeta Ethernet como la autonegociación, la velocidad del puerto, el modo dúplex y Wake-on-LAN. A continuación se muestra un ejemplo de cómo ver las características soportadas y los ajustes configurados de una interfaz Ethernet.

sudo ethtool eth4Settings for eth4: Supported ports: Supported link modes: 10000baseT/Full Supported pause frame use: No Supports auto-negotiation: No Supported FEC modes: Not reported Advertised link modes: 10000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: No Advertised FEC modes: Not reported Speed: 10000Mb/s Duplex: Full Port: FIBRE PHYAD: 0 Transceiver: internal Auto-negotiation: off Supports Wake-on: d Wake-on: d Current message level: 0x00000014 (20) link ifdown Link detected: yes

Direccionamiento IP

La siguiente sección describe el proceso de configuración de la dirección IP de sus sistemas y la puerta de enlace predeterminada necesaria para comunicarse en una red de área local y en Internet.

Asignación temporal de la dirección IP

Para las configuraciones temporales de la red, puede utilizar el comando ip que también se encuentra en la mayoría de los otros sistemas operativos GNU/Linux. El comando ip le permite configurar ajustes que tienen efecto inmediatamente, sin embargo no son persistentes y se perderán después de un reinicio.

Para configurar temporalmente una dirección IP, puede utilizar el comando ip de la siguiente manera. Modifique la dirección IP y la máscara de subred para que coincidan con los requisitos de su red.

sudo ip addr add 10.102.66.200/24 dev enp0s25

La ip puede utilizarse entonces para configurar el enlace hacia arriba o hacia abajo.

ip link set dev enp0s25 upip link set dev enp0s25 down

Para verificar la configuración de la dirección IP del enp0s25, puede utilizar el comando ip de la siguiente manera.

ip address show dev enp0s2510: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:16:3e:e2:52:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 10.102.66.200/24 brd 10.102.66.255 scope global dynamic eth0 valid_lft 2857sec preferred_lft 2857sec inet6 fe80::216:3eff:fee2:5242/64 scope link valid_lft forever preferred_lft forever6

Para configurar una puerta de enlace por defecto, puede utilizar el comando ip de la siguiente manera. Modifique la dirección de la puerta de enlace predeterminada para que coincida con los requisitos de su red.

sudo ip route add default via 10.102.66.1

Para verificar la configuración de la puerta de enlace predeterminada, puede utilizar el comando ip de la siguiente manera.

ip route showdefault via 10.102.66.1 dev eth0 proto dhcp src 10.102.66.200 metric 10010.102.66.0/24 dev eth0 proto kernel scope link src 10.102.66.20010.102.66.1 dev eth0 proto dhcp scope link src 10.102.66.200 metric 100 

Si necesita DNS para la configuración temporal de su red, puede añadir direcciones IP de servidores DNS en el archivo /etc/resolv.conf. En general, no se recomienda editar directamente /etc/resolv.conf, pero esta es una configuración temporal y no persistente. El ejemplo siguiente muestra cómo introducir dos servidores DNS en /etc/resolv.conf, que deberían cambiarse por servidores adecuados para su red. Una descripción más extensa de la forma persistente adecuada de hacer la configuración del cliente DNS está en una sección siguiente.

nameserver 8.8.8.8nameserver 8.8.4.4

Si ya no necesita esta configuración y desea purgar toda la configuración IP de una interfaz, puede utilizar el comando ip con la opción flush como se muestra a continuación.

ip addr flush eth0

Nota

El vaciado de la configuración IP mediante el comando ip no borra el contenido de /etc/resolv.conf. Debes eliminar o modificar esas entradas manualmente, o reiniciar, lo que también debería hacer que /etc/resolv.conf, que es un symlink a /run/systemd/resolve/stub-resolv.conf, se reescriba.

Asignación dinámica de direcciones IP (cliente DHCP)

Para configurar tu servidor para que utilice DHCP para la asignación dinámica de direcciones, crea una configuración de netplan en el archivo /etc/netplan/99_config.yaml. El ejemplo siguiente asume que está configurando su primera interfaz Ethernet identificada como enp3s0.

network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: true

La configuración puede entonces ser aplicada usando el comando netplan.

sudo netplan apply

Asignación de direcciones IP estáticas

Para configurar su sistema para utilizar la asignación de direcciones estáticas, cree una configuración netplan en el archivo /etc/netplan/99_config.yaml. El ejemplo siguiente asume que está configurando su primera interfaz Ethernet identificada como eth0. Cambie los valores de direcciones, gateway4 y nameservers para cumplir con los requisitos de su red.

network: version: 2 renderer: networkd ethernets: eth0: addresses: - 10.10.10.2/24 gateway4: 10.10.10.1 nameservers: search: addresses: 

La configuración puede entonces aplicarse usando el comando netplan.

sudo netplan apply

Interfaz loopback

La interfaz loopback es identificada por el sistema como lo y tiene una dirección IP por defecto de 127.0.0.1. Se puede ver utilizando el comando ip.

ip address show lo1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever

Resolución de nombres

La resolución de nombres en relación con las redes IP es el proceso de asignación de direcciones IP a nombres de host, lo que facilita la identificación de recursos en una red. La siguiente sección explicará cómo configurar correctamente su sistema para la resolución de nombres utilizando DNS y registros de nombres de host estáticos.

Configuración del cliente DNS

Tradicionalmente, el archivo /etc/resolv.conf era un archivo de configuración estático que rara vez necesitaba ser cambiado o que se cambiaba automáticamente a través de los ganchos del cliente DCHP. Systemd-resolved se encarga de la configuración del servidor de nombres, y se debe interactuar con él a través del comando systemd-resolve. Netplan configura systemd-resolved para generar una lista de servidores de nombres y dominios para poner en /etc/resolv.conf, que es un enlace simbólico:

/etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

Para configurar el resolver, añada al fichero de configuración de netplan las direcciones IP de los servidores de nombres que sean apropiados para su red. También puede añadir una lista de búsqueda de sufijos DNS opcional para que coincida con los nombres de dominio de su red. El archivo resultante podría tener el siguiente aspecto:

network: version: 2 renderer: networkd ethernets: enp0s25: addresses: - 192.168.0.100/24 gateway4: 192.168.0.1 nameservers: search: addresses: 

La opción de búsqueda también se puede utilizar con múltiples nombres de dominio para que las consultas DNS se añadan en el orden en que se introducen. Por ejemplo, su red puede tener múltiples subdominios para buscar; un dominio padre de example.com, y dos subdominios, sales.example.com y dev.example.com.

Si tiene varios dominios que desea buscar, su configuración podría ser como la siguiente:

network: version: 2 renderer: networkd ethernets: enp0s25: addresses: - 192.168.0.100/24 gateway4: 192.168.0.1 nameservers: search: addresses: 

Si intenta hacer ping a un host con el nombre de servidor1, su sistema consultará automáticamente el DNS para su nombre de dominio totalmente calificado (FQDN) en el siguiente orden:

  1. server1.example.com

  2. server1.sales.example.com

  3. server1.dev.example.com

Si no se encuentran coincidencias, el servidor DNS proporcionará un resultado de notfound y la consulta DNS fallará.

Nombres de host estáticos

Los nombres de host estáticos son mapeos de nombre de host a IP definidos localmente y ubicados en el archivo /etc/hosts. Las entradas en el archivo hosts tendrán prioridad sobre el DNS por defecto. Esto significa que si tu sistema intenta resolver un nombre de host y coincide con una entrada en /etc/hosts, no intentará buscar el registro en DNS. En algunas configuraciones, especialmente cuando no se requiere acceso a Internet, los servidores que se comunican con un número limitado de recursos pueden ser convenientemente configurados para utilizar nombres de host estáticos en lugar de DNS.

El siguiente es un ejemplo de un archivo hosts en el que un número de servidores locales han sido identificados por nombres de host simples, alias y sus equivalentes Nombres de Dominio Totalmente Calificados (FQDN’s).

127.0.0.1 localhost127.0.1.1 ubuntu-server10.0.0.11 server1 server1.example.com vpn10.0.0.12 server2 server2.example.com mail10.0.0.13 server3 server3.example.com www10.0.0.14 server4 server4.example.com file

Nota

En el ejemplo anterior, fíjate que a cada uno de los servidores se les ha dado un alias además de sus nombres propios y FQDN’s. Al servidor1 se le ha asignado el nombre vpn, al servidor2 se le denomina mail, al servidor3 www y al servidor4 file.

Configuración del conmutador de servicios de nombres

El orden en el que su sistema selecciona un método de resolución de nombres de host a direcciones IP está controlado por el archivo de configuración del conmutador de servicios de nombres (NSS) /etc/nsswitch.conf. Como se mencionó en la sección anterior, normalmente los nombres de host estáticos definidos en el archivo de sistemas /etc/hosts tienen prioridad sobre los nombres resueltos desde DNS. El siguiente es un ejemplo de la línea responsable de este orden de búsqueda de nombres de host en el fichero /etc/nsswitch.conf.

hosts: files mdns4_minimal dns mdns4
  • Los archivos primero intentan resolver los nombres de host estáticos ubicados en /etc/hosts.

  • Mdns4_minimal intenta resolver el nombre utilizando el DNS Multicast.

  • Significa que cualquier respuesta de notfound por el proceso mdns4_minimal precedente debe ser tratada como autoritativa y que el sistema no debe intentar seguir buscando una respuesta.

  • Dns representa una consulta DNS unicast heredada.

  • mdns4 representa una consulta DNS Multicast.

  • Para modificar el orden de los métodos de resolución de nombres mencionados anteriormente, puede simplemente cambiar la cadena hosts: por el valor que desee. Por ejemplo, si prefiere utilizar el DNS Unicast heredado frente al DNS Multicast, puede cambiar la cadena en /etc/nsswitch.conf como se muestra a continuación.

hosts: files dns mdns4_minimal mdns4

Bridging

Bridging de múltiples interfaces es una configuración más avanzada, pero es muy útil en múltiples escenarios. Un escenario es la configuración de un puente con múltiples interfaces de red, y luego usar un firewall para filtrar el tráfico entre dos segmentos de red. Otro escenario es utilizar el puente en un sistema con una interfaz para permitir a las máquinas virtuales el acceso directo a la red exterior. El siguiente ejemplo cubre este último escenario.

Configure el puente editando la configuración de su netplan que se encuentra en /etc/netplan/:

network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: no bridges: br0: dhcp4: yes interfaces: - enp3s0

Nota

Introduzca los valores adecuados para su interfaz física y su red.

Ahora aplica la configuración para habilitar el puente:

sudo netplan apply

La nueva interfaz del puente debería estar ahora en funcionamiento. El brctl proporciona información útil sobre el estado del puente, controla qué interfaces forman parte del puente, etc. Ver man brctl para más información.

networkd-dispatcher para scripts hook pre-up, post-up, etc

Los usuarios del antiguo ifupdown pueden estar familiarizados con el uso de scripts hook (por ejemplo pre-up, post-up, etc.) en su archivo de interfaces. Actualmente, la configuración de Netplan no admite scripts gancho en su definición de configuración.

En su lugar, para conseguir esta funcionalidad con el networkd renderer, los usuarios pueden utilizar networkd-dispatcher. El paquete proporciona a los usuarios y a los paquetes puntos de enganche cuando se alcanzan estados específicos de la red para ayudar a reaccionar al estado de la red.

Nota: Si no está en Ubuntu Server, pero Desktop la red es manejada por Network Manager – en ese caso necesitaría scripts NM Dispatcher en su lugar.

El Netplan FAQ tiene una gran tabla que compara los tiempos de los eventos entre ifupdownsystemd-networkdnetwork-manager

Es importante tener en cuenta que esos ganchos se ejecutan de forma asicrónica; es decir, no bloquearán la transición a otro estado.

El FAQ de Netplan también tiene un ejemplo sobre cómo convertir un antiguo ifupdown hook a networkd-dispatcher.

Recursos

  • La página de red de la Wiki de Ubuntu tiene enlaces a artículos que cubren una configuración de red más avanzada.

  • El sitio web de netplan tiene ejemplos y documentación adicionales.

  • La página man de netplan tiene más información sobre netplan.

  • La página man de systemd-resolve tiene detalles sobre el comando systemd-resolve.

  • La página man de systemd-resolved tiene más información sobre el servicio systemd-resolved.

  • Para más información sobre bridging vea la página de ejemplos de netplan.io y la página Networking-Bridge de la Fundación Linux.

Última actualización hace 5 meses. Ayuda a mejorar este documento en el foro.