¿Cómo puedo hacer que mi interfaz de red secundaria funcione en mi instancia de EC2 de Ubuntu?

7 minutos de lectura
0

Quiero que mi interfaz de red secundaria funcione en mi instancia de Amazon Elastic Compute Cloud (Amazon EC2) de Ubuntu.

Breve descripción

Advertencia: El uso de una segunda interfaz de red elástica está destinado a usuarios avanzados. Haga esto solo si no puede usar una sola interfaz de red y debe conectar dos interfaces de red de la misma subred a una instancia. Para evitar problemas de enrutamiento asimétrico, utilice una única interfaz de red elástica o coloque las interfaces de red elástica duplicadas en subredes que no se superpongan.

Añadir una interfaz de red secundaria a una instancia de EC2 que no sea de Amazon Linux provoca problemas de flujo de tráfico. Estos problemas se producen porque las interfaces de red principal y secundaria están en la misma subred y hay una tabla de enrutamiento con una puerta de enlace. El tráfico que entra en la interfaz de red secundaria sale de la instancia mediante la interfaz de red principal. Sin embargo, esto no está permitido porque la dirección IP secundaria no pertenece a la dirección MAC de la interfaz de red principal.

Para que la interfaz secundaria funcione después de crearla, haga lo siguiente:

1.    Configure la tabla de enrutamiento.

2.    Configure reglas en la base de datos de políticas de la tabla de enrutamiento personalizada para que el tráfico de la interfaz secundaria utilice la nueva tabla de enrutamiento.

Antes de empezar, tenga en cuenta que las instancias de Amazon EC2 se encuentran en la nube de AWS. Esto significa que no todos los casos de uso se benefician de tener múltiples interfaces. Los siguientes ejemplos muestran situaciones en las que es posible que no necesite usar una interfaz de red secundaria:

  • Aumento del rendimiento de la red: Como los límites se establecen en función del tipo y tamaño de la instancia, el rendimiento de la red no aumenta. Para obtener más información, consulte los tipos de instancias de Amazon EC2.
  • Aumento de las direcciones IP elásticas: Si tiene pocas direcciones IP elásticas por interfaz, es posible que no necesite añadir más interfaces para obtener más direcciones IP elásticas. La mayoría de las aplicaciones funcionan bien con el Sistema de nombres de dominio. Por ejemplo, Apache puede usar hosts virtuales basados en nombres (en el sitio web de Apache).

Nota: Los pasos para añadir una interfaz de red secundaria son diferentes para cada una de las siguientes versiones de Ubuntu:

  • Ubuntu 14.04
  • Ubuntu 16.04
  • Ubuntu 18.04
  • Ubuntu 20.04

Resolución

Nota: Si bien los pasos de la siguiente resolución se han probado en las versiones de Linux enumeradas, es posible que necesite realizar ligeras modificaciones en los ajustes personalizados de la configuración.

Configuración de Ubuntu 14.04 o 16.04

Puede crear el archivo de configuración de la interfaz secundaria, configurar la tabla de enrutamiento y establecer las reglas de política de enrutamiento para Ubuntu con un solo archivo.

Todos los procedimientos deben ejecutarse con privilegios de usuario raíz. Conviértase en el usuario raíz con sudo -i o ejecute todos los comandos con sudo.

1.     Para obtener el nombre de la interfaz de red principal, ejecute el siguiente comando:

ip a | grep ^[[:digit:]]

Recibirá un resultado similar al mensaje siguiente:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000

Importante: En este ejemplo, las interfaces principales se denominan eth0, eth1, etc. Sin embargo, en los casos que admiten redes mejoradas, como los tipos de familia m4 y m5, es posible que se produzca una incoherencia en los nombres. Por ejemplo, la principal podría llamarse ens3 si la secundaria se denomina eth0. Esta incoherencia en los nombres se produce cuando se añade la interfaz secundaria mientras la instancia está en ejecución.

Para evitar incoherencias en los nombres, añada la interfaz en el momento del inicio o reinicie la instancia. O bien, si la interfaz está en ejecución, puede cambiar el nombre mediante el siguiente comando:

ip link set eth0 name ens4 && ip link set ens4 up

2.    Cree un archivo de configuración para la interfaz secundaria. En el siguiente ejemplo, cambie eth1 para que coincida con el nombre de su interfaz secundaria, tal como se indica en el paso 1:

