Todos os produtos
Search
Central de documentação

:Corrigir endereços IP ausentes no CentOS 7 e Windows

Última atualização: Jul 03, 2026

Sintomas

Se uma instância ECS permanecer em execução por um longo período sem reinicialização, problemas de conectividade de rede poderão ocorrer. Os sintomas incluem interrupção total da rede ou impossibilidade de executar ping nos endereços IP público e privado da instância.

Causa

Ao iniciar uma instância ECS pela primeira vez, o sistema usa o Dynamic Host Configuration Protocol (DHCP) para atribuir automaticamente um endereço IP à interface de rede elástica e obter o tempo de expiração do lease. Em condições normais, o processo dhclient em sistemas Linux e o serviço DHCP Client em sistemas Windows renovam periodicamente esse lease com o servidor DHCP para manter o endereço IP válido. No entanto, em instâncias criadas a partir de certas imagens do CentOS 7, o processo dhclient pode ser encerrado inesperadamente. Além disso, existe um problema conhecido no serviço DHCP Client em alguns sistemas operacionais Windows Server. Consequentemente, a instância não consegue renovar automaticamente o lease do endereço IP. Quando o lease inicial expira, o sistema libera o endereço IP privado da instância, causando falha na rede.

Escopo

Este artigo aplica-se a instâncias ECS que atendem aos critérios abaixo e usam DHCP para atribuir automaticamente um endereço IP a uma interface de rede elástica. Instâncias configuradas com endereço IP estático não exigem ação.

  • Instâncias de qualquer tipo criadas a partir das seguintes imagens públicas do CentOS 7 antes de 31 de maio de 2018 e não reiniciadas desde 15 de novembro de 2018:

    • centos_7_04_64_20G_alibase_20180419.vhd

    • centos_7_04_64_20G_alibase_20180326.vhd

    • centos_7_04_64_20G_alibase_201701015.vhd

    • centos_7_03_64_20G_alibase_20170818.vhd

    • centos_7_02_64_20G_alibase_20170818.vhd

    • centos_7_03_64_40G_alibase_20170710.vhd

    • centos_7_03_64_40G_alibase_20170625.vhd

    • centos_7_03_64_40G_alibase_20170523.vhd

    • centos_7_03_64_40G_alibase_20170503.vhd

  • Instâncias que executam os seguintes sistemas operacionais Windows Server, criadas antes de 15 de novembro de 2018 e não reiniciadas desde então:

    • Windows Server 2008 R2

    • Windows Server 2012 R2

    • Windows Server 2016

    • Windows Server Version 1709

Soluções

Nota
  • Antes de executar operações de alto risco, como modificar uma instância ou seus dados, garanta a implementação de medidas de recuperação de desastres e tolerância a falhas.

  • Antes de modificar configurações ou dados de instâncias como ECS e RDS, crie um snapshot ou ative recursos como backup de log do RDS.

  • Caso tenha enviado informações sensíveis, como nomes de usuário e senhas, na plataforma Alibaba Cloud, altere-as imediatamente.

Escolha um dos quatro métodos abaixo conforme sua necessidade.

  • Método 1: Correção em lote usando o Cloud Assistant. Ideal para gerenciar múltiplas instâncias, permitindo execução fácil pelo console do ECS.

  • Método 2: Correção em lote via script Python SDK. Verifica o status das instâncias e aplica correções automáticas em toda uma região. Recomendado para usuários familiarizados com scripts.

  • Método 3: Correção utilizando scripts Shell e PowerShell. Exige acesso individual a cada instância ECS para aplicar as correções manualmente. Indicado para testes ou atualização de poucas instâncias. Os scripts são idênticos aos utilizados no Método 1.

  • Método 4: Verificação manual das placas de rede. Adequado quando há um número reduzido de instâncias.

Método 1: Correção em lote usando o Cloud Assistant

