Este tópico descreve como solucionar o problema de exibição da mensagem de erro "Network is unreachable" ao acessar um endereço IP público a partir de uma instância Linux do Elastic Compute Service (ECS).
Descrição do problema
Ao acessar um endereço IP público a partir de uma instância Linux do ECS, a mensagem de erro Network is unreachable aparece.
Causa
A rota padrão da instância está ausente, e o sistema não consegue localizar o endereço IP de destino dos pacotes. Isso faz com que o acesso à Internet falhe.
Solução
Para instâncias do ECS em uma Virtual Private Cloud (VPC), recomenda-se utilizar o Dynamic Host Configuration Protocol (DHCP) para obter endereços IP dinâmicos e configurações de rota padrão. Isso previne a maioria dos problemas de rede causados por rotas padrão ausentes devido a configurações de IP estático incorretas.
Para obter informações sobre como alterar um endereço IP estático para dinâmico, consulte Verificação e reparo da configuração DHCP para a placa de rede local de instâncias Linux.
Etapa 1: Obter o endereço IP do gateway padrão
Se a instância não consegue acessar nenhum endereço IP além do endereço IP da própria instância, obtenha o endereço IP do gateway padrão a partir de outras instâncias conectadas ao mesmo vSwitch. Execute as seguintes operações:
Faça logon em uma instância íntegra conectada ao mesmo vSwitch da instância com problema.
Execute o seguinte comando para visualizar a placa de interface de rede (NIC) conectada ao vSwitch e registre o endereço MAC:
ip addrA saída do comando exibida é semelhante à seguinte. A NIC primária chamada eth0 está conectada ao mesmo vSwitch da instância com problema, e o endereço MAC da NIC é
00:16:52:07:**:**.1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:**:**:**:** brd 00:00:**:**:**:** inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:16:52:07:**:** brd ff:ff:ff:ff:ff:ff inet 172.16.*.***/24 brd 172.16.2.255 scope global eth0 valid_lft 311974909sec preferred_lft 311974909sec inet6 fe80::216:52ff:fe07:1306/64 scope link valid_lft forever preferred_lft foreverExecute o seguinte comando para obter o endereço IP do gateway padrão a partir do servidor de metadados da instância.
nullSe a instância com problema consegue executar ping no endereço IP
100.100.100.200do servidor de metadados da instância, execute o seguinte comando na instância com problema para selecionar a NIC primária chamada eth0 como saída padrão. Selecione outra NIC de acordo com seus requisitos de negócio.curl http://100.100.100.200/latest/meta-data/network/interfaces/macs/[$MAC_Address]/gatewaynullSubstitua o parâmetro
[$MAC_Address]pelo endereço MAC obtido na etapa anterior.
Etapa 2: Configurar uma rota padrão
Ao configurar uma rota padrão temporária, não é necessário modificar a configuração da NIC nem reiniciar o serviço de rede. No entanto, a configuração de rota padrão se torna inválida após o desligamento ou reinicialização do sistema.
Configurar uma rota padrão temporária
Execute o seguinte comando para adicionar uma rota padrão à tabela de roteamento:
ip route add default via [$Gateway_IP] dev [$Network]nullSubstitua o parâmetro
[$Gateway_IP]pelo endereço IP do gateway padrão obtido na Etapa 1.Substitua o parâmetro
[$Network]pela NIC que possui o endereço IP do gateway padrão, consultada na outra instância conectada ao mesmo vSwitch da instância com problema.
Execute o seguinte comando para consultar a tabela de roteamento. Verifique se a rota padrão foi adicionada à tabela de roteamento.
ip routeA saída do comando exibida é semelhante à seguinte:
default via 172.16.2.253 dev eth0 10.64.0.0/10 via 172.16.2.253 dev eth0 169.254.0.0/16 dev eth0 scope link metric 1002 172.16.2.0/24 dev eth0 proto kernel scope link src 172.16.2.248nullNa saída do comando anterior, o gateway padrão está definido como
172.16.2.253e a NIC de saída padrão está definida como eth0, que é a NIC primária.
Configurar uma rota padrão persistente
Para configurar uma rota padrão persistente, é necessário modificar o arquivo de configuração da NIC. Para que a alteração entre em vigor imediatamente, reinicie o serviço de rede, o que pode causar interrupções na rede. No exemplo a seguir, o CentOS 7.9 é utilizado. Para outras distribuições Linux, consulte a documentação do sistema e a documentação de configuração de rede correspondentes.
Abra o arquivo de configuração
/etc/sysconfig/network-scripts/ifcfg-eth0da NIC utilizada como saída padrão. Insira as informações do gateway registradas nas etapas anteriores no arquivo de configuração, salve e feche o arquivo. Por exemplo, a NIC primária chamada eth0 é utilizada como saída padrão, e o endereço IP do gateway é172.16.2.253.DEVICE=eth0 TYPE=Ethernet BOOTPROTO=static ONBOOT=yes STARTMODE=auto IPADDR=172.16.2.248 NETMASK=255.255.255.0 GATEWAY=172.16.2.253Execute o seguinte comando para reiniciar o serviço de rede:
systemctl restart network