Todos os produtos
Search
Central de documentação

:Introdução à rede do RDS Custom

Última atualização: Jul 27, 2026

Este tópico descreve as configurações de rede padrão do RDS Custom e como configurar a inicialização de rede para uma imagem personalizada.

Visão geral da rede do RDS Custom

Uma instância do RDS Custom no modo dual-NIC possui duas interfaces de rede por padrão: uma interface de rede primária (geralmente chamada eth0) e uma Elastic Network Interface (ENI) (geralmente chamada eth1).

  • eth0: Esta interface é criada na VPC dedicada do product RDS Custom. Devido a restrições de grupos de segurança, apenas o tráfego de saída do bloco CIDR de gerenciamento do ECS 100.100.0.0/16 é permitido pela interface eth0.

    Nota

    Os endereços IP 100.100.2.136 e 100.100.2.138 são endereços IP de DNS internos. O tráfego de e para esses endereços deve passar pela eth1.

  • eth1: Esta interface é criada na sua VPC. Normalmente, todo o tráfego, exceto o proveniente do bloco CIDR de gerenciamento do ECS, passa pela eth1. É possível gerenciar o tráfego de entrada e saída usando grupos de segurança.

Após connect to an RDS Custom instance, as interfaces de rede, a tabela de rotas e as regras de firewall iptables geralmente apresentam a seguinte configuração:

  • Execute o comando ip address show para visualizar o status das interfaces de rede da instância.

    image

  • Execute o comando route -n para visualizar a tabela de rotas da instância.

    O tráfego passa apenas pela interface de rede eth1.

    image

  • Execute o comando iptables -L -n para visualizar a configuração padrão do iptables da instância.

    image

Se você alterar a tabela de rotas, as regras de firewall iptables ou as configurações da interface de rede (como reiniciar a eth0) na instância do RDS Custom e perder a conectividade, restart the instance para inicializar a rede do RDS Custom.

Aviso

As instâncias do RDS Custom usam o script /etc/rds_custom_init.sh para inicialização da rede. Não exclua esse script. Caso contrário, a inicialização falhará.

Configurar a inicialização de rede para uma imagem personalizada

Ao criar uma instância do RDS Custom a partir de uma imagem personalizada, o RDS Custom configura automaticamente o script /etc/rds_custom_init.sh para inicialização de rede na maioria das imagens públicas. As imagens suportadas incluem Alibaba Cloud Linux 3, Alibaba Cloud Linux 2, CentOS 8, CentOS 7, Debian 11, Debian 10.5, AlmaLinux 9.2, Ubuntu 22, Ubuntu 20 e Ubuntu 16. Para usar outras imagens personalizadas, é necessário criar manualmente o script rds_custom_init.sh na instância da imagem de source antes de criar a imagem personalizada.

As principais funções do script rds_custom_init.sh são:

  1. Configura a rede para a eth1 e inicia os service relacionados em sistemas que não ativam automaticamente a ENI.

  2. Modifica a configuração de roteamento para direcionar a rota padrão para a eth1 e o bloco CIDR de gerenciamento do ECS 100.100.0.0/16 para a eth0.

  3. Altera a configuração de roteamento para apontar os endereços IP de DNS internos 100.100.2.136 e 100.100.2.138 para a eth1.

Importante

Quando uma instância do RDS Custom é iniciada, o sistema registra o gateway da eth0 em /etc/eth0_gateway e configura automaticamente o script /etc/rds_custom_init.sh para a maioria das imagens públicas. Se planejar executar inicializações relacionadas à rede na instância do RDS Custom, certifique-se de executar manualmente o script /etc/rds_custom_init.sh após concluir a inicialização da rede. Se a eth1 não estiver funcionando (por exemplo, se o endereço IP não for detectado), contact us ou configure a rede para garantir que a eth1 funcione corretamente.