Neste exemplo, o Cloud Assistant verifica e repara automaticamente uma instância ECS. Certifique-se de que a instância possui o Cloud Assistant Agent instalado. O Cloud Assistant Agent vem pré-instalado por padrão em instâncias ECS criadas após 1º de dezembro de 2017. Para mais informações, consulte Cloud Assistant Agent Instalar o Cloud Assistant Agent.

  1. Crie um comando do Cloud Assistant. Para instruções detalhadas, consulte Criar um comando do Cloud Assistant.

  2. Baixe o script Shell ou PowerShell apropriado e cole o conteúdo no campo Command Content no console do ECS.

  3. Selecione as instâncias ECS alvo e execute o comando. Para instruções detalhadas, consulte Executar um comando.

  4. Confirme se o comando foi executado com sucesso. Para instruções detalhadas, consulte Visualizar o resultado e o status do comando. Os exemplos a seguir mostram a saída do comando para instâncias CentOS e Windows.

    [INFO] [2019-04-28 11:13:00] start check and fix
    [INFO] [2019-04-28 11:13:00] log file /tmp/dhcp_fix_20190428-11:13:00.log
    [INFO] [2019-04-28 11:13:00] start checking eth0
    [INFO] [2019-04-28 11:13:00] eth0 state is up
    [INFO] [2019-04-28 11:13:00] ip a show dev eth0
    [INFO] [2019-04-28 11:13:00] eth0 valid_lft 315359644
    [INFO] [2019-04-28 11:13:00] no need fix, dhclient eth0 is running
    [1;32;40m[SUCCESS] [0m [2019-04-28 11:13:00] check and fix success
    [1;32;40m[SUCCESS] [0m [2019-04-28 11:13:00] return code: 0
    [1;33;40m[WARN] [0m [2019-04-28 11:14:17] need fixing eth0
    [INFO] [2019-04-28 11:14:17] start fixing eth0
    [INFO] [2019-04-28 11:14:17] ip a show dev eth0
    [INFO] [2019-04-28 11:14:17] ifup eth0
    RTNETLINK answers: File exists
    [INFO] [2019-04-28 11:14:19] ip a show dev eth0
    [INFO] [2019-04-28 11:14:19] ok, dhclient eth0 is running now
    [1;32;40m[SUCCESS] [0m [2019-04-28 11:14:19] check and fix success
    [1;32;40m[SUCCESS] [0m [2019-04-28 11:14:19] return code: 0
    No ip will expire in recent 500 days. Then no need fix.
    Nic info: \\E2ETesthxxx...xxxterConfiguration.Index=3
    Found one ip will expire in 500 days. We need fixing it!!!
    Fix it now...
    Nic info: \\E2ETesthxxx...xxxpterConfiguration.Index=3
    fix success.
    ]]]]]]]]]]

Método 2: Correção em lote via script Python SDK

Este método utiliza um script Python baseado na API do Cloud Assistant para verificar e corrigir automaticamente todas as instâncias afetadas em uma região da Alibaba Cloud. Para instruções de instalação do SDK do ECS, consulte o guia de instalação no repositório GitHub da Alibaba Cloud.

Pré-requisitos

Execute o seguinte comando para instalar as dependências necessárias do SDK Python na máquina local ou em uma instância ECS.

pip install alibabacloud_ecs20140526

Procedimento

  1. Baixe o arquivo autofix_dhclient.py para sua instância ECS.

  2. Execute o comando abaixo para rodar o script.

    sudo python autofix_dhclient.py <AccessKeyID> <AccessKeySecret> <region-id>
    Nota

    Substitua <AccessKeyID>, <AccessKeySecret> e <region-id> no comando.

    • AccessKey ID: O AccessKey ID da sua conta Alibaba Cloud ou usuário RAM.

    • AccessKey Secret: O AccessKey Secret da sua conta Alibaba Cloud ou usuário RAM.

    • region ID: O ID da região onde a instância está localizada. Para obter uma lista de IDs de região, consulte Regiões e zonas.

Resultados

O exemplo a seguir mostra a saída do script.

Performing the scan and this will take some time, please wait...
Scan done.
Instance Status details:
+----------------------------+----------------+---------------+---------------+
|        InstanceID          | Cloud Assistant|    NeedFix    |   FixResult   |
+----------------------------+----------------+---------------+---------------+
|  i-uf639pxxxye4ldb         |   Installed    |      No       |   NoChange    |
+----------------------------+----------------+---------------+---------------+
|  i-uf69mdxxxk6sahw         |   Installed    |      Yes      |   Success     |
+----------------------------+----------------+---------------+---------------+
Summary:
================================
Total instances scanned: 2
Fixed: 1
Unknown: 0
Failed: 0

Os campos de saída têm a seguinte descrição:

  • Cloud Assistant: Verifica se o Cloud Assistant Agent está instalado na instância.

    • Installed: O Cloud Assistant Agent está instalado.

    • Not Installed: O Cloud Assistant Agent está ausente. Instale o Cloud Assistant Agent e execute o script novamente.

  • NeedFix: Verifica se o processo dhclient ou o serviço DHCP Client requer correção.

    • Yes: Correção necessária. O script conclui a tarefa automaticamente.

    • No: Nenhuma correção necessária.

    • Unknown: O script não conseguiu determinar o status. Realize a verificação manualmente.

  • FixResult: Exibe o resultado da correção.

    • Success: O processo dhclient ou o serviço DHCP Client foi corrigido com sucesso.

    • Failed: A correção falhou.

    • NoChange: Nenhuma correção era necessária.

    • Unknown: O script não conseguiu determinar o resultado. Realize a verificação manualmente.

