Memecahkan masalah konfigurasi

Panduan ini dapat membantu Anda memecahkan masalah umum terkait Cloud NAT.

Masalah umum

VM dapat menjangkau internet secara tiba-tiba, tanpa Cloud NAT

Jika instance virtual machine (VM) atau instance container Anda dapat menjangkau internet tanpa Cloud NAT, tetapi Anda tidak menginginkannya, periksa masalah berikut:

  • Menentukan apakah antarmuka jaringan VM memiliki alamat IP eksternal atau tidak. Jika antarmuka jaringan memiliki alamat IP eksternal yang ditetapkan untuknya, Google Cloud akan otomatis melakukan NAT one-to-one 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, baca artikel mengubah atau menetapkan alamat IP eksternal ke instance yang ada.

  • Pastikan cluster Google Kubernetes Engine (GKE) Anda adalah cluster pribadi. Setiap VM node di 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.

  • Buat daftar rute di jaringan Virtual Private Cloud Anda, lalu cari rute yang dapat menyediakan konektivitas internet melalui next hop yang berbeda dengan gateway internet default. Sebagai contoh:

    • Rute statis kustom yang hop berikutnya adalah VM, Load Balancer Jaringan passthrough internal, atau terowongan 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 kustom 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 lebih tinggi daripada rute yang hop berikutnya merupakan gateway internet default. Untuk mengetahui informasi tentang cara Google Cloud mengevaluasi rute, lihat pemilihan rute penerapan dan urutan.

Tidak ada log yang dibuat

  • Pastikan logging NAT telah diaktifkan.
  • Periksa kembali apakah tampilan log Anda tidak memfilter log yang Anda cari. Untuk mengetahui petunjuknya, lihat Melihat log.

  • Pastikan bahwa 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 traffic keluar kustom Anda memblokir traffic keluar.

  • Tinjau Types of Cloud NAT. Tujuan untuk traffic Anda mungkin tidak ditangani oleh NAT.

Log tertentu dikecualikan

  • Pastikan logging NAT diaktifkan dan filter log Anda tidak mengecualikan log yang ingin disimpan. Anda dapat menghapus filter log sehingga tidak ada yang dikecualikan.

  • Cloud NAT tidak mencatat setiap peristiwa ke dalam log. Selama periode traffic keluar yang tinggi, logging NAT di-throttle, proporsional dengan jenis mesin VM. Log error atau terjemahan mungkin dihapus, dan tidak dapat menentukan apa yang dihilangkan selama throttling.

Paket dihentikan dengan alasan: kehabisan resource

