All Products
Search
Document Center

:Pengenalan Jaringan Kustom RDS

Last Updated:Jun 21, 2026

Topik ini menjelaskan pengaturan jaringan default untuk instans RDS Custom serta cara menginisialisasi lingkungan jaringan untuk custom image.

Pengaturan jaringan default untuk instans RDS Custom

Secara default, dua network interface controller (NIC) dikonfigurasi untuk instans RDS Custom dalam mode dual-NIC: NIC primer dan elastic network interface (ENI). Dalam kebanyakan kasus, NIC primer diberi nama eth0 dan ENI diberi nama eth1.

  • eth0: dibuat di virtual private cloud (VPC) manajemen. Hanya lalu lintas dari blok CIDR manajemen 100.100.0.0/16 instans Elastic Compute Service (ECS) yang dapat mengalir melalui eth0 karena batasan security group.

    Catatan

    Alamat IP 100.100.2.136 dan 100.100.2.138 adalah alamat IP layanan Private DNS. Lalu lintas dari alamat IP tersebut mengalir melalui eth1.

  • eth1: dibuat di VPC pengguna. Dalam kebanyakan kasus, seluruh lalu lintas mengalir melalui eth1, kecuali lalu lintas dari blok CIDR manajemen instans ECS. Security group digunakan untuk mengelola lalu lintas inbound dan outbound.

Gambar berikut menunjukkan informasi tentang NIC, tabel rute, dan aturan firewall iptables pada instans RDS Custom Anda setelah terhubung ke instans tersebut. Untuk informasi lebih lanjut, lihat Connect to an RDS Custom instance.

  • Jalankan perintah ip address show untuk memeriksa status NIC pada instans.

    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
  • Jalankan perintah route -n untuk melihat tabel rute instans.

    Lalu lintas hanya mengalir melalui eth1.

    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
  • Jalankan perintah iptables -L -n untuk melihat konfigurasi iptables default instans.

    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

Jika Anda gagal terhubung ke instans RDS Custom setelah mengelola tabel rute, aturan firewall iptables, dan konfigurasi NIC—termasuk restart eth0—Anda dapat me-restart instans untuk menginisialisasi ulang lingkungan jaringannya. Untuk informasi lebih lanjut, lihat Restart an RDS Custom instance.

Peringatan

Instans RDS Custom menggunakan skrip /etc/rds_custom_init.sh untuk melakukan inisialisasi jaringan. Jangan menghapus skrip ini, atau inisialisasi jaringan akan gagal.

Inisialisasi lingkungan jaringan untuk custom image

Saat Anda membuat instans RDS Custom dari custom image, RDS Custom secara otomatis mengonfigurasi skrip inisialisasi jaringan /etc/rds_custom_init.sh untuk 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 di instans sumber sebelum membuat custom image tersebut.

Skrip rds_custom_init.sh menyediakan fungsi utama berikut:

  1. Menggunakan konfigurasi jaringan untuk eth1 dan menjalankan layanan terkait pada sistem yang tidak dapat mengaktifkan ENI secara otomatis.

  2. Memodifikasi konfigurasi rute agar rute default mengarah ke eth1 dan blok CIDR manajemen 100.100.0.0/16 instans ECS mengarah ke eth0.

  3. Memodifikasi konfigurasi rute agar alamat IP 100.100.2.136 dan 100.100.2.138 layanan Private DNS mengarah ke eth1.

Penting

Saat instans RDS Custom dinyalakan, sistem mencatat gateway eth0 di file /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 tersebut, pastikan Anda menjalankan skrip /etc/rds_custom_init.sh secara manual setelah inisialisasi Anda selesai. Jika antarmuka eth1 menjadi tidak tersedia (misalnya, alamat IP-nya tidak dikenali), hubungi kami atau konfigurasi ulang jaringan untuk memulihkan fungsionalitas eth1.

Buat skrip secara manual dan konfigurasikan agar skrip dijalankan saat startup

  1. Buat skrip rds_custom_init.sh di direktori /etc dengan konten 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.

    • Untuk sistem operasi selain Ubuntu, tambahkan /etc/rds_custom_init.sh ke file /etc/rc.local dan berikan izin yang diperlukan ke /etc/rc.local.

      chmod 777 /etc/rc.local
    • Untuk sistem operasi Ubuntu, konfigurasikan dan aktifkan rc-local.service.

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

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

        # Configure the service to run at startup.
        systemctl enable rc-local.service
        # Check whether the service is configured to run at startup.
        systemctl is-enabled rc-local.service
      3. Jalankan rc-local.service.

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

      Secara default, Ubuntu 20.04, Ubuntu 22.04, dan Ubuntu 24.04 mendukung secondary ENI yang terikat dalam konfigurasi otomatis. Jika konfigurasi otomatis gagal, lakukan langkah-langkah berikut.

      Konfigurasi manual

      1. Jalankan perintah berikut untuk membuka file konfigurasi secondary ENI:

        vi /etc/netplan/eth1-netcfg.yaml
      2. Tambahkan informasi tentang secondary ENI ke file konfigurasi tersebut. Kemudian, simpan dan keluar dari file konfigurasi.

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

        netplan apply

Topik terkait