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.
Anda dapat mengelola rentang alamat IP tujuan yang tumpang tindih dengan cara berikut, yang dijelaskan secara mendetail di halaman ini:
- Gunakan namespace jaringan untuk membuat tabel perutean terpisah bagi setiap aplikasi.
- Terapkan pemilihan rute berbasis kebijakan pada VM antarmuka Anda untuk mengarahkan traffic berdasarkan port target.
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:
Hubungkan ke VM yang memiliki antarmuka Private Service Connect.
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.Buat namespace jaringan untuk traffic yang terikat ke konsumen:
sudo ip netns add consumer-ns
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
.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.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.
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.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
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
Untuk memastikan bahwa antarmuka Anda dapat menjangkau VM di setiap bagian rentang alamat IP yang tumpang tindih, lakukan hal berikut:
Pastikan aturan firewall dikonfigurasi untuk mengizinkan traffic
ICMP
masuk ke VM target Anda.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.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.
Jika perintah
iproute2
tidak tersedia, instal terlebih dulu.Pastikan Anda dapat menulis ke file berikut:
/etc/iproute2/rt_tables
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, misalnyaens5
.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.
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.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.Untuk memastikan bahwa paket dirutekan ke VM yang benar berdasarkan port tujuannya, lakukan hal berikut:
- Buat VM pengujian di jaringan produsen dan konsumen yang menggunakan alamat IP yang sama dari rentang yang tumpang tindih.
- 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.
- Pastikan aturan firewall dikonfigurasi untuk mengizinkan traffic HTTP ke VM pengujian Anda.
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.
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.