Método 3: Correção utilizando scripts Shell ou PowerShell

Este método exige login em cada instância afetada e execução manual de um script. Projetado para cenários com poucas instâncias.

Procedimento para instâncias CentOS

  1. Faça login na instância ECS. Para mais informações, consulte Métodos de conexão.

  2. Baixe o script linux_fix_dhclient.sh para qualquer diretório.

  3. Acesse o diretório onde o script está localizado e execute-o como usuário root.

    sudo bash linux_fix_dhclient.sh
    Nota
    • Um código de retorno "0" indica que o script completou a verificação e a correção com sucesso.

    • Qualquer outro código de retorno indica falha na correção.

Procedimento para instâncias Windows

  1. Faça login na instância ECS. Para mais informações, consulte Métodos de conexão.

  2. Baixe o script win_fix_dhclient.ps1 para qualquer diretório.

  3. Abra o PowerShell com privilégios administrativos e execute o seguinte comando.

    powershell -executionpolicy bypass -file C:\win_fix_dhclient.ps1
    Nota

    Nota:

    • Substitua C:\win_fix_dhclient.ps1 pelo caminho real do arquivo.

    • A saída "No ip will expire in recent 500 days. Then no need fix." indica que o serviço DHCP Client funciona normalmente e nenhuma correção é necessária.

    • A saída "Found one ip will expire in 500 days. We need fixing it!!! Fix it now... Fix success." indica que o serviço DHCP Client não funcionava corretamente e o script corrigiu o problema.

    • Qualquer outra saída indica falha na correção.

Método 4: Verificação manual das placas de rede

Este método exige verificação e correção manuais do processo dhclient (para instâncias CentOS) ou do tempo de expiração do lease do endereço IP (para instâncias Windows) em cada placa de rede.

Procedimento para instâncias CentOS

  1. Faça login na instância ECS. Para mais informações, consulte Métodos de conexão.

  2. Execute o comando abaixo para verificar todas as placas de rede na instância.

    ls -al /sys/class/net/
  3. Execute o seguinte comando para verificar se a placa de rede eth0 usa DHCP para obter o endereço IP.

    cat /etc/sysconfig/network-scripts/ifcfg-eth0

    O sistema exibirá uma saída semelhante à seguinte. BOOTPROTO=dhcp indica que a placa de rede usa DHCP para atribuir um endereço IP. Se a atribuição do endereço IP não for via DHCP, vá para a Etapa 7.

    [root@xxx ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes
    [root@xxx ~]#  grep 'BOOTPROTO=dhcp' /etc/sysconfig/network-scripts/ifcfg-eth0
    BOOTPROTO=dhcp
  4. Execute o comando abaixo para verificar o status do processo dhclient referente à placa de rede eth0.

    ps aux | grep dhclient | grep eth0
    • Uma saída vazia indica que o processo dhclient não está em execução correta.

    • Se a saída for semelhante à seguinte, o processo funciona normalmente. Nesse caso, prossiga para a etapa 7.

      root 15340 0.0 0.3 113372 12788 ? Ss 14:16 0:00 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient--eth0.lease -pf /var/run/dhclient-eth0.pid -H izuf****************** eth0
  5. Execute o comando a seguir para reiniciar o processo dhclient.

    ifup eth0
    Nota

    Este exemplo utiliza eth0. Substitua eth0 pelo identificador real da sua placa de rede.

  6. Verifique novamente o status do processo dhclient para confirmar a execução.

  7. Repita as etapas 3 a 6 para verificar e corrigir o processo dhclient em todas as placas de rede restantes.

Procedimento para instâncias Windows

  1. Faça login na instância ECS. Para mais informações, consulte Métodos de conexão.

  2. Abra o Prompt de Comando (CMD) como administrador.

  3. Execute o comando abaixo para verificar se DHCP Enabled está definido como Yes na placa de rede descrita como Red Hat VirtIO Ethernet Adaptor e visualize o horário em Lease Expires.

    ipconfig /all
    Nota

    O Red Hat VirtIO Ethernet Adaptor atua como placa de rede primária ou interface de rede elástica secundária da instância ECS. Configurações personalizadas, como adaptadores VPN ou loopback, não são afetadas. Placas de rede sem o serviço DHCP ativado também não sofrem impacto.

  4. Se o lease expirar dentro de um ano, execute o seguinte comando para renová-lo.

    ipconfig /renew
  5. Execute o comando ipconfig /all. Um tempo de expiração do lease superior a dez anos indica a conclusão da correção.

Aplica-se a

  • ECS