すべてのプロダクト
Search
ドキュメントセンター

:RDS Custom のネットワーキングの概要

最終更新日:Jul 28, 2026

このトピックでは、RDS Custom のデフォルトのネットワーク設定と、カスタムイメージのネットワーク初期化を設定する方法について説明します。

RDS Custom のネットワーキング概要

デュアル NIC モードの RDS Custom インスタンスには、デフォルトで2つのネットワークインターフェースがあります。プライマリネットワークインターフェース (通常は eth0) と Elastic Network Interface (ENI) (通常は eth1) です。

  • eth0: このインターフェイスは、RDS Custom プロダクト専用の VPC に作成されます。セキュリティグループの制限により、eth0 インターフェイスを通過できるのは、ECS 管理 CIDR ブロック 100.100.0.0/16 からのアウトバウンドトラフィックのみです。

    説明

    IP アドレス 100.100.2.136 および 100.100.2.138 は内部 DNS IP アドレスです。これらのアドレスとの間のトラフィックは eth1 を通過する必要があります。

  • eth1: このインターフェイスは、ご利用の VPC に作成されます。通常、ECS 管理 CIDR ブロックからのトラフィックを除くすべてのトラフィックは eth1 を通過します。セキュリティグループを使用して、インバウンドおよびアウトバウンドトラフィックを管理できます。

RDS Custom インスタンスに接続すると、そのネットワークインターフェース、ルートテーブル、および iptables ファイアウォールルールは通常、次のようになります。

  • ip address show コマンドを実行して、インスタンスのネットワークインターフェースの状態を表示します。

    image

  • route -n コマンドを実行して、インスタンスのルートテーブルを表示します。

    トラフィックは eth1 ネットワークインターフェースのみを通過します。

    image

  • iptables -L -n コマンドを実行して、インスタンスのデフォルトの iptables 設定を表示します。

    image

RDS Custom インスタンスでルートテーブル、iptables ファイアウォールルール、またはネットワークインターフェース設定 (eth0 の再起動など) を変更して接続が失われた場合は、インスタンスを再起動して RDS Custom ネットワークを初期化してください。

警告

RDS Custom インスタンスは、ネットワークの初期化に /etc/rds_custom_init.sh スクリプトを使用します。このスクリプトは削除しないでください。削除すると、初期化に失敗します。

カスタムイメージのネットワーク初期化の設定

カスタムイメージから RDS Custom インスタンスを作成すると、RDS Custom はほとんどのパブリックイメージでネットワーク初期化用の /etc/rds_custom_init.sh スクリプトを自動的に設定します。サポートされているイメージには、Alibaba Cloud Linux 3、Alibaba Cloud Linux 2、CentOS 8、CentOS 7、Debian 11、Debian 10.5、AlmaLinux 9.2、Ubuntu 22、Ubuntu 20、Ubuntu 16 が含まれます。他のカスタムイメージを使用するには、カスタムイメージを作成する前に、ソースイメージインスタンスで rds_custom_init.sh スクリプトを手動で作成する必要があります。

rds_custom_init.sh スクリプトの主な機能は次のとおりです。

  1. ENI を自動的に有効化できないシステムの場合、eth1 のネットワークを設定し、関連サービスを起動します。

  2. ルーティング設定を変更して、デフォルトルートを eth1 に、ECS 管理 CIDR ブロック 100.100.0.0/16 を eth0 に向けます。

  3. ルーティング設定を変更して、内部 DNS IP アドレス 100.100.2.136 および 100.100.2.138 を eth1 に向けます。

重要

RDS Custom インスタンスが起動すると、システムは eth0 のゲートウェイを /etc/eth0_gateway に記録し、ほとんどのパブリックイメージに対して /etc/rds_custom_init.sh スクリプトを自動的に設定します。RDS Custom インスタンスでネットワーク関連の初期化を実行する予定がある場合は、ネットワーク初期化が完了した後に /etc/rds_custom_init.sh スクリプトを手動で実行してください。eth1 が機能していない場合 (たとえば、IP アドレスが検出されない場合)、お問い合わせいただくか、ネットワークを設定して eth1 が正常に動作するようにしてください。

スクリプトの手動作成と起動時実行の設定

  1. /etc フォルダーに rds_custom_init.sh スクリプトを作成します。スクリプトの内容は次のとおりです。

    rds_custom_init.sh スクリプト

    #!/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}")
    # 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. chmod a+x /etc/rds_custom_init.sh コマンドを実行して、スクリプトに実行権限を付与します。

  3. /etc/rc.local ファイルを編集して、rds_custom_init.sh スクリプトが起動時に実行されるように設定します。

    • オペレーティングシステムが Ubuntu でない場合は、/etc/rds_custom_init.sh/etc/rc.local ファイルに追加し、/etc/rc.local ファイルに必要な権限を付与します。

      chmod 777 /etc/rc.local
    • オペレーティングシステムが Ubuntu の場合は、rc-local.service サービスを設定して有効にします。

      1. /lib/systemd/system/rc-local.service ファイルを編集し、次の内容を追加します。

        [Install]
        WantedBy=multi-user.target
      2. rc-local.service サービスが起動時に実行されるように設定します。

        # サービスが起動時に実行されるように設定します。
        systemctl enable rc-local.service
        # サービスが起動時に実行されるように設定されているか確認します。
        systemctl is-enabled rc-local.service
      3. rc-local.service サービスを開始します。

        # サービスを開始します。 
        systemctl start rc-local.service
        # サービスステータスを確認します。
        systemctl status rc-local.service
      説明

      Ubuntu 20.04、22.04、および 24.04 は、デフォルトでアタッチされたセカンダリ ENI の自動設定をサポートしています。自動設定に失敗した場合は、次の手順を実行して ENI を手動で設定してください。

      手動設定手順

      1. 次のコマンドを実行して、セカンダリ ENI 設定ファイルを開きます。

        vi /etc/netplan/eth1-netcfg.yaml
      2. 次のセカンダリ ENI の設定をネットワークインターフェース設定ファイルに追加し、ファイルを保存して閉じます。

        network:
          version: 2
          renderer: networkd
          ethernets:
            eth1:
              dhcp4: yes
              dhcp6: no
      3. 次のコマンドを実行して設定を適用します。

        netplan apply

参考資料