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

:RDS Custom ネットワークの概要

最終更新日:Jun 21, 2026

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

RDS Custom インスタンスのデフォルトネットワーク設定

デフォルトでは、RDS Custom インスタンスにはデュアル NIC モードで 2 つのネットワークインターフェイスコントローラー (NIC) が設定されています。プライマリ NIC と Elastic Network Interface (ENI) です。ほとんどの場合、プライマリ NIC は eth0、ENI は eth1 という名前です。

  • eth0:管理用の Virtual Private Cloud (VPC) 内に作成されます。セキュリティグループの制限により、eth0 を経由できるのは Elastic Compute Service (ECS) インスタンスの管理 CIDR ブロックである 100.100.0.0/16 からのトラフィックのみです。

    説明

    IP アドレス 100.100.2.136 と 100.100.2.138 は、Private DNS サービスの IP アドレスです。これらの IP アドレスからのトラフィックは eth1 を経由します。

  • eth1:ユーザーの VPC 内に作成されます。ほとんどの場合、ECS インスタンスの管理 CIDR ブロックからのトラフィックを除き、すべてのトラフィックは eth1 を経由します。セキュリティグループは、インバウンドトラフィックとアウトバウンドトラフィックを管理するために使用されます。

以下の図は、インスタンスに接続した後の RDS Custom インスタンスの NIC、ルートテーブル、iptables ファイアウォールルールに関する情報を示しています。詳細については、「RDS Custom インスタンスへの接続」をご参照ください。

  • ip address show コマンドを実行して、インスタンス上の NIC のステータスを確認します。

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00: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:3e:10:32:d8 brd ff:ff:ff:ff:ff:ff
        inet 20.xxx.xxx.xxx/16 brd 20.xxx.xxx.xxx scope global dynamic eth0
           valid_lft 315357595sec preferred_lft 315357595sec
        inet6 fe80::xxx:xxx:xxx:xxx/64 scope link
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:48:f2:e7 brd ff:ff:ff:ff:ff:ff
        inet 172.xxx.xxx.xxx/20 brd 172.xxx.xxx.xxx scope global dynamic eth1
           valid_lft 315357597sec preferred_lft 315357597sec
        inet6 fe80::xxx:xxx:xxx:xxx/64 scope link
           valid_lft forever preferred_lft forever
  • route -n コマンドを実行して、インスタンスのルートテーブルを表示します。

    以下の出力は、デフォルトルートが eth1 に向けられ、管理 CIDR ブロック (100.100.0.0/16) へのトラフィックが eth0 に向けられていることを示しています。

    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         172.xxx.xxx.xxx 0.0.0.0         UG    0      0        0 eth1
    100.100.0.0     20.xxx.xxx.xxx  255.255.0.0     UG    0      0        0 eth0
    100.100.2.136   172.xxx.xxx.xxx 255.255.255.255 UGH   0      0        0 eth1
    100.100.2.138   172.xxx.xxx.xxx 255.255.255.255 UGH   0      0        0 eth1
    169.xxx.xxx.xxx 0.0.0.0         255.255.0.0     U     1003   0        0 eth1
    172.xxx.xxx.xxx 0.0.0.0         255.255.240.0   U     0      0        0 eth1
  • iptables -L -n コマンドを実行して、インスタンスのデフォルトの iptables 設定を表示します。

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination

ルートテーブル、iptables ファイアウォールルール、eth0 の再起動を含む NIC 設定を管理した後に RDS Custom インスタンスへの接続に失敗した場合は、インスタンスを再起動してインスタンスのネットワーク環境を初期化できます。詳細については、「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. Private DNS サービスの IP アドレス 100.100.2.136 と 100.100.2.138 を eth1 に向けるようにルート設定を変更します。

重要

RDS Custom インスタンスが起動すると、システムは eth0 のゲートウェイを /etc/eth0_gateway ファイルに記録し、ほとんどのパブリックイメージに対して /etc/rds_custom_init.sh スクリプトを自動的に設定します。インスタンスでネットワーク関連の初期化を実行する場合は、初期化が完了した後に /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、Ubuntu 22.04、Ubuntu 24.04 は、自動設定でバインドされたセカンダリ 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

関連トピック