2.6.5. Configuración de red

Los sistemas linux permiten una configuración amplísima de las interfaces de red, y profundizar en ello requeriría un tratamiento muchísimo más amplio del que aquí se mostrará1. Bajo este epígrafe nos limitaremos a indicar cómo hacer una configuración simple de las interfaces, tanto con herramientas comunes a todas las distribuciones de linux como con las herramientas que provee Debian.

Tenga presente que el método de configuración que ofrece Debian (ifupdown) y el uso de las herramientas generales es alternativo y no debe mezclarse: o configuramos con uno o con el otro. Por ese motivo, si una interfaz está activa porque se usó la herramienta ifup de Debian, sólo debemos manipularña usando las herramientas generales, si previamente la desactivamos usando ifdown.

Advertencia

El epígrafe está referido a interfaces de cable, que son las habituales en servidores. Las interfaces inalámbricas son más engorrosas ya que es común que cambien la red a la que están conectada con todo lo que ello supone (cambio del SSID, cambio de la contraseña de acceso, etc.). Aunque es posible configurar estas interfaces a travñes de la línea de órdenes y ficheros de configuración, lo más cómodo (y recomendable) es usar herramientas más amigables e inmediatas como las que se exponen en el epígrafe referente a otros modos de configuración.

Nota

Ubuntu, aunque basada en Debian, usa como herramienta de configuración de red, desde su versión 18, netplan <https://netplan.io/> y no ifupdown.

2.6.5.1. Interfaces presentes

Antes de poner a configurar interfaces es indispensable saber qué interfaces hay presentes en nuestro sistema. Para que el sistema registre una interfaz es necesario que tal interfaz exista, pero también que haya un driver apropiado que nos permita usarla.

Tradicionalmente, las interfaces ethernet cableadas se han venido llamando ethN siendo N un número correlativo empezando en 0 (eth0, eth1, etc.) y las interfaces inalámbricas wlanN. Con el advenimiento de systemd, sin embargo, el nombre de las interfaces ha cambiado2. Ahora se usa un sistema de nombres que intenta evitar el que el núcleo cambie el nombre de las interfaces al ser cambiar su número o hacerse sustituciones.

Para conocer cuáles son las interfaces presentes, basta con mirar dentro de /sys/class/net:

$ ls /sys/class/net
eth0  lo

También es posible obtener las interfaces a través del comando ip:

# ip link show

2.6.5.2. Configuración en debian

Debian gestiona sus interfaces preferentemente a través de los scripts que proporciona el paquete ifupdown, los cuales consultan el contenido del fichero /etc/network/interfaces3. Por tanto, configurar las interfaces de red mediante este método supone fundamentalmente:

  • Saber cómo expresar la configuración de las interfaces dentro de /etc/netwoek/interfaces.

  • Utiliazar las herramientas de activación (ifup) y desactivación (ifdown).

  • Saber cómo definir los servidores DNS para la resolución de nombres.

Herramientas

Las fundamentables son:

ifup

Permite activar la interfaz suministrada (puede pasarse varias) con la configuración indicada en /etc/network/interfaces:

# ifup eth0

Es interesante la opción -v que muestra información adicional sobre el proceso de activación.

ifdown

Permite desactivar una interfaz previamente activada con ifup:

# ifdown eth0

Para que esto funcione la interfaz debió ser activada con ifup. Si se activó de cualquier otro modo, la interfaz no estará registrada como activa, de modo que ifdown no hará nada.

Puede también incluirse la opción -v y otra de interés es --force que completa el proceso de desactivación incluso aunque se hayan producido errores. Por ejemplo, porque se desactivara la interfaz de forma manual y, cuando ifdown intente desactivarla, se encuentre con que la interfaz no tiene configuración.

ifquery

Permite hacer consultas sobre las interfaces gestionadas. Lo más habitual es preguntar por cuál es la configuración de una interfaz:

$ ifquery eth0
address: 192.168.4.20/24
gateway: 192.168.4.253
up: iptables -t nat -A POSTROUTING -o $IFACE -j MASQUERADE
down: iptables -t nat -D POSTROUTING -o $IFACE -j MASQUERADE

Advertencia

