Memecahkan masalah konfigurasi
Panduan ini dapat membantu Anda memecahkan masalah umum terkait Cloud NAT.
Masalah umum
VM dapat mengakses internet secara tidak terduga, tanpa Cloud NAT
Jika instance virtual machine (VM) atau instance container Anda dapat mengakses internet tanpa Cloud NAT, tetapi Anda tidak menginginkannya, periksa masalah berikut:
Tentukan apakah antarmuka jaringan VM memiliki alamat IP eksternal. Jika antarmuka jaringan memiliki alamat IP eksternal yang ditetapkan ke antarmuka tersebut, Google Cloudakan otomatis melakukan NAT satu-ke-satu untuk paket yang sumbernya cocok dengan alamat IP internal utama antarmuka. Untuk mengetahui informasi selengkapnya, lihat Spesifikasi Cloud NAT.
Untuk menentukan apakah VM memiliki alamat IP eksternal, lihat mengubah atau menetapkan alamat IP eksternal ke instance yang ada.
Pastikan cluster Google Kubernetes Engine (GKE) Anda adalah cluster pribadi. Setiap VM node dalam cluster non-pribadi memiliki alamat IP eksternal, sehingga setiap node dapat menggunakan rute di jaringan Virtual Private Cloud (VPC) Anda yang next hop-nya adalah gateway internet default tanpa mengandalkan Cloud NAT. Untuk mengetahui informasi selengkapnya, termasuk cara cluster non-pribadi berinteraksi dengan gateway Cloud NAT, lihat Interaksi Compute Engine.
Mencantumkan rute di jaringan Virtual Private Cloud Anda, mencari rute yang dapat menyediakan konektivitas internet melalui next hop yang berbeda dengan gateway internet default. Sebagai contoh:
Rute statis yang next hop-nya adalah VM, Load Balancer Jaringan passthrough internal, atau tunnel Cloud VPN mungkin secara tidak langsung menyediakan konektivitas internet. Misalnya, VM next hop atau VM backend untuk Load Balancer Jaringan passthrough internal mungkin memiliki alamat IP eksternal sendiri, atau tunnel Cloud VPN mungkin terhubung ke jaringan yang menawarkan akses internet.
Rute dinamis yang dipelajari dari jaringan lokal oleh Cloud Router di jaringan VPC Anda dapat terhubung ke jaringan yang menawarkan akses internet.
Perlu diingat bahwa rute kustom lainnya di jaringan VPC Anda mungkin memiliki prioritas yang lebih tinggi daripada rute yang next hop-nya adalah gateway internet default. Untuk mengetahui informasi tentang cara Google Cloud mengevaluasi rute, lihat penerapan dan urutan pemilihan rute.
Tidak ada log yang dibuat
- Pastikan logging NAT diaktifkan.
Periksa kembali apakah tampilan log Anda tidak memfilter log yang Anda cari. Untuk mengetahui petunjuknya, lihat Melihat log.
Pastikan aturan firewall tidak memblokir traffic. Aturan firewall yang memblokir traffic keluar (keluar) diterapkan sebelum traffic dikirim ke gateway NAT. Anda dapat menggunakan Firewall Rules Logging untuk melihat apakah aturan keluar kustom Anda memblokir traffic keluar.
Tinjau Jenis Cloud NAT. Tujuan traffic Anda mungkin tidak ditangani oleh NAT.
Log tertentu dikecualikan
Pastikan logging NAT diaktifkan dan filter log Anda tidak mengecualikan log yang ingin Anda simpan. Anda dapat menghapus filter log sehingga tidak ada yang dikecualikan.
Cloud NAT tidak mencatat setiap peristiwa. Selama periode traffic keluar yang berat, logging NAT akan di-throttle, secara proporsional dengan jenis mesin VM. Log terjemahan atau error mungkin dihilangkan, dan tidak mungkin ditentukan apa yang dihilangkan selama pembatasan.
Paket tidak terkirim dengan alasan: kehabisan resource
Jika Anda melihat kehilangan paket dari VM yang menggunakan Cloud NAT, hal ini mungkin disebabkan karena tidak ada cukup tuple port sumber dan alamat IP sumber NAT yang tersedia untuk digunakan VM pada saat kehilangan paket (kehabisan port). Lima tuple (alamat IP sumber NAT, port sumber, dan 3 tuple tujuan) tidak dapat digunakan kembali dalam waktu tunggu TCP TIME_WAIT.
Jika tidak ada cukup tuple NAT yang tersedia, dropped_sent_packets_count
reason adalah
OUT_OF_RESOURCES. Untuk mengetahui informasi selengkapnya tentang metrik, lihat Menggunakan metrik instance VM.
Lihat Mengurangi penggunaan port untuk mengetahui cara mengurangi penggunaan port.
Jika Anda menggunakan alokasi port dinamis, lihat bagian berikut untuk mengetahui cara mengurangi paket yang hilang saat alokasi port dinamis digunakan.
Paket yang dihentikan saat alokasi port dinamis dikonfigurasi
Alokasi port dinamis mendeteksi saat VM hampir kehabisan port, dan menggandakan jumlah port yang dialokasikan ke VM. Hal ini membantu memastikan porta tidak terbuang, tetapi dapat menyebabkan paket yang dibatalkan saat jumlah porta yang dialokasikan meningkat.
Untuk mengurangi jumlah paket yang terputus, pertimbangkan hal berikut:
Jika Anda dapat meningkatkan koneksi secara lebih lambat, Cloud NAT memiliki lebih banyak waktu untuk mengalokasikan lebih banyak port.
Jika VM membuat koneksi TCP, Anda dapat mengonfigurasi VM dengan nilai
tcp_syn_retriesyang lebih besar, yang memberi sistem lebih banyak waktu untuk membuat koneksi dan meningkatkan peluang keberhasilan koneksi.Misalnya, untuk VM Linux, Anda dapat melihat setelan saat ini:
sysctl net.ipv4.tcp_syn_retries
Jika perlu, Anda dapat meningkatkan setelan:
sudo sysctl -w net.ipv4.tcp_syn_retries=NUM
Jika Anda memiliki workload yang bersifat burst dan perlu mengalokasikan lebih banyak port dengan cepat, Anda mungkin perlu menyesuaikan jumlah minimum port per VM. Lihat penggunaan port Anda dan tentukan jumlah minimum port yang sesuai per VM.
Paket dihapus dengan alasan: konflik independensi endpoint
Jika Anda melihat kehilangan paket dari VM yang menggunakan NAT Publik, dan Anda telah mengaktifkan Pemetaan Endpoint-Independen, kehilangan paket mungkin disebabkan oleh konflik independen endpoint. Jika ya, maka
dropped_sent_packets_count
alasan adalah
ENDPOINT_INDEPENDENCE_CONFLICT. Untuk mengetahui informasi selengkapnya tentang metrik, lihat Menggunakan
metrik instance VM.
Anda dapat mengurangi kemungkinan terjadinya konflik independen endpoint dengan menggunakan teknik berikut:
Nonaktifkan Pemetaan Independen Endpoint. Hal ini memungkinkan koneksi baru dari alamat IP dan port sumber tertentu untuk menggunakan alamat IP dan port sumber NAT yang berbeda dari yang digunakan sebelumnya. Menonaktifkan atau mengaktifkan Pemetaan Independen Endpoint tidak mengganggu koneksi yang sudah dibuat.
Tingkatkan jumlah port NAT default minimum per instance VM, sehingga prosedur reservasi port dapat menetapkan lebih banyak tuple alamat IP sumber dan port sumber NAT ke setiap VM klien. Hal ini mengurangi kemungkinan bahwa dua tuple alamat IP klien dan port sumber sementara atau lebih ditetapkan ke tuple alamat IP sumber dan port sumber NAT yang sama.
Periksa jumlah port sumber sementara yang sedang digunakan:
Untuk VM Linux:
netstat -an | egrep 'ESTABLISHED|TIME_WAIT|CLOSE_WAIT' | wc -l
Untuk VM Windows:
netstat -tan | findstr "ESTABLISHED TIME_WAIT CLOSE_WAIT" | find /c /v ""
Konfigurasi instance VM Anda untuk menggunakan kumpulan port sumber sementara yang lebih besar:
Untuk VM Linux:
Anda dapat melihat rentang port yang dikonfigurasi dengan perintah ini:
cat /proc/sys/net/ipv4/ip_local_port_range
Anda dapat menyetel
ip_local_port_rangeke jumlah maksimum port sumber sementara (64.512) dengan perintah ini:echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range
Untuk VM Windows:
Anda dapat melihat rentang port yang dikonfigurasi dengan perintah berikut:
netsh int ipv4 show dynamicport tcp netsh int ipv4 show dynamicport udp
Anda dapat menetapkan jumlah port TCP dan UDP sumber sementara ke jumlah maksimum yang mungkin (64.512) dengan perintah berikut:
netsh int ipv4 set dynamicport tcp start=1024 num=64512 netsh int ipv4 set dynamicport udp start=1024 num=64512
Di node Google Kubernetes Engine, Anda dapat mengotomatiskan konfigurasi ini dengan menggunakan
DaemonSetistimewa.
Untuk cluster GKE, nonaktifkan NAT sumber yang dilakukan di setiap node untuk paket yang dikirim ke tujuan yang diinginkan. Anda dapat melakukannya dengan salah satu dari dua cara berikut:
Dengan men-deploy
ip-masq-agentdan menambahkan tujuan yang diminati ke daftarnonMasqueradeCIDRs.Dengan menonaktifkan SNAT untuk tujuan non-masquerade default dengan flag
--disable-default-snatsaat Anda membuat cluster.
Paket yang diterima tidak terkirim
Gateway Cloud NAT mempertahankan tabel pelacakan koneksi untuk menyimpan detail koneksi aktif serta pemetaan alamat IP dan port—cara alamat IP dan port VM diterjemahkan ke alamat IP dan port NAT. Gateway Cloud NAT akan melepaskan paket data masuk jika tabel pelacakan koneksi tidak berisi entri apa pun untuk koneksi tersebut.
Tidak adanya entri koneksi dalam tabel dapat disebabkan oleh salah satu alasan berikut:
- Koneksi TCP yang dibuat mengalami waktu tunggu habis karena Waktu Tunggu Tidak Ada Aktivitas Koneksi yang Dibuat TCP berakhir karena tidak ada aktivitas.
- Endpoint eksternal gagal membuat koneksi baru sebelum Waktu Tunggu Tidak Ada Aktivitas Koneksi Transitori TCP berakhir. Misalnya, resource Google Cloud
memulai koneksi dengan
TCP SYN, tetapi endpoint eksternal gagal merespons denganSYN ACK. - Endpoint eksternal, seperti prober, mencoba terhubung ke alamat IP dan port NAT. Cloud NAT tidak menerima koneksi masuk yang tidak diminta. Entri untuk jenis koneksi ini tidak akan ada di tabel koneksi. Jadi, setiap paket yang diterima akan dibatalkan.
- Jika Anda menghapus IP NAT dari gateway saat koneksi NAT masih aktif, maka Pemetaan NAT akan menjadi tidak valid, dan koneksi ini akan segera dihapus dari tabel pelacakan koneksi—semua traffic kembali akan dihentikan.
Sebelum mengatasi paket masuk yang terputus, pastikan apakah terputusnya paket tersebut benar-benar memengaruhi aplikasi Anda. Untuk mengonfirmasi, periksa error pada aplikasi Anda setiap kali terjadi lonjakan paket ingress yang dibatalkan.
Jika paket masuk yang terputus memengaruhi aplikasi Anda, coba gunakan teknik berikut untuk mengatasi masalah ini:
- Gunakan mekanisme keep-alive di aplikasi Anda, sehingga koneksi yang berjalan lama dapat tetap terbuka untuk jangka waktu yang lebih lama.
- Tingkatkan nilai untuk Waktu Tunggu Koneksi Sementara TCP, sehingga endpoint eksternal yang menerima traffic (yang dimulai oleh Google Cloud resource) melalui gateway Cloud NAT memiliki lebih banyak waktu untuk merespons dan membuat koneksi.
- Tingkatkan nilai untuk Waktu Tunggu Koneksi TCP yang Sudah Terbentuk jika Anda telah menurunkan nilai default secara signifikan.
Perlu mengalokasikan lebih banyak alamat IP
Terkadang VM Anda tidak dapat mengakses internet karena Anda tidak memiliki cukup alamat IP NAT. Beberapa faktor dapat menyebabkan masalah ini. Untuk mengetahui informasi selengkapnya, lihat tabel berikut.
| Akar masalah | Gejala | Solusi |
|---|---|---|
| Anda telah mengalokasikan alamat secara manual, tetapi Anda belum mengalokasikan alamat yang cukup, mengingat penggunaan port saat ini. |
|
Lakukan salah satu hal berikut:
|
| Anda telah melampaui batas ketat untuk alamat IP NAT. |
|
|
Untuk memantau kegagalan yang disebabkan oleh jumlah alamat IP yang tidak memadai, buat pemberitahuan untuk metrik nat_allocation_failed. Metrik ini disetel ke true jika Google Cloud tidak dapat mengalokasikan alamat IP yang cukup untuk VM mana pun di gateway NAT Anda. Untuk
mengetahui informasi tentang kebijakan pemberitahuan, lihat
Menentukan kebijakan pemberitahuan.
Mengurangi penggunaan port
Anda dapat meminimalkan jumlah port yang digunakan setiap VM dalam situasi di mana mengalokasikan lebih banyak alamat IP NAT tidak memungkinkan atau diinginkan.
Untuk mengurangi penggunaan port, selesaikan langkah-langkah berikut:
Nonaktifkan Pemetaan Independen Endpoint.
Aktifkan alokasi port dinamis. Untuk menggunakan alokasi port dinamis, Anda menetapkan jumlah port minimum per VM dan jumlah port maksimum per VM. Cloud NAT secara otomatis mengalokasikan sejumlah tuple alamat IP sumber NAT dan port sumber antara jumlah port minimum dan maksimum, inklusif. Menggunakan angka yang rendah untuk jumlah minimum port akan mengurangi pemborosan tuple alamat IP sumber NAT dan port sumber pada VM dengan lebih sedikit koneksi aktif. Jika Anda mengalami waktu tunggu koneksi habis saat port dialokasikan, lihat Mengurangi paket yang hilang dengan alokasi port dinamis.
Tentukan jumlah minimum port terendah yang mungkin untuk memenuhi kebutuhan Anda. Ada beberapa metode untuk melakukannya, dan sebagian besar mengandalkan peninjauan jumlah port yang digunakan (
compute.googleapis.com/nat/port_usage) sebagai input untuk proses pengambilan keputusan. Untuk mengetahui informasi tentang cara menemukan penggunaan port, lihat Melihat penggunaan port. Berikut adalah dua contoh metode untuk menentukan jumlah minimum port:- Pertimbangkan nilai rata-rata
compute.googleapis.com/nat/port_usageselama jangka waktu yang representatif untuk jumlah VM yang representatif. - Pertimbangkan nilai
compute.googleapis.com/nat/port_usageyang paling sering terjadi selama jangka waktu yang representatif untuk sejumlah VM yang representatif.
- Pertimbangkan nilai rata-rata
Tentukan jumlah maksimum port terendah yang mungkin untuk memenuhi kebutuhan Anda. Sekali lagi, tinjau
compute.googleapis.com/nat/port_usagesebagai input untuk proses pengambilan keputusan Anda. Pertimbangkan nilai maksimumcompute.googleapis.com/nat/port_usageselama jangka waktu yang representatif untuk jumlah VM yang representatif sebagai titik awal untuk jumlah maksimum port. Perlu diingat bahwa menyetel jumlah maksimum terlalu tinggi dapat mencegah VM lain menerima tuple alamat IP sumber dan port sumber NAT.Menemukan nilai yang tepat untuk port minimum dan maksimum melibatkan pengujian berulang. Untuk mengetahui langkah-langkah mengubah nomor port minimum dan maksimum, lihat Mengubah port minimum atau maksimum saat alokasi port dinamis dikonfigurasi.
Tinjau waktu tunggu NAT, artinya, dan nilai defaultnya. Jika Anda perlu membuat serangkaian koneksi TCP dengan cepat ke 3-tupel tujuan yang sama, pertimbangkan untuk mengurangi waktu tunggu TCP agar Cloud NAT dapat menggunakan kembali tupel port sumber dan alamat IP sumber NAT dengan lebih cepat. Hal ini memungkinkan Cloud NAT menggunakan 5-tuple yang sama dengan lebih cepat, alih-alih harus menggunakan 5-tuple unik, yang mungkin memerlukan alokasi tuple alamat IP sumber dan port sumber NAT tambahan untuk setiap VM pengirim. Untuk mengetahui langkah-langkah mengubah waktu tunggu NAT, lihat Mengubah waktu tunggu NAT.
Pertanyaan umum (FAQ)
Pembatasan regional untuk Cloud NAT
Dapatkah saya menggunakan gateway Cloud NAT yang sama di lebih dari satu region?
Tidak. Gateway Cloud NAT tidak dapat dikaitkan dengan lebih dari satu region, jaringan VPC, atau Cloud Router.
Jika Anda perlu menyediakan konektivitas untuk region atau jaringan VPC lainnya, buat gateway Cloud NAT tambahan untuk region atau jaringan VPC tersebut.
Apakah alamat IP NAT eksternal yang digunakan oleh gateway Cloud NAT bersifat global atau regional?
Gateway Cloud NAT menggunakan alamat IP eksternal regional sebagai alamat IP NAT. Meskipun bersifat regional, alamat tersebut dapat dirutekan secara publik. Untuk mengetahui informasi tentang berbagai cara alamat IP NAT dapat dialokasikan atau ditetapkan, lihat Alamat IP NAT.
Kapan Cloud NAT dapat dan tidak dapat digunakan
Apakah Cloud NAT berlaku untuk instance, termasuk VM node GKE, yang memiliki alamat IP eksternal?
Umumnya, tidak. Jika antarmuka jaringan VM memiliki alamat IP eksternal, Google Cloud selalu melakukan NAT 1-ke-1 untuk paket yang dikirim dari alamat IP internal utama antarmuka jaringan tanpa menggunakan Cloud NAT. Namun, Cloud NAT masih dapat menyediakan layanan NAT untuk paket yang dikirim dari rentang alamat IP alias antarmuka jaringan yang sama. Untuk mengetahui detail tambahan, lihat spesifikasi Cloud NAT dan interaksi Compute Engine.
Apakah NAT Publik memungkinkan VM sumber yang antarmuka jaringannya tidak memiliki alamat IP eksternal mengirim traffic ke VM tujuan atau load balancer yang memiliki alamat IP eksternal, meskipun sumber dan tujuan berada di jaringan VPC yang sama?
Ya. Jalur jaringan melibatkan pengiriman traffic keluar dari jaringan VPC melalui gateway internet default, lalu menerimanya di jaringan yang sama.
Saat VM sumber mengirim paket ke tujuan, NAT Publik melakukan NAT sumber (SNAT) sebelum mengirimkan paket ke instance kedua. NAT publik menjalankan NAT tujuan (DNAT) untuk respons dari instance kedua ke instance pertama. Untuk contoh langkah demi langkah, lihat Konfigurasi dan alur kerja Public NAT dasar.
Dapatkah saya menggunakan Private NAT untuk komunikasi antar-VM dalam jaringan VPC yang sama?
Tidak, Private NAT tidak melakukan NAT pada traffic antara VM di jaringan VPC yang sama.
Koneksi masuk yang tidak diminta tidak didukung
Apakah Cloud NAT mengizinkan koneksi masuk (misalnya, SSH) ke instance tanpa alamat IP eksternal?
Tidak, Cloud NAT tidak mendukung koneksi masuk yang tidak diminta.
Untuk mengetahui informasi selengkapnya, lihat
Spesifikasi Cloud NAT.
Namun,edge jaringan Google Clouddapat merespons ping jika alamat IP tujuan adalah alamat IP eksternal gateway Cloud NAT yang memiliki pemetaan port aktif ke setidaknya satu instance VM. Untuk melihat alamat IP yang ditetapkan ke gateway Cloud NAT, gunakan
perintah gcloud compute routers get-nat-ip-info.
Alamat IP eksternal yang ditandai sebagai IN_USE mungkin merespons ping.
Jika Anda perlu terhubung ke VM yang tidak memiliki alamat IP eksternal, lihat Memilih opsi koneksi untuk VM khusus internal. Misalnya, sebagai bagian dari penyiapan Compute Engine contoh Cloud NAT, Anda terhubung ke VM tanpa alamat IP eksternal menggunakan Identity-Aware Proxy.
Cloud NAT dan port
Mengapa VM memiliki jumlah port tetap (64 secara default)?
Saat menyediakan NAT untuk VM, gateway Cloud NAT akan mencadangkan tupel alamat sumber dan port sumber sesuai dengan prosedur pencadangan port.
Untuk mengetahui informasi selengkapnya, lihat contoh reservasi port.
Dapatkah saya mengubah jumlah minimum port yang dicadangkan untuk VM?
Ya. Anda dapat menambah atau mengurangi jumlah minimum port per VM saat membuat gateway Cloud NAT baru atau dengan mengeditnya nanti. Setiap gateway Cloud NAT mencadangkan tupel port sumber dan alamat sumber sesuai dengan prosedur pencadangan port.
Untuk mengetahui informasi tambahan tentang cara mengurangi jumlah minimum port, lihat pertanyaan berikutnya.
Dapatkah saya mengurangi jumlah minimum port per VM setelah membuat gateway Cloud NAT?
Ya; namun, mengurangi jumlah minimum port dapat mengakibatkan prosedur pemesanan port memesan jumlah port yang lebih kecil per VM. Jika hal ini terjadi, koneksi TCP yang ada mungkin direset dan, jika demikian, harus disambungkan kembali.
Saat mengganti pemetaan NAT dari rentang Primer dan Sekunder ke rentang Primer saja, apakah port tambahan yang dialokasikan untuk setiap instance segera dilepaskan?
Tidak. Port tambahan yang digunakan oleh rentang sekunder dipertahankan oleh instance hingga setelan port minimum per VM dikurangi. Jika dikonfigurasi untuk memetakan rentang Sekunder (alias) untuk subnet, Cloud NAT akan menetapkan minimal 1.024 port per instance, berdasarkan prosedur reservasi port.
Dengan beralih ke rentang Primer saja, Cloud NAT menghemat port tambahan yang dialokasikan untuk instance yang telah diberi port tersebut. Setelah mengubah rentang yang Cloud NAT-nya diterapkan ke Khusus Primer, jumlah port sebenarnya yang ditetapkan ke instance tersebut tidak berubah hingga setelan port minimum per VM juga dikurangi.
Untuk mengurangi jumlah port yang dialokasikan ke instance tersebut, setelah beralih ke rentang primer, setelan port minimum per VM harus dikurangi. Setelah nilai tersebut dikurangi, Cloud NAT akan otomatis menyesuaikan jumlah port yang dialokasikan per instance, sehingga mengurangi konsumsi port.
Cloud NAT dan layanan Google lainnya
Apakah Cloud NAT memungkinkan akses ke Google API dan layanan Google?
Saat Anda mengaktifkan Cloud NAT untuk rentang IP utama subnet, Google Cloud Akses Google Pribadi akan otomatis diaktifkan. Untuk mengetahui informasi selengkapnya, lihat Interaksi Akses Google Pribadi.
Menyelidiki masalah Cloud NAT dengan Gemini Cloud Assist
Anda dapat menggunakan investigasi Gemini Cloud Assist untuk memecahkan masalah Cloud NAT.
Untuk membuat penyelidikan, lakukan hal berikut:
Di konsol Google Cloud , buka halaman Cloud NAT.
Klik gateway Cloud NAT Anda.
Di halaman Cloud NAT gateway details, klik Investigate.
Di panel pembuatan penyelidikan, jelaskan masalah yang ingin Anda pecahkan, pilih resource yang terpengaruh, lalu klik Buat untuk memulai penyelidikan.
Untuk mengetahui informasi selengkapnya, lihat Membuat penyelidikan.
Untuk peringatan dan error dalam konfigurasi Cloud NAT, tombol Selidiki ditampilkan dengan pemberitahuan. Saat membuat investigasi untuk peringatan atau error, deskripsi masalah dan referensi yang relevan akan otomatis diisi di panel pembuatan investigasi.