Como soluciono problemas de configuração de rede no nível do sistema operacional na minha instância do Linux do Amazon EC2?
Minha instância Linux do Amazon Elastic Compute Cloud (Amazon EC2) falhou na verificação de status devido a problemas de configuração de rede no sistema operacional (SO).
Breve descrição
Se sua instância do EC2 falhar nas verificações de status da instância, verifique se há um prompt de login nos logs do sistema para confirmar se a instância foi inicializada com sucesso. Se a instância foi inicializada, ela falhou na verificação de status devido a problemas de configuração de rede.
Para resolver seu problema, conecte-se à sua instância e atualize sua configuração de rede.
Resolução
Conecte-se à sua instância
Use o Console de série do EC2 para se conectar à sua instância diretamente. Se não for possível usar o Console de série do EC2, conecte-se a uma instância de resgate para editar manualmente os arquivos de configuração da instância. Para obter instruções sobre como usar uma instância de resgate, consulte a seção Usar uma instância de resgate para editar manualmente o arquivo em Por que minha instância do Linux do EC2 entra no modo de emergência quando tento inicializá-la?
Observação: se você usar o Console de série para se conectar à sua instância, reinicialize sua instância depois de atualizar a configuração de rede para aplicar as alterações.
Verifique a instalação do cloud-init
Falhas de rede podem ocorrer porque você não instalou o pacote cloud-init ou usou o pacote cloud-init para atualizar as configurações de rede na execução.
Para resolver esse problema, conclua as etapas a seguir para instalar o pacote cloud-init na sua instância:
- Se você usou o Console de série para se conectar, vá para a etapa 2. Se você usou o método de instância de resgate, execute o seguinte comando para criar um ambiente chroot:
O exemplo anterior monta por vinculação os diretórios /dev, /proc, /sys e /run do sistema de arquivos raiz original. Essa configuração permite que processos executados dentro do ambiente chroot acessem os diretórios do sistema.for i in dev proc sys run; do mount -o bind /$i /mnt/$i; done; chroot /mnt - Para instalar o pacote cloud-init, execute o comando a seguir com base na sua distribuição Linux.
Amazon Linux 2 (AL2), Amazon Linux 2023 (AL2023) ou Red Hat Enterprise Linux (RHEL):
Ubuntu ou Debian:sudo yum install cloud-init -ysudo apt install cloud-init -y
Verifique se há endereços MAC fixados no código
Endereços MAC fixados no código nos arquivos de configuração udev causam problemas de rede. Se houver um endereço MAC fixado no código, a interface de rede elástica não pode ser carregada porque o endereço MAC não corresponde ao endereço de hardware da instância.
O exemplo de saída a seguir do log do sistema mostra que a interface eth0 está inativa com o status False (Falso):
[ 7.098826] cloud-init[963]: ci-info: ++++++++++++++++++++++++++++++++++++++Net device info+++++++++++++++++++++++++++++++++++++++ [ 7.101136] cloud-init[963]: ci-info: +--------+------+-----------------------------+---------------+--------+-------------------+ [ 7.103157] cloud-init[963]: ci-info: | Device | Up | Address | Mask | Scope | Hw-Address | [ 7.105264] cloud-init[963]: ci-info: +--------+------+-----------------------------+---------------+--------+-------------------+ [ 7.107320] cloud-init[963]: ci-info: | eth0 | False| 172.31.21.19 | 255.255.240.0 | global | 0a:ff:c3:d1:93:6f | [ 7.111401] cloud-init[963]: ci-info: | lo | True | 127.0.0.1 | 255.0.0.0 | host | . | [ 7.115529] cloud-init[963]: ci-info: +--------+------+-----------------------------+---------------+--------+-------------------+
Para remover endereços MAC fixados no código, conclua as seguintes etapas:
-
Verifique os seguintes locais de arquivo para ver se há endereços MAC fixados no código:
/etc/udev/rules.d/
/etc/udev/rules.d/70-persistent-net.rules
/etc/udev/rules.d/80-net-name-slot.rules
Os arquivos anteriores podem usar uma diretiva ATTR{address}=="MAC_ADDRESS" para especificar um endereço MAC permanente. -
Remova as entradas dos arquivos de configuração ou execute o seguinte comando para remover os arquivos de configuração:
sudo mv /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.disabled -
Se você usou o método de instância de resgate, vá para a etapa 4. Se você usou o Console de série para se conectar à sua instância, deve reiniciar o serviço de rede. Execute os seguintes comandos com base na sua distribuição Linux.
Ubuntu, Debian e AL2023:sudo systemctl restart systemd-networkdRHEL:
sudo systemctl restart NetworkManagerSistemas que usam netplan:
sudo netplan apply -
Se você usou o método de instância de resgate, desanexe o volume do Amazon Elastic Block Store (Amazon EBS) da instância de resgate. Em seguida, anexe o volume de volta à instância original. Para receber um novo endereço MAC, execute a instância original.
Verifique se há endereços IP fixados no código
As imagens de máquina da Amazon (AMIs) que você cria a partir de instâncias com configurações de endereço IP estático herdam endereços IP fixados no código em seus arquivos de configuração de rede. Se você executar instâncias a partir dessas AMIs, as instâncias não solicitarão um endereço IP por meio do Protocolo de Configuração Dinâmica de Host (DHCP). Em vez disso, as instâncias usam o endereço IP fixado no código. Essa configuração causa falhas de conectividade de rede. Para resolver esse problema, certifique-se de configurar todas as interfaces de rede para DHCP antes de criar a AMI.
Observação: não é possível atualizar AMIs que já existem. Você deve definir a interface de rede para usar o DHCP antes de criar uma nova AMI.
Verifique sua configuração
No Amazon Linux ou RHEL, use as seguintes configurações:
- Certifique-se de que os arquivos de configuração de rede contenham os seguintes valores:
BOOTPROTO=dhcp
PEERDNS=yes
PERSISTENT_DHCLIENT=yes - Remova as seguintes linhas dos arquivos:
IPADDR
NETMASK
GATEWAY
DNS
Exemplo de configuração:
cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes TYPE=Ethernet USERCTL=yes PEERDNS=yes DHCPV6C=yes DHCPV6C_OPTIONS=-nw PERSISTENT_DHCLIENT=yes RES_OPTIONS="timeout:2 attempts:5"
No Ubuntu ou Debian, certifique-se de que a configuração do netplan contenha dhcp4: true.
Exemplo de configuração:
cat /etc/netplan/50-cloud-init.yaml network: version: 2 ethernets: ens5: match: macaddress: "0a:ff:d3:15:30:9d" dhcp4: true dhcp6: false set-name: "ens5"
Observação: O campo macaddress na configuração do netplan é diferente das regras MAC fixadas no código no udev que causam falhas na rede. O Amazon EC2 usa o valor de macaddress somente para corresponder à interface de rede da configuração. A linha dchp4:true permite que o Amazon EC2 atribua dinamicamente um endereço IP à instância.
Reinicie o serviço de rede
Execute o comando a seguir com base na sua distribuição Linux para reiniciar o serviço de rede.
Ubuntu, Debian ou AL2023:
sudo systemctl restart systemd-networkd
RHEL:
sudo systemctl restart NetworkManager
Sistemas que usam netplan:
sudo netplan apply
Verifique se a interface de rede primária inicia na inicialização
Se a interface de rede falhar ao iniciar na inicialização, você receberá a mensagem de erro "interface eth0: failed". Para resolver esse problema, verifique se ONBOOT está definido como yes no arquivo de configuração da interface.
Execute o comando a seguir para abrir o arquivo de configuração da interface:
cat /etc/sysconfig/network-scripts/ifcfg-eth0
Certifique-se de que o arquivo contenha o seguinte valor:
ONBOOT=yes
Resolva conflitos de nomenclatura de interface de rede
Se o nome da interface de rede em seus arquivos de configuração e a interface de rede na instância não corresponderem, você receberá a seguinte mensagem de erro:
"[FAILED] Failed to start LSB: Bring up/down networking"
Esse problema geralmente ocorre quando há arquivos de configuração de interface duplicados, como ifcfg-eth0 e ifcfg-ens5.
Para resolver esse problema, remova o arquivo de configuração da interface que não existe na sua instância. Normalmente, você mantém o arquivo mais recente. Por exemplo, se sua instância usa convenções de nomenclatura previsíveis, como ens5, é possível manter ifcfg-ens5 e remover ifcfg-eth0. Ou verifique cloud-init para identificar o nome correto da interface.
Verifique se a interface de rede foi renomeada automaticamente na inicialização
Se você ativar a nomenclatura da interface de rede, os nomes das interfaces mudarão de formatos como eth0 e eth1 para ens5 e enp0s3. As alterações de nome podem causar problemas com scripts, regras de firewall e configurações que fazem referência aos nomes originais. A ordem de nomenclatura também pode mudar após o reinício ou reinicialização da instância.
Para desativar a nomenclatura previsível da interface de rede, conclua as seguintes etapas:
-
Para criar um ambiente chroot no diretório /mnt, execute o seguinte comando:
for i in dev proc sys run; do mount -o bind /$i /mnt/$i; done; chroot /mntO exemplo anterior monta por vinculação os diretórios /dev, /proc, /sys e /run do sistema de arquivos raiz original. Essa configuração permite que processos executados dentro do ambiente chroot acessem os diretórios do sistema.
-
Certifique-se de ter ativado a rede aprimorada com o Adaptador de rede elástica (ENA) em sua instância.
-
Adicione o parâmetro de kernel net.ifnames=0 à linha GRUB_CMDLINE_LINUX no arquivo /etc/default/grub.
Exemplo de configuração:GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8 net.ifnames=0" -
Para reconstruir a configuração do GRUB, execute o seguinte comando com base na sua distribuição Linux.
Amazon Linux ou RHEL:sudo grub2-mkconfig -o /boot/grub2/grub.cfgUbuntu ou Debian:
sudo update-grub
Verifique sua rede aprimorada e a configuração aprimorada do driver de rede
Teste se você ativou a rede aprimorada em sua instância. Se você não a ativou, ative a rede aprimorada.
Para verificar se você instalou o driver do ENA, execute o seguinte comando:
sudo modinfo ena |grep -i '^version:' || echo "ENA module not available, try modprobe ena"
Se você não instalou o driver do ENA, instale o driver mais recente. Para obter instruções, consulte Linux kernel driver for Elastic Network Adapter (ENA) family (Driver do kernel Linux para a família ENA) no site do GitHub.
Informações relacionadas
Como soluciono problemas de falhas na verificação de status da minha instância do Linux do EC2?
Solucionar problemas de instâncias do Linux do Amazon EC2 com falhas nas verificações de status
- Tópicos
- Compute
- Tags
- LinuxAmazon EC2
- Idioma
- Português

Conteúdo relevante
feita há um ano