vi /etc/network/interfaces.d/51-eth1.cfg

El siguiente comando es un ejemplo de una dirección IP única de 172.31.21.115 y con una puerta de enlace de 172.31.16.1 en la interfaz secundaria. Sustituya la dirección IP y la puerta de enlace del ejemplo por las suyas propias. Tenga en cuenta también que su puerta de enlace debe ser la primera dirección IP válida de su subred:

auto eth1
iface eth1 inet static
address 172.31.21.115
netmask 255.255.240.0

# Gateway configuration
up ip route add default via 172.31.16.1 dev eth1 table 1000

# Routes and rules
up ip route add 172.31.21.115 dev eth1 table 1000
up ip rule add from 172.31.21.115 lookup 1000

El siguiente comando es un ejemplo de varias direcciones IP. En este ejemplo, las direcciones IP son 172.31.21.115 y 172.31.18.46, y la puerta de enlace es 172.31.16.1. Sustituya las direcciones IP y la puerta de enlace de ejemplo por las suyas propias:

auto eth1

# Enter one or more IP settings
iface eth1 inet static
address 172.31.21.115
netmask 255.255.240.0

iface eth1 inet static
address 172.31.18.46
netmask 255.255.240.0

# Default gateway for eth1
up ip route add default via 172.31.16.1 dev eth1 table 1000

# A route for every IP
up ip route add 172.31.21.115 dev eth1 table 1000
up ip route add 172.31.18.46 dev eth1 table 1000

# A policy rule for every IP
up ip rule add from 172.31.21.115 lookup 1000
up ip rule add from 172.31.18.46 lookup 1000

3.    Cree el archivo restrict-default-gw para evitar que la puerta de enlace predeterminada se sobrescriba en la tabla principal:

vi /etc/dhcp/dhclient-enter-hooks.d/restrict-default-gw

4.    Añada las siguientes líneas al archivo restrict-default-gw. Asegúrese de cambiar eth0 por el nombre de su interfaz principal, tal y como se indica en el paso 1:

case ${interface} in
  eth0)
    ;;
  *)
    unset new_routers
    ;;
esac

5.    Reinicie la red.

Consulte el siguiente comando para Ubuntu 14.04:

(ifdown eth1 && ifup eth1)

Consulte el siguiente comando para Ubuntu 16.04:

systemctl restart networking

Configuración de Ubuntu 18.04 y 20.04

Ubuntu 18.04 y 20.04 utilizan la configuración de red de Netplan. Tenga en cuenta que Netplan usa el formato YAML. Esto significa que la indentación es crucial. El siguiente ejemplo de Netplan utiliza una indentación de dos espacios.

Nota: Ejecute todos los comandos con privilegios de usuario raíz. Conviértase en el usuario raíz con sudo -i o ejecute todos los comandos con sudo.

1.    Cree un archivo de configuración para la interfaz secundaria:

vi /etc/netplan/51-eth1.yaml

2.    Añada las siguientes líneas al archivo 51-eth1.yaml. Asegúrese de editar el siguiente ejemplo para que coincida con su caso de uso:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
      addresses:
       - 172.31.24.153/20
       - 172.31.28.195/20
      dhcp4: no
      routes:
       - to: 0.0.0.0/0
         via: 172.31.16.1 # Default gateway
         table: 1000
       - to: 172.31.24.153
         via: 0.0.0.0
         scope: link
         table: 1000
       - to: 172.31.28.195
         via: 0.0.0.0
         scope: link
         table: 1000
      routing-policy:
        - from: 172.31.24.153
          table: 1000
        - from: 172.31.28.195
          table: 1000

Este archivo YAML de ejemplo configura dos direcciones IP en la interfaz secundaria (eth1).

Nota: Para encontrar el rango CIDR que se va a utilizar en el archivo YAML, siga estos pasos:

1.    Abra la consola de Amazon EC2, seleccione Instancias y, a continuación, seleccione la instancia.

2.    En la pestaña Redes, vaya a Interfaces de red y anote el ID de subred de la interfaz de red secundaria.

3.    Abra la consola de Amazon Virtual Private Cloud (Amazon VPC), seleccione Subredes y, a continuación, anote el rango CIDR de IPv4 indicado para el ID de subred.

4.    Aplique la configuración de red:

netplan --debug apply

Información relacionada

Configure route tables

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año