La orden nos devuelve la configuración que se encuentra en /etc/network/interfaces, no la que realmente tenga la interfaz, que pueden diferir, si se deshabilito la interfaz con ifdown y se volvió a configurar de modo diferente con las herramientas generales.

También puede usarse:

$ ifquery --state
lo=lo
eth0=eth0

que nos devolverá la interfaces activas a través de ifup.

Fichero de confiuración

En realidad, el meollo de la configuración está en la escritura de /etc/network/interfaces. Mostremos un fichero con la interfaz de loopback, una interfaz eth0 configurada de forma dinámica y una interfaz eth1 cpmfigurada de forma estática:

auto lo
iface lo inet loopback

# Configuración dinámica (obsérvese dhcp)
allow-hotplug eth0
iface eth0 inet dhcp

# Configuración estática (obsérvese static)
allow-hotplug eth1
iface eth1 inet static
   address 192.168.1.4/24
   gateway 192.168.1.1

La configuración es bastante elocuente. La segunda interfaz, al tener una configuración estática, necesita algunos datos (ip y máscara, y puerta de enlace). Obsérvese que no se incluyen los servidores DNS4, porque estos no se expresan en este fichero, sino en /etc/resolv.conf.

Sí es pertinente aclarar por qué algunas interfaces van acompañadas de la palabra auto y otras de la palabra allow-hotplug. Incluso podría haber otras sin ninguna de esas dos líneas. En este último caso, la interfaz no se activará durante el arranque y tendrá que ser el usuario quien manualmente lo haga mediante ifup. En cambio, una de esas dos dos líneas, activa automáticamente en el arranque la interfaz, pero con un matiz diferente: allow-hotplug activa la interfaz si se detecta que esta existe y, si no existe, no ocurrirá nada, mientras que auto intentará activar la interfaz siempre y, si no existe, provocará un error visible. La regla general es que allow-hotplug se usa con interfaces físicas, mientras que auto se usa con interfaces virtuales que no existen previamente, sino que se crear al ser activadas y que, por tanto, no pueden existir con anterioridad.

Es posible añadir también en la configuración de cada interfaz líneas que comiencen con pre-up, up, down y post-down. Estas líneas permiten ejecutar comandos arbitrarios justamente antes de activar la interfaz, tras haberlo hecho, justamente antes de desactivarla o después de haberlo hecho. Es bastante común el caso en que queremos añadir alguna regla en el cortafuegos al levantar la interfaz y borrarla al desactivarla:

allow-hotplug eth0
iface eth0 inet dhcp
   pre-up    iptables -A POSTROUTING -o $IFACE -j MASQUERADE
   post-down iptables -D POSTROUTING -o $IFACE -j MASQUERADE

Advertencia

Si pretende cambiar la configuración de una interfaz, es muy importante que antes de editar el fichero, la desactive con ifdown. Esto es debido a que para desactivar una interfaz, este script no atiende a cómo se configuró la interfaz, sino a cual es la configuración escrita en el fichero en el momento de ejecutar ifdown. Por eso, si al activarse la interfaz, la configuración era estática, los scripta usarán internamente la orden ip. Si antes de desactivaer la interfaz, modifica el fichero y vuelve la configuración dinámica, al hacer ifdown. el script no desactivará la interfaz con ip, sino que intentará usar internamente dhclient y, obviamente, fallará.

DNS

Queda, por último, tratar la configuración de los servidores DNS en el fichero /etc/resolv.conf. Si la configuración es dinámica, el propio cliente DHCP se encarga de escribir este fichero y no hay que hacer ninguna configuración. En cambio, si la configuración es estática, sí habrá que escribirlo o al menos cerciorarse que es válido. Se explicará su contenido dentro del epígrafe siguiente.

Nota

Alternativamente se puede instalar y utilizar el programa resolvconf que se encarga de gestionar por nosotros el fichero /etc/resolv.conf. En este caso, no debe modificarse jamás a mano tal fichero y cuando la configuración de la interfaz sea estática incluir en la definición de la interfaz una línea que le indique a resolvconf cuáles son los servidores de nombres:

allow-hotplug eth0
iface eth0 inet static
   address        192.168.1.4/24
   gateway        192.168.1.1
   dns-nameserver 1.1.1.1
   dns-nameserver 1.0.0.1

2.6.5.3. Configuración universal

Advertencia

