All Products
Search
Document Center

:Pengenalan Jaringan RDS Custom

Last Updated:Jul 28, 2026

Topik ini menjelaskan konfigurasi jaringan default RDS Custom dan cara mengonfigurasi inisialisasi jaringan untuk custom image.

Ikhtisar jaringan RDS Custom

Instans RDS Custom dalam mode dual-NIC memiliki dua antarmuka jaringan secara default: antarmuka jaringan utama (biasanya bernama eth0) dan Elastic Network Interface (ENI) (biasanya bernama eth1).

  • eth0: Antarmuka ini dibuat di VPC khusus Produk RDS Custom. Karena pembatasan security group, hanya lalu lintas keluar dari blok CIDR management ECS 100.100.0.0/16 yang diizinkan melalui antarmuka eth0.

    Catatan

    Alamat IP 100.100.2.136 dan 100.100.2.138 adalah alamat IP DNS internal. Lalu lintas ke dan dari alamat tersebut harus melewati eth1.

  • eth1: Antarmuka ini dibuat di VPC Anda. Biasanya, seluruh lalu lintas—kecuali lalu lintas dari blok CIDR management ECS—melewati eth1. Anda dapat mengelola lalu lintas masuk dan keluar menggunakan security group.

Setelah Anda menghubungkan ke instans RDS Custom, antarmuka jaringan, tabel rute, dan aturan firewall iptables-nya biasanya sebagai berikut:

  • Jalankan perintah ip address show untuk melihat status antarmuka jaringan instans.

    image

  • Jalankan perintah route -n untuk melihat tabel rute instans.

    Lalu lintas hanya melewati antarmuka jaringan eth1.

    image

  • Jalankan perintah iptables -L -n untuk melihat konfigurasi iptables default instans.

    image

Jika Anda mengubah tabel rute, aturan firewall iptables, atau konfigurasi antarmuka jaringan (misalnya merestart eth0) pada instans RDS Custom dan kehilangan konektivitas, restart instans untuk menginisialisasi ulang jaringan RDS Custom.

Peringatan

Instans RDS Custom menggunakan skrip /etc/rds_custom_init.sh untuk inisialisasi jaringan. Jangan hapus skrip ini. Jika dihapus, inisialisasi akan gagal.

Konfigurasi inisialisasi jaringan untuk custom image

Saat Anda membuat instans RDS Custom dari custom image, RDS Custom secara otomatis mengonfigurasi skrip /etc/rds_custom_init.sh untuk inisialisasi jaringan pada sebagian besar public image. Image yang didukung mencakup Alibaba Cloud Linux 3, Alibaba Cloud Linux 2, CentOS 8, CentOS 7, Debian 11, Debian 10.5, AlmaLinux 9.2, Ubuntu 22, Ubuntu 20, dan Ubuntu 16. Untuk menggunakan custom image lainnya, Anda harus membuat skrip rds_custom_init.sh secara manual pada instans sumber sebelum membuat custom image.

Fungsi utama skrip rds_custom_init.sh adalah sebagai berikut:

  1. Untuk sistem yang tidak dapat mengaktifkan ENI secara otomatis, skrip ini mengonfigurasi jaringan untuk eth1 dan menjalankan layanan terkait.

  2. Skrip ini memodifikasi konfigurasi routing agar rute default mengarah ke eth1 dan blok CIDR management ECS 100.100.0.0/16 mengarah ke eth0.

  3. Skrip ini memodifikasi konfigurasi routing agar alamat IP DNS internal 100.100.2.136 dan 100.100.2.138 mengarah ke eth1.

Penting

Saat instans RDS Custom dinyalakan, sistem mencatat gateway eth0 di /etc/eth0_gateway dan secara otomatis mengonfigurasi skrip /etc/rds_custom_init.sh untuk sebagian besar public image. Jika Anda berencana melakukan inisialisasi terkait jaringan pada instans RDS Custom, pastikan Anda menjalankan skrip /etc/rds_custom_init.sh secara manual setelah inisialisasi jaringan Anda selesai. Jika eth1 tidak berfungsi (misalnya, alamat IP-nya tidak terdeteksi), hubungi kami atau konfigurasikan jaringan agar eth1 berjalan dengan baik.

Buat skrip secara manual dan konfigurasikan agar dijalankan saat startup

  1. Buat skrip rds_custom_init.sh di folder /etc. Isi skripnya adalah sebagai berikut:

    skrip 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}")
    # 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. Jalankan perintah chmod a+x /etc/rds_custom_init.sh untuk memberikan izin eksekusi pada skrip tersebut.

  3. Edit file /etc/rc.local untuk mengonfigurasi skrip rds_custom_init.sh agar dijalankan saat startup.

    • Jika sistem operasinya bukan Ubuntu, tambahkan /etc/rds_custom_init.sh ke file /etc/rc.local dan berikan izin yang diperlukan pada file /etc/rc.local.

      chmod 777 /etc/rc.local
    • Jika sistem operasinya Ubuntu, konfigurasikan dan aktifkan layanan rc-local.service.

      1. Edit file /lib/systemd/system/rc-local.service dan tambahkan konten berikut:

        [Install]
        WantedBy=multi-user.target
      2. Konfigurasikan layanan rc-local.service agar dijalankan saat startup.

        # 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. Jalankan layanan rc-local.service.

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

      Ubuntu 20.04, 22.04, dan 24.04 mendukung konfigurasi otomatis untuk ENI sekunder yang disambungkan secara default. Jika konfigurasi otomatis gagal, lakukan langkah-langkah berikut untuk mengonfigurasi ENI secara manual.

      Langkah-langkah konfigurasi manual

      1. Jalankan perintah berikut untuk membuka file konfigurasi ENI sekunder.

        vi /etc/netplan/eth1-netcfg.yaml
      2. Tambahkan konfigurasi berikut untuk ENI sekunder ke file konfigurasi antarmuka jaringan, lalu simpan dan tutup file tersebut.

        network:
          version: 2
          renderer: networkd
          ethernets:
            eth1:
              dhcp4: yes
              dhcp6: no
      3. Jalankan perintah berikut untuk menerapkan konfigurasi.

        netplan apply

Referensi