Como faço minha interface de rede secundária funcionar em uma instância Ubuntu do EC2?
Quero fazer minha interface de rede secundária funcionar na minha instância Ubuntu do Amazon Elastic Compute Cloud (Amazon EC2).
Descrição breve
Aviso: o uso de uma segunda interface de rede elástica é destinado a usuários avançados. Use essa solução somente para o seguinte caso de uso: Você não pode usar uma única interface de rede. Você deve conectar duas interfaces de rede da mesma sub-rede a uma instância. Para evitar problemas de roteamento assimétrico, use uma única interface de rede elástica ou coloque interfaces de rede elástica duplicadas em sub-redes sem sobreposição. Ou use o Ubuntu 24.04 LTS ou posterior.
Adicionar uma interface de rede secundária a uma instância que não seja Amazon Linux do EC2 causa problemas no fluxo de tráfego. Esses problemas ocorrem porque as interfaces de rede primária e secundária estão na mesma sub-rede, e há uma tabela de roteamento com um gateway. O tráfego que entra na interface de rede secundária usa a interface de rede primária para sair da instância. Como o endereço IP secundário não pertence ao endereço MAC da interface de rede primária, a interface secundária não funciona.
Observação: as etapas a seguir não são necessárias para o Ubuntu 24.04. O Ubuntu 24.04 manipula automaticamente essa configuração avançada.
Para fazer a interface secundária funcionar depois de criá-la, conclua as seguintes etapas:
- Configure a tabela de roteamento.
- Configure regras no banco de dados de políticas da tabela de roteamento personalizada para que o tráfego da interface secundária use a nova tabela de roteamento.
Antes de começar, observe que as instâncias do Amazon EC2 estão na nuvem da AWS e, portanto, nem todos os casos de uso se beneficiam de ter várias interfaces. Os exemplos a seguir mostram quando talvez você não precise usar uma interface de rede secundária:
- Para aumentar a throughput da rede: Como os limites são definidos com base no tipo e tamanho da instância, a throughput da rede não aumenta. Para obter mais informações, consulte Tipos de instância do Amazon EC2.
- Para aumentar os endereços IP elásticos: Você não precisa adicionar endereços IP elásticos à sua instância porque a maioria dos aplicativos funciona bem com o DNS. Por exemplo, o Apache pode usar hosts virtuais baseados em nomes. Para obter mais informações, consulte Name-based virtual host support no site da Apache.
Observação: as etapas para adicionar uma interface de rede secundária são diferentes para cada uma das seguintes versões do Ubuntu:
- Ubuntu 14.04
- Ubuntu 16.04
- Ubuntu 18.04
- Ubuntu 20.04
- Ubuntu 22.04
Resolução
Observação: embora as etapas na resolução a seguir tenham sido testadas nas versões Linux listadas, talvez seja necessário modificar as configurações personalizadas da sua configuração. Todos os procedimentos devem ser executados com permissões de usuário-raiz. Torne-se o usuário-raiz com sudo -i ou execute todos os comandos com sudo.
Configurar o Ubuntu 14.04 ou 16.04
Você pode usar um único arquivo para criar o arquivo de configuração da interface secundária, configurar a tabela de roteamento e, em seguida, definir as regras da política de roteamento para o Ubuntu.
Para configurar o Ubuntu 14.04 ou 16.04, conclua as seguintes etapas:
-
Para obter o nome da interface de rede primária, execute o seguinte comando:
ip a | grep ^[[:digit:]]
Você recebe uma saída semelhante à esta mensagem:
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: no exemplo anterior, as interfaces primárias são denominadas eth0, eth1 e assim por diante. No entanto, em casos que oferecem suporte a redes aprimoradas, como os tipos de famílias m4 e m5, você pode ver uma inconsistência de nomenclatura. Por exemplo, a primária poderá se chamar ens3 se a secundária se chamasse eth0. Essa inconsistência de nomenclatura acontece quando você adiciona a interface secundária enquanto a instância está em execução. Para evitar uma inconsistência de nomenclatura, adicione a interface no momento da inicialização ou reinicialize a instância. Ou, se a interface estiver em execução, use o seguinte comando para alterar o nome:
ip link set eth0 name ens4 ip link set ens4 up ip link show ens4 --->verify
-
Crie um arquivo de configuração para a interface secundária:
vi /etc/network/interfaces.d/51-eth1.cfg
Observação: altere eth1 para corresponder ao nome da sua interface secundária.
O comando a seguir é um exemplo para um único endereço IP de 172.31.21.115 com um gateway de 172.31.16.1 na interface secundária:
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
Observação: substitua o exemplo de endereço IP e gateway por suas próprias informações. Seu gateway deve ser o primeiro endereço IP válido em sua sub-rede.
O comando a seguir é um exemplo para vários endereços IP. Neste exemplo, os endereços IP são 172.31.21.115 e172.31.18.46, e o gateway é 172.31.16.1:
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
Observação: substitua os endereços IP e o gateway de exemplo pelos seus próprios.
-
Crie o arquivo restrict-default-gw para evitar que o gateway padrão seja sobrescrito na tabela principal:
vi /etc/dhcp/dhclient-enter-hooks.d/restrict-default-gw
-
Adicione as seguintes linhas ao arquivo restrict-default-gw:
case ${interface} in eth0) ;; *) unset new_routers ;; esac
Observação: substitua eth0 pelo nome da sua interface primária.
-
Reinicie a rede.
Para o Ubuntu 14.04, execute o seguinte comando:
(ifdown eth1 && ifup eth1)
Para o Ubuntu 16.04, execute o seguinte comando:
systemctl restart networking
Configure o Ubuntu 18.04, 20.04 e 22.04
O Ubuntu 18.04, 20.04 e 22.04 usam a configuração de rede Netplan. Observe que o Netplan usa o formato YAML. Esse formato YAML significa que o recuo é essencial. O exemplo do Netplan a seguir usa recuo de dois espaços.
Para configurar o Ubuntu 18.04, 20.04 e 22.04, conclua as seguintes etapas:
-
Crie um arquivo de configuração para a interface secundária:
vi /etc/netplan/51-eth1.yaml
-
Adicione as seguintes linhas ao arquivo 51-eth1.yaml:
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
Observação: substitua as informações do exemplo anterior por informações específicas para seu caso de uso. Esse exemplo de arquivo YAML configura dois endereços IP em eth1, a interface secundária.
Para encontrar o intervalo CIDR a ser usado no arquivo YAML, conclua as seguintes etapas:
- Abra o console do Amazon EC2, selecione Instâncias e, em seguida, selecione a instância.
- Na guia Rede, vá até Interfaces de rede e anote o ID da sub-rede da sua interface de rede secundária.
- Abra o console do Amazon Virtual Private Cloud (Amazon VPC), selecione Sub-redes e anote o intervalo CIDR IPv4 listado para o ID da sub-rede.
- Para aplicar a configuração de rede, execute o seguinte comando:
netplan --debug apply
Informações relacionadas
Vídeos relacionados
Conteúdo relevante
- feita há 8 diaslg...
- Resposta aceitafeita há 6 diaslg...
- feita há 22 diaslg...
- feita há 8 diaslg...
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano