Mengelola tujuan yang tumpang tindih

Halaman ini menjelaskan cara administrator jaringan produsen dapat mengelola tumpang-tindih tujuan di jaringan Virtual Private Cloud (VPC) yang menggunakan antarmuka Private Service Connect.

Google Cloud memastikan bahwa rentang alamat IP subnet yang ditetapkan ke antarmuka jaringan pada instance virtual machine (VM) yang sama tidak boleh memiliki rentang alamat IP yang tumpang-tindih. Namun, subnet di jaringan VPC konsumen dan produsen dapat tumpang-tindih, seperti yang ditunjukkan pada gambar 1. Saat menggunakan antarmuka Private Service Connect dengan rentang alamat IP tujuan yang tumpang tindih, konfigurasi tambahan diperlukan untuk memastikan bahwa traffic mencapai tujuan yang benar di jaringan yang dimaksud.

Perintah yang dijelaskan di halaman ini menunjukkan cara memperbarui perutean sementara untuk VM yang menggunakan sistem operasi Debian. Untuk mengupdate VM secara permanen, atau untuk mengonfigurasi VM yang memiliki sistem operasi berbeda, baca dokumentasi publik sistem operasi.

Gambar 1. Subnet-a di jaringan VPC produsen tumpang-tindih dengan subnet-c di jaringan VPC konsumen karena kedua subnet menggunakan rentang alamat IP yang sama. VM produser harus dapat menjangkau 10.0.1.5 di kedua jaringan.

Anda dapat mengelola rentang alamat IP tujuan yang tumpang tindih dengan cara berikut, yang dijelaskan secara mendetail di halaman ini:

Pendekatan berikut juga dapat digunakan untuk mengelola tujuan yang tumpang tindih, tetapi pendekatan tersebut tidak dijelaskan di halaman ini:

  • Gunakan library soket dan bind() untuk mengontrol perutean.
  • Gunakan ruang alamat IP yang benar-benar tidak tumpang-tindih untuk jaringan produsen.
  • Jika alamat IP yang tumpang tindih di sisi produsen hanya untuk endpoint API pihak pertama, Anda dapat Mengonfigurasi Akses Google Pribadi untuk host lokal.
  • Gunakan eBPF untuk menyesuaikan aturan perutean lanjutan berdasarkan kriteria selain alamat IP. Pendekatan ini direkomendasikan jika opsi sebelumnya tidak memungkinkan.

Mengelola alamat tujuan yang tumpang tindih menggunakan namespace jaringan

Anda dapat mengelola alamat tujuan yang tumpang tindih dengan menggunakan namespace jaringan. Pendekatan ini berfungsi dengan baik saat beberapa aplikasi di VM produsen hanya perlu mengakses workload konsumen, dan aplikasi lain di VM produsen hanya perlu mengakses workload produsen.

Untuk mengelola alamat tujuan yang tumpang tindih menggunakan namespace jaringan, lakukan hal berikut:

  1. Hubungkan ke VM yang memiliki antarmuka Private Service Connect.

  2. Jalankan perintah berikut:

    ip address
    

    Dalam daftar antarmuka jaringan, temukan dan catat nama OS tamu untuk antarmuka Private Service Connect Anda, misalnya ens5. Nama ini dikaitkan dengan alamat IP antarmuka Private Service Connect Anda.

  3. Buat namespace jaringan untuk traffic yang terikat ke konsumen:

    sudo ip netns add consumer-ns
    
  4. Pindahkan antarmuka Private Service Connect ke namespace jaringan konsumen. Jalankan perintah berikut secara individual:

    sudo ip link set OS_INTERFACE_NAME netns consumer-ns
    
    sudo ip netns exec consumer-ns ip link set OS_INTERFACE_NAME up
    

    Ganti OS_INTERFACE_NAME dengan nama OS tamu untuk antarmuka Private Service Connect yang Anda temukan pada langkah 2—misalnya, ens5.

  5. Pulihkan alamat IP antarmuka Private Service Connect:

    sudo ip netns exec consumer-ns ip addr add INTERFACE_IP/32 dev OS_INTERFACE_NAME
    

    Ganti INTERFACE_IP dengan alamat IP antarmuka Private Service Connect Anda.

  6. Validasi perubahan pada antarmuka Private Service Connect Anda:

    sudo ip netns exec consumer-ns ip a
    

    Pastikan nama OS tamu antarmuka Private Service Connect Anda tercantum dalam output perintah. Pastikan antarmuka memiliki alamat IP yang benar.

  7. Tambahkan rute ke alamat IP gateway:

    sudo ip netns exec consumer-ns ip route add GATEWAY_IP dev OS_INTERFACE_NAME scope link
    

    Ganti GATEWAY_IP dengan alamat IP gateway default untuk subnet antarmuka Private Service Connect Anda.

  8. Tambahkan rute default untuk antarmuka Private Service Connect Anda:

    sudo ip netns exec consumer-ns ip route add default via GATEWAY_IP dev OS_INTERFACE_NAME
    
  9. Validasi tabel pemilihan rute untuk namespace consumer-ns:

    sudo ip netns exec consumer-ns ip route
    

    Pastikan tabel perutean memiliki entri dengan format berikut:

    default via GATEWAY_IP dev OS_INTERFACE_NAME
    
  10. Untuk memastikan bahwa antarmuka Anda dapat menjangkau VM di setiap bagian rentang alamat IP yang tumpang tindih, lakukan hal berikut:

    1. Pastikan aturan firewall dikonfigurasi untuk mengizinkan traffic ICMP masuk ke VM target Anda.

    2. Kirim ping ICMP dari VM antarmuka Anda ke VM konsumen yang berada dalam rentang alamat IP yang tumpang tindih. Gunakan namespace konsumen Anda:

      sudo ip netns exec consumer-ns ping CONSUMER_IP_ADDRESS
      

      Ganti CONSUMER_IP_ADDRESS dengan alamat IP VM konsumen dari rentang alamat IP yang tumpang tindih.

    3. Kirim ping ICMP dari VM antarmuka Anda ke VM produsen yang berada dalam rentang alamat IP yang tumpang tindih. Gunakan namespace default:

      ping PRODUCER_IP_ADDRESS
      

      Ganti PRODUCER_IP_ADDRESS dengan alamat IP VM produsen dari rentang alamat IP yang tumpang tindih.

