Apabila rangkaian tempatan sampai ke VPC melalui Cloud VPN, destinasi untuk perkhidmatan Compute Engine biasanya ialah alamat dalaman VM. Alamat IPv4 luaran bukan alamat kedua yang boleh anda masukkan ke laluan peribadi yang sama. Kebanyakan kekeliruan dalam bidang ini datang daripada memperlakukan tiga alamat dengan tiga tugas sebagai boleh saling ditukar, jadi mulakan dengan menamakan yang mana digunakan oleh paket tertentu.

Tiga alamat, tiga tugas

Namakan ketiga-tiganya sebelum menyahpepijat mana-mana satu, kerana jawapannya mengubah objek yang akan anda periksa seterusnya.

AddressJob
Cloud VPN endpointwhere the IPsec peers meet
Internal IPthe address your route and firewall must name
External IPv4the platform's inbound mapping, not a guest address

Yang pertama milik terowong. Yang kedua milik reka bentuk laluan dan firewall anda. Yang ketiga milik akses internet masuk dan ia dipetakan, bukan dilekatkan. Reka bentuk yang berfungsi untuk salah satunya tidak memberitahu apa-apa tentang dua yang lain.

Mengapa alamat luaran bukan antara muka kedua

Panduan pengalamatan ialah autoriti tentang cara kebolehcapaian dalaman dan luaran berbeza pada Compute Engine. IPv4 luaran Compute Engine ialah pemetaan satu-ke-satu ke satu-satunya NIC dalaman instans, jadi tetamu tidak pernah melihat antara muka kedua atau alamat kedua pada NIC itu. Apa yang dilaporkan VM dari dalam masih satu alamat dalaman utama.

Itulah sebabnya klien peribadi yang menghalakan melalui terowong ke 10.24.1.7 dan klien yang menyasarkan alamat luaran VM berada pada laluan berbeza. Membuka peraturan firewall untuk alamat awam tidak mengubah apa-apa pada laluan VPC yang mesti membawa trafik terowong, dan menyunting laluan pada tetamu tidak menggerakkan pemetaan platform. Pilih alamat yang dinamakan oleh laluan anda, kemudian periksa hanya objek yang mengawalnya. Disiplin itu menghapuskan sebahagian besar tekaan daripada laluan penyelesaian masalah ini.

Jelajahi laluan dengan gcloud

Mulakan dari instans dan baca kedua-dua alamat daripada objek yang sama, supaya anda tahu yang mana dokumentasi anda bercakap tentang:

gcloud compute instances describe app-1 --zone=europe-west1-b \
  --format="value(networkInterfaces[0].networkIP,networkInterfaces[0].accessConfigs[0].natIP)"

Kemudian sahkan penghalaan dan kebenaran yang sebenarnya menjadi sandaran laluan:

gcloud compute routes list --filter="destRange:10.24.1.0/24"
gcloud compute firewall-rules list --filter="sourceRanges:10.99.0.0/24"
gcloud compute vpn-tunnels describe TUNNEL_NAME --region=europe-west1

Baca julat yang diiklankan dan dipelajari oleh terowong, laluan VPC untuk subnet beban kerja, dan peraturan firewall yang membenarkan sumber tempatan. Ketiga-tiganya mesti sepadan sebelum pendengar pada tetamu menjadi relevan sama sekali.

Kemudian periksa tetamu: adakah perkhidmatan mendengar pada alamat dalaman, dan adakah laluan pulangnya melalui VPC semula? Pendengar yang terikat hanya pada alamat awam akan gagal ujian ini walaupun setiap objek di sisi awan adalah betul.

Awalan awam ialah soalan lain

Tiada satu pun di atas bermakna setiap alamat yang dibawa dalam VPN mesti RFC1918. Rangkaian jauh boleh dinomborkan secara sah daripada ruang awam, asalkan platform menyokong penghalaan dan pengendali memegang kuasa alamat. Itu pilihan reka bentuk biasa.

Ini tidak sama dengan melayan alamat NAT luaran biasa seolah-olah ia alamat subnet dalaman yang lain. Satu ialah awalan yang anda halakan; satu lagi ialah pemetaan yang platform gunakan pada akses masuk.

IPv6 luaran dan susunan alamat yang direka khas mempunyai semantiknya sendiri. Jika pelan anda bergantung pada salah satunya, baca dokumentasi platform untuk ciri itu dan bukan mengitlak daripada kes IPv4. Pemetaan IPv4 ialah kes biasa, bukan satu-satunya, dan setiap pengecualian mempunyai peraturannya sendiri.

Julat yang bertindih ialah masalah lain

Julat peribadi yang bertindih ialah sebab sebenar orang mencapai alamat awam, dan ia adalah tuas yang salah. Menukar destinasi kepada alamat NAT VM tidak menyelesaikan pertindihan; ia mengubah alamat mana yang didakwa oleh paket, tanpa menentukan cara laluan pulang berfungsi.

Selesaikan pertindihan secara sengaja: nomborkan semula, gunakan reka bentuk terjemahan yang disokong, atau halakan melalui rangkaian yang awalannya tidak berlanggar. Setiap satu daripadanya ialah reka bentuk dengan pemilik. Alamat NAT bukan reka bentuk.

Dokumenkan kedua-dua medan secara berasingan

Catat peer terowong dan destinasi beban kerja sebagai dua medan runbook berasingan, masing-masing dengan laluan dan peraturan firewall yang menyokongnya. Terowong IPsec yang naik hanya memberitahu anda kedua-dua pihak bersetuju; ia tidak memberitahu apa-apa tentang alamat mana beban kerja boleh dicapai, dan tidak juga sama ada laluan peribadinya lengkap.

Sahkan dengan klien sebenar di sisi lain: selesaikan nama, sahkan ia mengembalikan alamat dalaman, sambung, dan periksa trafik pulang. Dokumentasi alamat IP Compute Engine ialah rujukan untuk perbezaan dalaman berbanding luaran yang digunakan di atas.

Artikel berkaitan