Recuerde que, para utilizar estas herramientas, debe cerciorarse primero de que la interfaz no se activó mediante ifup y, si lo está, utilice ifdown antes de empezar.

2.6.5.3.1. Configuración dinámica

El cliente más utilizado para la línea de órdenes es dhclient que se encarga de configurar la interfaz y modificar los servidores. Las acciones básicas son dos:

  1. Configurar la interfaz (p.e. eth0):

    # dhclient -v eth0
    
  2. Desconfigurar la interfaz:

    # dhclient -r eth0
    

Ver también

Para más información, consulte la sección dedicada a clientes DHCP.

2.6.5.3.2. Configuración manual

Si la configuración es manual, debemos realizar tres labores:

  1. Configurar los parámetros de red de la interfaz.

  2. Añadir una entrada a la tabla de encaminamiento para indicar cuál es la puerta de enlace.

  3. Configurar los servidores DNS

Así que supongamos que queremos fijar una dirección IP 192.168.1.10/24, la puerta de enlace es 192.168.1.1 y los servidores DNS 1.1.1.1 y 1.0.0.1.

Para las dos primeras tareas, el comando apropiado es:

ip

Permite la configuración de distintos aspectos relacionados con la red: políticas de encaminamiento, parámetros de configuración de la interfaz, etc. Tiene un modo de funcionamiento similar a los comandos disponibles en sistemas ios de cisco.

Para configurar la interfaz basta con:

# ip addr add 192.168.1.10/24 dev eth0

y para activarla con tal configuración:

# ip link set dev eth0 up

Esto habrá configurado la interfaz lo que puede comprobarse a través de:

$ ip addr show
[... Listado aquí ...]

que muestra la configuración asignada y:

$ ip link show
[... Listado aquí ...]

que muestra el estado de la interfaz. En este caso UP nos informa de que la interfaz está activa y LOWER_UP de que tiene el cable conectado. En el caso de estos últimos comandos es posible añadir dev eth0 para obtener información solamente de esta interfaz.

No obstante, aún es necesario añadir la entrada en la tabla de encaminamiento para configurar la puerta predeterminada:

# ip route add default via 192.168.1.1

Esta última orden provocará la adición de la entrada correspondiente:

$ ip route show
[... Listado aquí ...]

Advertencia

En tutoriales antiguos de Linux podrá ver que estas órdenes se hacen con ifconfig y route. Estas herramientas, sin embargo, hace tiempo que se marcaron como obsoletas y, de hecho, no están disponibles en Debian desde hace años. a menos que se instale expresamente el paquete net-tools.

DNS

En una configuración estática, es necesario definir los servidores DNS, para lo cual basta editar el fichero /etc/resolv.conf e incluir las siguientes líneas:

nameserver 1.0.0.1
nameserver 1.1.1.1

2.6.5.4. Otros modos de configuración

Es posible realizar la configuración de red a través de aplicaciones gráficas, que ahorran la manipulación manual de ficheros. Las más habituales son:

  • network-manager, disponible en el escritorio GNOME

  • wicd, apto para cualquier entorno gráfico y que dispone incluso de interfaz para la terminal no gráfica.

Ambas aplicaciones son compatibles con tener configurada alguna interfaz a través del fichero /etc/network/interfaces.

2.6.5.5. Ejercicios sobre redes

  1. Desactivar la interfaz de red y configurar a través de /etc/network/interfaces una dirección estática (use la que recibió dinámicamente antes para no generar conflictos en la red).

  2. Compruebe las interfaces activas y cuáles son las direcciones IP asociadas.

  3. Sin usar /etc/network/interfaces:

    1. Activar de forma dinámica la red y, tras recibir la configuración, desconfigurar la interfaz.

    2. Activar la interfaz dándole una configuración estática (utilice la misma dirección IP que recibió dinámicamente antes)

  4. Instala una Lubuntu 18.04 en una máquina virtual

  5. Configure la red dinámica y estáticamente usando la aplicación gráfica.

Notas al pie

1

Para un tratamiento más profundo puede consultar el siguiente enlace.

2

En realidad en el contenido de todo el directorio /etc/network.

3

Puede leerse con más detalle sobre esto en este artículo.

4

Si se instala el paquete resolvconf, si pueden incluirse.