Mengelola alamat tujuan yang tumpang tindih dengan pemilihan rute berbasis kebijakan

Anda dapat mengelola alamat tujuan yang tumpang tindih dengan mengonfigurasi pemilihan rute berbasis kebijakan di sistem operasi VM antarmuka Anda. Pendekatan ini berfungsi dengan baik saat aplikasi yang sama perlu mengakses workload yang ada di jaringan VPC konsumen dan produsen, tetapi Anda harus mengulangi prosedur untuk setiap port berbeda yang ingin Anda jangkau di Rentang IP.

Saat menyiapkan pemilihan rute berbasis kebijakan untuk mengelola tujuan yang tumpang tindih, Anda memilih port target yang akan digunakan untuk aplikasi konsumen. Traffic yang terikat ke salah satu port ini mengalir melalui antarmuka Private Service Connect Anda ke subnet konsumen, sementara traffic lainnya mengalir melalui antarmuka default ke subnet produsen.

  1. Hubungkan ke VM antarmuka Private Service Connect Anda.

  2. Jika perintah iproute2 tidak tersedia, instal terlebih dulu.

  3. Pastikan Anda dapat menulis ke file berikut: /etc/iproute2/rt_tables

  4. Buat tabel rute. Tambahkan rute default untuk antarmuka Private Service Connect Anda:

    echo "200 pscnet" >> /etc/iproute2/rt_tables \
    sudo ip route add default dev OS_INTERFACE_NAME table pscnet
    

    Ganti OS_INTERFACE_NAME dengan nama OS tamu antarmuka Private Service Connect Anda, misalnya ens5.

  5. Tambahkan rute ke rentang subnet konsumen yang tumpang tindih melalui gateway default Anda:

    sudo ip route add CONSUMER_SUBNET_RANGE via GATEWAY_IP dev OS_INTERFACE_NAME table pscnet
    

    Ganti kode berikut:

    • CONSUMER_SUBNET_RANGE: rentang alamat IP subnet konsumen Anda.
    • GATEWAY_IP: Alamat IP gateway default untuk subnet antarmuka Private Service Connect Anda.
  6. Perbarui tabel rute agar paket keluar dari VM ini menggunakan alamat IP antarmuka Anda sebagai alamat IP sumbernya:

    sudo ip route add GATEWAY_IP src INTERFACE_IP dev OS_INTERFACE_NAME table pscnet
    

    Ganti INTERFACE_IP dengan alamat IP antarmuka Private Service Connect Anda.

  7. Tambahkan aturan IP yang berlaku untuk semua traffic yang ditujukan untuk port target aplikasi konsumen Anda:

    sudo ip rule add dport CONSUMER_PORT table pscnet
    

    Ganti CONSUMER_PORT dengan port yang telah dikonfigurasi untuk traffic ke VM konsumen Anda.

  8. Untuk memastikan bahwa paket dirutekan ke VM yang benar berdasarkan port tujuannya, lakukan hal berikut:

    1. Buat VM pengujian di jaringan produsen dan konsumen yang menggunakan alamat IP yang sama dari rentang yang tumpang tindih.
    2. Menyiapkan server HTTP di setiap VM pengujian. Konfigurasikan VM uji konsumen untuk memproses port yang telah Anda siapkan untuk aplikasi konsumen. Mengonfigurasi VM uji produsen untuk memproses port yang berbeda dengan port yang Anda siapkan untuk aplikasi konsumen.
    3. Pastikan aturan firewall dikonfigurasi untuk mengizinkan traffic HTTP ke VM pengujian Anda.
    4. Dengan menggunakan port yang telah dikonfigurasi untuk aplikasi konsumen, buat permintaan GET ke alamat IP pengujian, lalu verifikasi bahwa Anda telah mencapai instance yang benar:

      curl TEST_IP_ADDRESS:CONSUMER_PORT
      

      Ganti kode berikut:

      • TEST_IP_ADDRESS: alamat IP VM pengujian Anda.
      • CONSUMER_PORT: port aplikasi konsumen Anda.
    5. Dengan menggunakan port yang telah dikonfigurasi untuk VM uji produksi Anda, buat permintaan GET ke alamat IP pengujian, lalu verifikasi bahwa Anda telah mencapai instance yang benar:

      curl IP_ADDRESS:PRODUCER_PORT
      

      Ganti kode berikut:

      • IP_ADDRESS: alamat IP VM pengujian Anda.
      • PRODUCER_PORT: port yang telah Anda konfigurasikan untuk VM uji produksi.