Jika Anda melihat paket hilang 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 paket hilang (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 tuple NAT yang tersedia tidak cukup, alasan dropped_sent_packets_count adalah OUT_OF_RESOURCES. Untuk mengetahui informasi selengkapnya tentang metrik, baca Menggunakan metrik instance VM.

Baca Mengurangi penggunaan port untuk mengetahui cara mengurangi penggunaan port.

Jika Anda menggunakan alokasi port dinamis, lihat bagian berikut untuk mengetahui cara mengurangi penghapusan paket saat alokasi port dinamis digunakan.

Paket dihapus saat alokasi port dinamis dikonfigurasi

Alokasi port dinamis mendeteksi saat VM hampir keluar dari port dan menggandakan jumlah port yang dialokasikan ke VM. Hal ini membantu memastikan bahwa port tidak terbuang percuma, tetapi dapat mengakibatkan paket yang hilang sementara jumlah port yang dialokasikan meningkat.

Untuk mengurangi jumlah paket yang dilepaskan, pertimbangkan hal berikut:

  • Jika Anda dapat meningkatkan koneksi dengan lebih lambat, Cloud NAT memiliki lebih banyak waktu untuk mengalokasikan lebih banyak port.

  • Jika VM membuat koneksi TCP, Anda dapat mengonfigurasi VM dengan nilai yang lebih besar untuk tcp_syn_retries, yang memberi sistem lebih banyak waktu untuk membuat koneksi dan meningkatkan peluang koneksi untuk berhasil.

    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 burst dan perlu mengalokasikan lebih banyak port dengan cepat, Anda mungkin perlu menyesuaikan jumlah minimum port per VM. Melihat penggunaan port Anda dan menentukan jumlah minimum port yang sesuai per VM.

Paket dihentikan dengan alasan: konflik independen endpoint

Jika Anda melihat paket hilang dari VM yang menggunakan NAT Publik, dan mengaktifkan Pemetaan Independen Endpoint, paket hilang mungkin disebabkan oleh konflik independen endpoint. Jika ya, alasan dropped_sent_packets_count adalah ENDPOINT_INDEPENDENT_CONFLICT. Untuk mengetahui informasi selengkapnya tentang metrik, baca Menggunakan metrik instance VM.

Anda dapat mengurangi kemungkinan konflik independen endpoint dengan menggunakan teknik berikut:

  • Nonaktifkan Pemetaan Independen Endpoint. Dengan begitu, koneksi baru dari port dan alamat IP sumber tertentu dapat menggunakan alamat IP dan port sumber NAT yang berbeda dari yang digunakan sebelumnya. Menonaktifkan atau mengaktifkan Pemetaan Independen Endpoint tidak akan mengganggu koneksi yang telah dibuat.

  • Tingkatkan jumlah default minimum port NAT per instance VM, sehingga prosedur reservasi port dapat menetapkan lebih banyak alamat IP sumber NAT dan tuple port sumber ke setiap VM klien. Hal ini mengurangi kemungkinan dua atau lebih alamat IP klien dan tuple port sumber efemeral diberi alamat IP sumber NAT dan tuple port sumber yang sama.

  • Periksa berapa banyak port sumber ephemeral yang 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 ""
      
  • Konfigurasikan instance VM Anda untuk menggunakan kumpulan port sumber efemeral yang lebih besar:

    • Untuk VM Linux:

      • Anda dapat melihat rentang port apa yang dikonfigurasi dengan perintah ini:

        cat /proc/sys/net/ipv4/ip_local_port_range
        
      • Anda dapat menetapkan ip_local_port_range ke jumlah maksimum port sumber ephemeral (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 efemeral ke jumlah maksimum (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 menggunakan DaemonSet hak istimewa.

  • Untuk cluster GKE, nonaktifkan NAT sumber yang dijalankan pada setiap node untuk paket yang dikirim ke tujuan yang diinginkan. Anda dapat melakukannya dengan salah satu dari dua cara berikut:

Perlu mengalokasikan lebih banyak alamat IP

Terkadang, VM tidak dapat menjangkau internet karena Anda tidak memiliki alamat IP NAT yang cukup. Beberapa faktor dapat menyebabkan masalah ini. Untuk informasi selengkapnya, lihat tabel berikut.

Akar masalah Gejala Solusi
Anda telah mengalokasikan alamat secara manual, tetapi belum mengalokasikan cukup banyak alamat, mengingat penggunaan port Anda saat ini.
  • Konsol Google Cloud akan menampilkan error yang bertuliskan You need to spend at least 'X' more IP addresses to allow all instance to access the internet.
  • Nilai metrik nat_allocation_failed adalah true.

Lakukan salah satu hal berikut:

Anda telah melampaui batas pasti untuk alamat IP NAT.

Untuk memantau kegagalan yang disebabkan oleh jumlah alamat IP yang tidak mencukupi, buat pemberitahuan untuk metrik nat_allocation_failed. Metrik ini ditetapkan ke true jika Google Cloud tidak dapat mengalokasikan alamat IP yang cukup untuk VM apa 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 ketika mengalokasikan lebih banyak alamat IP NAT tidak mungkin atau diinginkan.

Untuk mengurangi penggunaan port, selesaikan langkah-langkah berikut:

  1. Nonaktifkan Endpoint-Independent Mapping.

  2. Aktifkan alokasi port dinamis. Untuk menggunakan alokasi port dinamis, Anda harus menetapkan jumlah minimum port per VM dan jumlah maksimum port per VM. Cloud NAT secara otomatis mengalokasikan sejumlah tuple alamat IP sumber NAT dan tuple port sumber di antara jumlah minimum dan maksimum port, inklusif. Penggunaan angka yang rendah untuk jumlah minimum port akan mengurangi pemborosan alamat IP sumber NAT dan tuple port sumber pada VM dengan koneksi aktif yang lebih sedikit. Jika Anda mengalami waktu tunggu koneksi saat port dialokasikan, lihat Mengurangi penurunan paket dengan alokasi port dinamis.

  3. Tentukan jumlah minimum port yang serendah mungkin untuk memenuhi kebutuhan Anda. Ada beberapa metode untuk melakukannya, dan sebagian besar bergantung pada 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 port minimum:

    • Pertimbangkan nilai rata-rata compute.googleapis.com/nat/port_usage selama jangka waktu representatif untuk jumlah VM yang representatif.
    • Pertimbangkan nilai compute.googleapis.com/nat/port_usage yang paling sering muncul selama jangka waktu representatif untuk jumlah VM yang representatif.
  4. Tentukan jumlah port maksimum serendah mungkin untuk memenuhi kebutuhan Anda. Sekali lagi, tinjau compute.googleapis.com/nat/port_usage sebagai input untuk proses pengambilan keputusan Anda. Pertimbangkan nilai maksimum compute.googleapis.com/nat/port_usage selama jangka waktu representatif untuk jumlah VM yang representatif sebagai titik awal untuk jumlah port maksimum. Perlu diingat bahwa menetapkan jumlah maksimum yang terlalu tinggi dapat mencegah VM lain menerima alamat IP sumber NAT dan tupel port sumber.

  5. Menemukan nilai yang tepat untuk port minimum dan maksimum melibatkan pengujian berulang. Untuk mengetahui langkah-langkah dalam mengubah nomor port minimum dan maksimum, lihat Mengubah port minimum atau maksimum saat alokasi port dinamis dikonfigurasi.

  6. Tinjau waktu tunggu NAT, artinya, dan nilai defaultnya. Jika Anda perlu membuat serangkaian koneksi TCP dengan cepat ke 3-tuple tujuan yang sama, pertimbangkan untuk mengurangi waktu tunggu TCP sehingga Cloud NAT dapat dengan lebih cepat menggunakan kembali alamat IP sumber NAT dan tuple port sumber. Hal ini memungkinkan Cloud NAT untuk menggunakan 5-tuple yang sama dengan lebih cepat daripada perlu menggunakan 5-tuple unik, yang mungkin memerlukan alokasi alamat IP sumber NAT tambahan dan tuple port sumber untuk setiap VM yang mengirim. Untuk mengetahui langkah-langkah dalam mengubah waktu tunggu NAT, lihat Mengubah waktu tunggu NAT.

Pertanyaan umum (FAQ)

Batasan 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 lain, buat gateway Cloud NAT tambahan untuk region atau jaringan 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, mereka dapat dirutekan secara publik. Untuk mengetahui informasi tentang berbagai cara alokasi atau penetapan alamat IP NAT, 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 akan selalu menjalankan 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 ke paket yang dikirim dari rentang alamat IP alias pada antarmuka jaringan yang sama. Untuk mengetahui detail tambahan, lihat spesifikasi Cloud NAT dan interaksi Compute Engine.

Dapatkah saya menggunakan Cloud NAT untuk komunikasi antar-VM di jaringan VPC?

Tidak, Cloud NAT dirancang untuk menyediakan konektivitas ke internet saja.

Dapatkah saya menggunakan Cloud NAT untuk menghubungkan jaringan VPC ke jaringan lain untuk mengatasi alamat IP yang tumpang-tindih?

Tidak, Cloud NAT tidak dapat diterapkan ke rute kustom apa pun yang next hop-nya bukan gateway internet default. Misalnya, Cloud NAT tidak dapat diterapkan ke traffic yang dikirim ke tunnel Cloud VPN next hop, meskipun tujuannya adalah alamat IP yang dapat dirutekan secara publik.

Apakah Cloud NAT mengizinkan 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, Cloud NAT akan menjalankan NAT (SNAT) sumber sebelum mengirimkan paket ke instance kedua. Cloud NAT menjalankan NAT (DNAT) tujuan untuk respons dari instance kedua ke instance pertama. Untuk contoh langkah demi langkah, lihat Konfigurasi dan alur kerja NAT Publik Dasar.

Koneksi masuk yang tidak diminta tidak didukung

Apakah Cloud NAT memungkinkan 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.

Jika Anda perlu terhubung ke VM yang tidak memiliki alamat IP eksternal, baca artikel 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 yang tetap (64 secara default)?

Ketika gateway Cloud NAT menyediakan NAT untuk VM, gateway tersebut mencadangkan tuple alamat sumber dan port sumber sesuai dengan prosedur reservasi 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 tuple alamat sumber dan port sumber sesuai dengan prosedur reservasi port.

Untuk informasi tambahan tentang mengurangi jumlah minimum port, lihat pertanyaan berikutnya.

Dapatkah saya mengurangi jumlah minimum port per VM setelah membuat gateway Cloud NAT?

Ya, tetapi mengurangi jumlah minimum port dapat menyebabkan prosedur reservasi port untuk sejumlah kecil port per VM. Jika ini terjadi, koneksi TCP yang ada mungkin akan direset dan, jika demikian, harus terhubung kembali.

Saat mengalihkan pemetaan NAT dari rentang Primer dan Sekunder ke rentang Primer saja, apakah port tambahan dialokasikan ke setiap instance langsung dirilis?

Tidak. Port tambahan apa pun yang digunakan oleh rentang sekunder akan dipertahankan oleh instance sampai setelan port minimum per VM dikurangi. Saat Cloud NAT dikonfigurasi untuk memetakan rentang Sekunder (alias) untuk subnet, Cloud NAT menetapkan minimum 1.024 port per instance, berdasarkan prosedur reservasi port.

Dengan beralih ke rentang Utama saja, Cloud NAT akan menghemat port yang dialokasikan tambahan tersebut untuk instance yang telah menetapkan port tersebut. Setelah mengubah rentang yang hanya menerapkan Cloud NAT untuk Utama, jumlah sebenarnya port 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 utama, setelan port minimum per VM harus dikurangi. Setelah nilai tersebut dikurangi, Cloud NAT akan otomatis mengurangi 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 otomatis mengaktifkan Akses Google Pribadi. Untuk mengetahui informasi selengkapnya, lihat Interaksi Akses Google Pribadi.

Langkah selanjutnya