Criar o script manualmente e configurá-lo para execução na inicialização

  1. Crie o script rds_custom_init.sh na pasta /etc. O conteúdo do script é o seguinte:

    rds_custom_init.sh script

    #!/bin/bash
    echo "RDS CUSTOM INIT START, $(date)" >> /tmp/rds_custom_init.log
    flag=0
    for ((i=1; i<=5; i++)); do
        eth1_ip=$(ip address show eth1 | grep "inet " | awk "{print \$2}" | cut -d'/' -f1)  
        if [[ -n "$eth1_ip" ]]; then
            break
        else
            sleep 1
        fi
    done
    eth0_gateway=$(ip route | grep "default via " | grep "eth0" | awk "{print \$3}")
    # check eth0_gateway
    if [ -z "$eth0_gateway" ]; then
        if [ -f /etc/eth0_gateway ]; then
            eth0_gateway=$(cat /etc/eth0_gateway)
        else
            echo "No gateway found for eth0, and /etc/eth0_gateway file does not exist." >> /tmp/rds_custom_init.log
            exit 0
        fi
    fi
    if [ -z "$eth1_ip" ] && ip address show | grep -q "eth1"; then
        if lsb_release -a 2>/dev/null | grep -q -e "Ubuntu 16.04" -e "Debian"; then
          sed -i 's/eth0/eth1/g' /etc/network/interfaces
          echo "auto eth0" >> /etc/network/interfaces
          echo "iface eth0 inet dhcp" >> /etc/network/interfaces
          sudo systemctl restart networking
          flag=1
          echo "UP ETH1 FOR UBUNTU 16.04 or Debian, $(date)" >> /tmp/rds_custom_init.log
        else   
          HWADDR=$(ip address show eth1 | grep "link/ether" | awk "{print \$2}")
          echo -e "DEVICE=eth1\nBOOTPROTO=dhcp\nONBOOT=yes\nTYPE=Ethernet\nUSERCTL=yes\nPEERDNS=no\nIPV6INIT=no\nPERSISTENT_DHCLIENT=yes\nHWADDR=$HWADDR\nDEFROUTE=yes" | tee /etc/sysconfig/network-scripts/ifcfg-eth1 > /dev/null
          service network restart
          echo "UP ETH1, $(date)" >> /tmp/rds_custom_init.log
        fi
    fi
    eth1_ip=$(ip address show eth1 | grep "inet " | awk "{print \$2}" | cut -d'/' -f1)
    if [ "$flag" -eq 0 ] && lsb_release -a 2>/dev/null | grep -q "Ubuntu 16.04"; then
      sudo systemctl restart networking
      echo "UP ETH1 FOR UBUNTU 16.04, $(date)" >> /tmp/rds_custom_init.log
    fi
    if [ -n "$eth1_ip" ]; then
        ip route add 100.100.0.0/16 via $eth0_gateway dev eth0 2> /dev/null
        keep_route="100.100.0.0/16 via $eth0_gateway dev eth0"
        routes=$(ip route | grep "dev eth0")
        echo "$routes" | while read -r route; do
          if [[ "$route" != "$keep_route" ]]; then
            prefix=$(echo "$route" | awk "{print \$1}")
            ip route delete $prefix dev eth0 > /dev/null
          fi
        done
        echo "DELETE IP ROUTE FOR ETH0, $(date)" >> /tmp/rds_custom_init.log
        eth1_gateway=$(ip route | grep "default via " | grep "eth1" | awk "{print \$3}")
        if ip route | grep -q "100.100.2.136 via $eth1_gateway dev eth1"; then
          ip route delete 100.100.2.136 via "$eth1_gateway" dev eth1
        fi
        if ip route | grep -q "100.100.2.138 via $eth1_gateway dev eth1"; then
          ip route delete 100.100.2.138 via "$eth1_gateway" dev eth1
        fi
        ip route add 100.100.2.136 via $eth1_gateway dev eth1 2> /dev/null
        ip route add 100.100.2.138 via $eth1_gateway dev eth1 2> /dev/null
        ip route delete default via $eth1_gateway dev eth1 2> /dev/null
        ip route add default via $eth1_gateway dev eth1 metric 0 2> /dev/null
    fi
    echo "RDS CUSTOM INIT FINISHED, $(date)" >> /tmp/rds_custom_init.log
  2. Execute o comando chmod a+x /etc/rds_custom_init.sh para conceder permissões de execução ao script.

  3. Edite o arquivo /etc/rc.local para configurar o script rds_custom_init.sh para execução na inicialização.

    • Se o sistema operacional não for Ubuntu, adicione /etc/rds_custom_init.sh ao arquivo /etc/rc.local e conceda as permissões necessárias ao arquivo /etc/rc.local.

      chmod 777 /etc/rc.local
    • Para sistemas operacionais Ubuntu, configure e ative o service rc-local.service.

      1. Edite o arquivo /lib/systemd/system/rc-local.service e adicione o seguinte conteúdo:

        [Install]
        WantedBy=multi-user.target
      2. Configure o service rc-local.service para execução na inicialização.

        # Configure the service to run on startup.
        systemctl enable rc-local.service
        # Check whether the service is configured to run on startup.
        systemctl is-enabled rc-local.service
      3. Inicie o service rc-local.service.

        # Start the service. 
        systemctl start rc-local.service
        # Check the service status.
        systemctl status rc-local.service
      Nota

      O Ubuntu 20.04, 22.04 e 24.04 suportam configuração automática para ENIs secundárias anexadas por padrão. Se a configuração automática falhar, siga as etapas abaixo para configurar manualmente a ENI.

      Manual configuration steps

      1. Execute o comando a seguir para abrir o arquivo de configuração da ENI secundária.

        vi /etc/netplan/eth1-netcfg.yaml
      2. Adicione a seguinte configuração para a ENI secundária ao arquivo de configuração da interface de rede, salve e feche o arquivo.

        network:
          version: 2
          renderer: networkd
          ethernets:
            eth1:
              dhcp4: yes
              dhcp6: no
      3. Execute o comando a seguir para aplicar a configuração.

        netplan apply

Referências