Configuración de /etc/network/interfaces

Fichero /etc/network/interfaces en Debian

Uno de los ficheros más utilizados en Debian es el /etc/network/interfaces.

Este fichero se encuentra en varias distribuciones de GNU/Linux y muchas veces es lo primero que tocamos en un servidor al instalarlo.

En el fichero /etc/network/interfaces es donde configuramos la red de nuestros servidores y lo hacemos siguiendo una sintaxis específica:

Una configuración podría ser la siguiente

# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
	address 192.0.2.2
	netmask 255.255.255.0
	gateway 192.0.2.1
iface eth0 inet6 static
	address 2001:DB8:1:3::1
	netmask 56
	gateway 2001:DB8:1::

En esta configuración vemos varias palabras clave:

  • auto: El puerto se levantará después de un reset del equipo.
  • iface: Sirve para indicar el interfaz sobre el que se está trabajandopnombre_del_interfaz: Esto identificará el interfaz sobre el que se aplica la configuración
  • inet / inet6: Identifica cómo va a obtener el direccionamiento el puerto, puede ser loopback, dhcp o static.
    • static: El direccionamiento se pondrá a mano.
    • dhcp: El direccionamiento se obtendrá por dhcp.
    • loopback: El direccionamiento será loopback.
    • auto: En IPv6 cuando se usa inet6 se puede añadir auto para indicar que se va a usar stateless address autoconfiguration, o SLAAC.
  • address: Indica que se va a añadir una dirección IP o IPv6.
  • netmask: Indica que se va añadir una máscara de red-
  • gateway: Indica que la dirección de después es la ruta por defecto.

Esta es la configuración más sencilla que podemos poner en un fichero /etc/network/interfaces y a parte de esto podemos indicar muchas más cosas.

Para aplicar cualquier cambio tenemos que reiniciar el servicio de networking:

sudo service networking restart

El problema de reiniciar el servicio de networkinig es que tirará todos los interfaces.

También es interesante conocer las posibilidades que tenemos para trabajar con un par de interfaces.

La primera posibilidad será la de definir un bridge, es decir, hacer que dos puertos participen de la misma red y que lo que entre por uno salga por el otro:

auto br0
iface br0 inet static
        address 192.0.2.2/24
        gateway 192.0.2.1
        bridge_ports eth0 eth1
        up /usr/sbin/brctl stp br0 on
  • bridge_ports: Esta palabra clave indica cuales son los puertos que componen el brige.
  • up /usr/sbin/brctl stp br0 on : Habilitamos el Spanning Tree

En este ejemplo hemos definido un interfaz br0 (bridge 0) que está formado por los puertos eth0 y eth1 y donde tenemos el spanning tree activado.

También puedes querer poner más de una dirección IP en el mismo interfaz. Esto se solía hacer definiendo interfaces del estilo eth0:1, pero con iproute2 ya no es necesario, ahora sería de la siguiente manera:

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.0.2.2/24
    gateway 192.0.2.1

iface eth0 inet static
    address 192.0.2.22/24

iface eth0 inet static
    address 198.51.100.2/24

iface eth0 inet static
    address 203.0.113.14/24

Y finalmente me gustaría mostrar el ejemplo que nos da la documentación de Debian:

# onboard network interface
auto enp4s0
iface enp4s0 inet manual
# PCIe nic
auto enp8s0
iface enp8s0 inet manual
# bond inteface
auto bond0
iface bond0 inet manual
        slaves enp4s0 enp8s0
        bond-mode 802.3ad
# bridge interface
auto br0
iface br0 inet static
        address 192.168.1.17
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        bridge_ports bond0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

Este ejemplo es muy bueno porque tenemos dos interfaces enp4s0 y enp8s0 que son los que forman el bond (agregación de puertos con lacp) utilizando IEEE 802.3ad.

iface bond0 inet manual
        slaves enp4s0 enp8s0
        bond-mode 802.3ad

A continuación en esa configuración se ve que se desactiva Spanning Tree (bridge_stp off) y se ponen los temporizadores de forwarding delay a 0 segundos (bridge_fd 0) y de max wait a 0 (bridge_maxwait 0).

Audiograma del capítulo del podcast

Foto de portada de Harry Cunningham @harry.digital en Pexels