Bagikan melalui


Memecahkan masalah konektivitas Azure NAT Gateway

Artikel ini menyediakan panduan tentang cara memecahkan masalah dan mengatasi masalah konektivitas keluar umum dengan gateway NAT Anda. Artikel ini juga menyediakan praktik terbaik tentang cara merancang aplikasi untuk menggunakan koneksi keluar secara efisien.

Penurunan ketersediaan jalur data pada gateway NAT dengan kegagalan koneksi

Skenario

Anda mengamati penurunan ketersediaan jalur data gateway NAT, yang bertepatan dengan kegagalan koneksi.

Kemungkinan Penyebabnya

  • Kelelahan port Terjemahan Alamat Jaringan Sumber (SNAT).

  • Batas koneksi SNAT simultan.

  • Koneksi batas waktu.

Langkah-langkah pemecahan masalah

  • Menilai kesehatan gateway NAT dengan memeriksa metrik ketersediaan jalur data.

  • Periksa metrik Jumlah Koneksi ion SNAT dan pisahkan status koneksi dengan koneksi yang dicoba dan gagal. Lebih dari nol koneksi yang gagal menunjukkan kelelahan port SNAT atau mencapai batas jumlah koneksi SNAT gateway NAT.

  • Pastikan metrik jumlah koneksi berada dalam batas dengan memverifikasi metrik Jumlah Koneksi ion SNAT Total. Gateway NAT mendukung 50.000 koneksi simultan per alamat IP ke tujuan unik dan total hingga 2 juta koneksi. Untuk informasi selengkapnya, lihat Performa NAT Gateway.

  • Periksa metrik paket yang dihilangkan untuk setiap penurunan paket yang selaras dengan kegagalan koneksi atau volume koneksi tinggi.

  • Sesuaikan pengaturan timer batas waktu jeda Protokol Kontrol Transmisi (TCP) sesuai kebutuhan. Timer batas waktu menganggur yang diatur lebih tinggi dari default (4 menit) tahan untuk mengalir lebih lama, dan dapat menciptakan tekanan ekstra pada inventori port SNAT.

Kemungkinan solusi untuk kelelahan port SNAT atau mencapai batas koneksi simultan

  • Tambahkan alamat IP publik ke gateway NAT Anda hingga total 16 untuk menskalakan konektivitas keluar Anda. Setiap IP publik menyediakan 64.512 port SNAT dan mendukung hingga 50.000 koneksi simultan per titik akhir tujuan unik untuk gateway NAT.

  • Distribusikan lingkungan aplikasi Anda di beberapa subnet dan berikan sumber daya gateway NAT untuk setiap subnet.

  • Bebaskan inventaris port SNAT dengan mengurangi timer batas waktu diam TCP ke nilai yang lebih rendah. Timer waktu habis idle TCP tidak dapat diatur lebih rendah dari 4 menit.

  • Pertimbangkan pola polling asinkron untuk membebaskan sumber daya koneksi untuk operasi lain.

  • Membuat koneksi ke layanan Azure PaaS melalui backbone Azure menggunakan Private Link. Tautan privat membebaskan port SNAT untuk koneksi keluar ke internet.

  • Jika penyelidikan Anda tidak meyakinkan, buka kasus dukungan untuk memecahkan masalah lebih lanjut.

Catatan

Penting untuk memahami mengapa kelelahan port SNAT terjadi. Pastikan Anda menggunakan pola yang tepat untuk skenario yang dapat diskalakan dan dapat diandalkan. Menambahkan lebih banyak port SNAT ke skenario tanpa memahami penyebab permintaan harus menjadi upaya terakhir. Jika Anda tidak memahami mengapa skenario Anda menerapkan tekanan pada inventaris port SNAT, menambahkan lebih banyak port SNAT dengan menambahkan lebih banyak alamat IP hanya akan menunda kegagalan kelelahan yang sama dengan skala aplikasi Anda. Anda mungkin menutupi inefisiensi dan anti-pola lainnya. Untuk informasi selengkapnya, lihat praktik terbaik untuk penggunaan koneksi keluar yang efisien.

Kemungkinan solusi untuk batas waktu koneksi TCP

Gunakan keepalives TCP atau keepalive lapisan aplikasi untuk menyegarkan alur diam dan mengatur ulang timer batas waktu diam. Misalnya, lihat contoh .NET.

Keepalives TCP hanya perlu diaktifkan dari satu sisi koneksi untuk menjaga koneksi tetap hidup dari kedua sisi. Ketika keepalive TCP dikirim dari satu sisi koneksi, sisi lain secara otomatis mengirim paket acknowledge (ACK). Timer batas waktu idle kemudian diatur ulang di kedua sisi koneksi.

Catatan

Meningkatkan batas waktu diam TCP adalah upaya terakhir dan mungkin tidak menyelesaikan akar penyebab masalah. Batas waktu yang lama dapat menyebabkan penundaan dan menyebabkan kegagalan tingkat rendah yang tidak perlu ketika batas waktu habis berakhir.

Kemungkinan solusi untuk batas waktu koneksi User Datagram Protocol (UDP)

Timer batas waktu diam UDP diatur ke 4 menit dan tidak dapat dikonfigurasi. Aktifkan keepalives UDP untuk kedua arah dalam alur koneksi untuk mempertahankan koneksi yang panjang. Saat keepalive UDP diaktifkan, keepalive hanya aktif untuk satu arah dalam koneksi. Koneksi masih dapat diam dan waktu habis di sisi lain koneksi. Untuk mencegah agar sambungan UDP tidak kehabisan waktu idle, keepalive UDP harus diaktifkan untuk kedua arah dalam alur sambungan.

Keepalive lapisan aplikasi juga dapat digunakan untuk me-refresh alur yang idle dan mengatur ulang batas waktu idle. Periksa sisi server untuk opsi apa saja yang ada untuk keepalive khusus aplikasi.

Penurunan ketersediaan jalur data di gateway NAT tetapi tidak ada kegagalan koneksi

Skenario

Ketersediaan datapath gateway NAT turun tetapi tidak ada koneksi yang gagal yang diamati.

Kemungkinan penyebab

Penurunan sementara ketersediaan jalur data yang disebabkan oleh kebisingan di datapath.

Langkah-langkah pemecahan masalah

Jika Anda melihat penurunan ketersediaan jalur data tanpa pengaruh pada konektivitas keluar Anda, itu bisa disebabkan oleh gateway NAT yang mengambil kebisingan sementara di jalur data.

Siapkan pemberitahuan untuk penurunan ketersediaan jalur data atau gunakan Azure Resource Health untuk memperingatkan peristiwa kesehatan NAT Gateway.

Tidak ada konektivitas keluar ke Internet

Skenario

Anda tidak mengamati konektivitas keluar di gateway NAT Anda.

Kemungkinan Penyebabnya

  • Kesalahan konfigurasi gateway NAT.

  • Lalu lintas internet dialihkan dari gateway NAT dan terowongan paksa ke appliance virtual atau ke tujuan lokal dengan VPN atau ExpressRoute.

  • Aturan Network Security Group (NSG) dikonfigurasi yang memblokir lalu lintas internet.

  • Ketersediaan datapath gateway NAT terdegradasi.

  • Kesalahan konfigurasi Sistem Nama Domain (DNS).

Langkah-langkah pemecahan masalah

  • Periksa apakah gateway NAT dikonfigurasi dengan setidaknya satu alamat IP publik atau awalan dan dilampirkan ke subnet. Gateway NAT tidak beroperasi hingga IP publik dan subnet terlampir. Untuk informasi selengkapnya, lihat Dasar-dasar konfigurasi gateway NAT.

  • Periksa tabel perutean subnet yang dilampirkan ke gateway NAT. Setiap lalu lintas 0.0.0.0/0 yang terowongan paksa ke Network Virtual Appliance (NVA), ExpressRoute, atau VPN Gateway akan diprioritaskan melalui gateway NAT. Untuk informasi selengkapnya, lihat cara Azure memilih rute.

  • Periksa apakah ada aturan NSG yang dikonfigurasi untuk antarmuka jaringan pada komputer virtual Anda yang memblokir akses internet.

  • Periksa apakah ketersediaan datapath gateway NAT dalam keadaan terdegradasi. Lihat panduan pemecahan masalah kegagalan koneksi jika gateway NAT dalam keadaan terdegradasi.

  • Periksa pengaturan DNS Anda jika DNS tidak menyelesaikan dengan benar.

Kemungkinan solusi untuk kehilangan konektivitas keluar

  • Lampirkan alamat IP publik atau awalan ke gateway NAT. Pastikan juga bahwa gateway NAT dilampirkan ke subnet dari jaringan virtual yang sama. Validasi bahwa gateway NAT dapat tersambung keluar.

  • Pertimbangkan dengan cermat persyaratan perutean lalu lintas Anda sebelum membuat perubahan pada rute lalu lintas untuk jaringan virtual Anda. Rute yang Ditentukan Pengguna (UDR) yang mengirim lalu lintas 0.0.0.0/0 ke appliance virtual atau gateway jaringan virtual mengambil alih gateway NAT. Lihat rute kustom untuk mempelajari selengkapnya tentang bagaimana rute kustom memengaruhi perutean lalu lintas jaringan.

    Untuk menjelajahi opsi untuk memperbarui rute lalu lintas di tabel perutean subnet Anda, lihat:

  • Perbarui aturan keamanan NSG yang memblokir akses internet untuk salah satu VM Anda. Untuk informasi selengkapnya, lihat mengelola grup keamanan jaringan.

  • DNS tidak menyelesaikan dengan benar dapat terjadi karena berbagai alasan. Lihat panduan pemecahan masalah DNS untuk membantu menyelidiki mengapa resolusi DNS gagal.

IP publik gateway NAT tidak digunakan untuk menyambungkan keluar

Skenario

Gateway NAT disebarkan di jaringan virtual Azure Anda tetapi alamat IP tak terduga digunakan untuk koneksi keluar.

Kemungkinan Penyebabnya

  • Kesalahan konfigurasi gateway NAT.

  • Koneksi aktif dengan metode konektivitas keluar Azure lainnya seperti Azure Load balancer atau IP publik tingkat instans pada komputer virtual. Alur koneksi aktif terus menggunakan alamat IP publik sebelumnya yang ditetapkan saat koneksi dibuat. Saat gateway NAT disebarkan, koneksi baru mulai menggunakan gateway NAT segera.

  • IP privat digunakan untuk menyambungkan ke layanan Azure berdasarkan titik akhir layanan atau Private Link.

  • Koneksi ke akun penyimpanan berasal dari wilayah yang sama dengan komputer virtual tempat Anda membuat koneksi.

  • Lalu lintas internet sedang dialihkan dari gateway NAT dan terowongan paksa ke NVA atau firewall.

Cara memecahkan masalah

  • Periksa apakah gateway NAT Anda memiliki setidaknya satu alamat IP publik atau awalan yang terkait dan setidaknya satu subnet.

  • Verifikasi apakah ada metode konektivitas keluar sebelumnya, seperti Load balancer publik, masih aktif setelah menyebarkan gateway NAT.

  • Periksa apakah koneksi dibuat ke layanan Azure lainnya berasal dari alamat IP privat di jaringan virtual Azure Anda.

  • Periksa apakah Anda mengaktifkan Private Link atau titik akhir layanan untuk menyambungkan ke layanan Azure lainnya.

  • Pastikan komputer virtual Anda terletak di wilayah yang sama dengan penyimpanan Azure saat membuat koneksi penyimpanan.

  • Verifikasi apakah alamat IP publik yang digunakan untuk koneksi berasal dari layanan Azure lain dalam jaringan virtual Azure Anda, seperti Network Virtual Appliance (NVA).

Solusi yang mungkin untuk IP publik gateway NAT tidak digunakan untuk menyambungkan keluar

  • Lampirkan alamat IP publik atau awalan ke gateway NAT. Pastikan gateway NAT dilampirkan ke subnet dari jaringan virtual yang sama. Validasi bahwa gateway NAT dapat tersambung keluar.

  • Uji dan atasi masalah dengan VM yang berpegang pada alamat IP SNAT lama dari metode konektivitas keluar lainnya dengan:

    • Pastikan Anda membuat koneksi baru dan bahwa koneksi yang ada tidak digunakan kembali di OS atau browser menyimpan koneksi. Misalnya, saat menggunakan curl di PowerShell, pastikan untuk menentukan parameter -DisableKeepalive guna memaksa koneksi baru. Jika Anda menggunakan browser, koneksi juga dapat dikumpulkan.

    • Anda tidak perlu menghidupkan ulang mesin virtual dalam subnet yang dikonfigurasi ke gateway NAT. Namun, jika komputer virtual dimulai ulang, status koneksi memerah. Saat status koneksi dihapus, semua koneksi mulai menggunakan alamat IP atau alamat sumber daya gateway NAT. Perilaku ini adalah efek samping dari mesin virtual yang dihidupkan ulang, dan bukan merupakan indikator bahwa reboot diperlukan.

    • Jika Anda masih mengalami masalah, buka kasus dukungan untuk pemecahan masalah lebih lanjut.

  • Rute kustom yang mengarahkan lalu lintas 0.0.0.0/0 ke NVA akan lebih diutamakan daripada gateway NAT untuk merutekan lalu lintas ke internet. Agar gateway NAT merutekan lalu lintas ke internet alih-alih NVA, hapus rute kustom untuk lalu lintas 0.0.0.0/0 yang masuk ke appliance virtual. Lalu lintas 0.0.0.0/0 dilanjutkan menggunakan rute default ke internet dan gateway NAT digunakan sebagai gantinya.

Penting

Sebelum membuat perubahan pada cara rute lalu lintas, pertimbangkan dengan cermat persyaratan perutean arsitektur cloud Anda.

  • Layanan yang disebarkan di wilayah yang sama dengan akun penyimpanan Azure menggunakan alamat IP Azure privat untuk komunikasi. Anda tidak dapat membatasi akses ke layanan Azure tertentu berdasarkan rentang alamat IP keluar publik mereka. Untuk informasi selengkapnya, lihat pembatasan untuk aturan jaringan IP.
  • Private Link dan titik akhir layanan menggunakan alamat IP privat instans komputer virtual di jaringan virtual Anda untuk terhubung ke layanan platform Azure alih-alih IP publik gateway NAT. Gunakan Private Link untuk menyambungkan ke layanan Azure lainnya melalui backbone Azure alih-alih melalui internet dengan gateway NAT.

Catatan

Private Link adalah opsi yang direkomendasikan dibandingkan Titik akhir layanan untuk akses privat ke layanan yang dihosting Azure.

Kegagalan koneksi di tujuan internet publik

Skenario

Koneksi gateway NAT ke tujuan internet gagal atau waktu habis.

Kemungkinan Penyebabnya

  • Firewall atau komponen manajemen lalu lintas lain pada tujuan.

  • Pembatasan laju API diberlakukan oleh sisi tujuan.

  • Mitigasi DDoS volumetrik atau pembentukan lalu lintas lapisan transportasi.

  • Titik akhir tujuan merespons dengan paket terfragmentasi.

Cara memecahkan masalah

  • Validasi konektivitas ke titik akhir di wilayah yang sama atau di tempat lain sebagai perbandingan.

  • Lakukan pengambilan paket dari sisi sumber dan tujuan.

  • Lihat jumlah paket di sumber dan tujuan (jika tersedia) untuk menentukan berapa banyak upaya koneksi yang dilakukan.

  • Lihat paket yang dihilangkan untuk melihat berapa banyak paket yang dijatuhkan oleh gateway NAT.

  • Analisis paket. Paket TCP dengan paket protokol IP terfragmentasi menunjukkan fragmentasi IP. Gateway NAT tidak mendukung fragmentasi IP sehingga koneksi dengan paket terfragmentasi gagal.

  • Pastikan BAHWA IP publik gateway NAT tercantum sebagaimana diizinkan di tujuan mitra dengan Firewall atau komponen manajemen lalu lintas lainnya.

Solusi yang mungkin untuk kegagalan koneksi di tujuan internet

  • Verifikasi IP publik gateway NAT tercantum sebagaimana diizinkan di tujuan.

  • Jika Anda membuat pengujian laju transaksi atau volume tinggi, jelajahi apakah pengurangan laju mengurangi terjadinya kegagalan.

  • Jika mengurangi laju koneksi mengurangi terjadinya kegagalan, periksa apakah tujuan mencapai batas laju API atau batasan lainnya.

Koneksi kegagalan di server FTP untuk mode aktif atau pasif

Skenario

Anda melihat kegagalan koneksi di server FTP saat menggunakan gateway NAT dengan mode FTP aktif atau pasif.

Kemungkinan Penyebabnya

  • Mode FTP aktif diaktifkan.

  • Mode FTP pasif diaktifkan dan gateway NAT menggunakan lebih dari satu alamat IP publik.

Kemungkinan solusi untuk mode FTP Aktif

FTP menggunakan dua saluran terpisah antara klien dan server, perintah dan saluran data. Setiap saluran berkomunikasi pada koneksi TCP terpisah, satu untuk mengirim perintah dan yang lainnya untuk mentransfer data.

Dalam mode FTP aktif, klien membuat saluran perintah dan server membuat saluran data.

Gateway NAT tidak kompatibel dengan mode FTP aktif. FTP aktif menggunakan perintah PORT dari klien FTP yang memberi tahu server FTP alamat IP dan port apa yang digunakan server pada saluran data untuk terhubung kembali ke klien. Perintah PORT menggunakan alamat privat klien, yang tidak dapat diubah. Lalu lintas sisi klien di-SNAT oleh gateway NAT untuk komunikasi berbasis internet sehingga perintah PORT dipandang tidak valid oleh server FTP.

Solusi alternatif untuk mode FTP aktif adalah menggunakan mode FTP pasif sebagai gantinya. Namun, untuk menggunakan gateway NAT dalam mode FTP pasif, beberapa pertimbangan harus dibuat.

Kemungkinan solusi untuk mode FTP Pasif

Dalam mode FTP pasif, klien membuat koneksi pada perintah dan saluran data. Klien meminta agar server menjawab port alih-alih mencoba membuat koneksi kembali ke klien.

FTP Pasif Keluar tidak berfungsi untuk gateway NAT dengan beberapa alamat IP publik, tergantung pada konfigurasi server FTP Anda. Saat gateway NAT dengan beberapa alamat IP publik mengirim lalu lintas keluar, gateway tersebut secara acak memilih salah satu alamat IP publiknya untuk alamat IP sumber. FTP gagal ketika data dan saluran kontrol menggunakan alamat IP sumber yang berbeda, tergantung pada konfigurasi server FTP Anda.

Untuk mencegah kemungkinan kegagalan koneksi FTP pasif, lakukan langkah-langkah berikut:

  1. Periksa apakah gateway NAT Anda dilampirkan ke satu alamat IP publik daripada beberapa alamat IP atau awalan.

  2. Pastikan bahwa rentang port pasif dari gateway NAT Anda diizinkan untuk melewati firewall apa pun di titik akhir tujuan.

Catatan

Mengurangi jumlah alamat IP publik di gateway NAT Anda mengurangi inventaris port SNAT yang tersedia untuk membuat koneksi keluar dan dapat meningkatkan risiko kelelahan port SNAT. Pertimbangkan kebutuhan konektivitas SNAT Anda sebelum menghapus alamat IP publik dari gateway NAT. Tidak disarankan untuk mengubah pengaturan server FTP untuk menerima kontrol dan lalu lintas sarana data dari alamat IP sumber yang berbeda.

Koneksi keluar pada port 25 diblokir

Skenario

Tidak dapat tersambung keluar dengan gateway NAT pada port 25 untuk lalu lintas Simple Mail Transfer Protocol (SMTP).

Penyebab

Platform Azure memblokir koneksi SMTP keluar pada port TCP 25 untuk VM yang disebarkan. Blok ini untuk memastikan keamanan yang lebih baik untuk mitra dan pelanggan Microsoft, melindungi platform Azure Microsoft, dan sesuai dengan standar industri.

Gunakan layanan relai SMTP terautentikasi untuk mengirim email dari Azure VM atau dari Azure App Service. Untuk informasi selengkapnya, lihat memecahkan masalah konektivitas SMTP keluar.

Lihat panduan pemecahan masalah.

Tangkapan jaringan tambahan

Jika penyelidikan Anda tidak menghasilkan kesimpulan yang pasti, buka kasus dukungan untuk pemecahan masalah lebih lanjut dan kumpulkan informasi berikut untuk resolusi masalah yang lebih cepat. Pilih satu komputer virtual di subnet yang dikonfigurasi gateway NAT Anda dan lakukan pengujian berikut:

  • Uji respons port probe menggunakan ps ping dari salah satu VM backend dalam jaringan virtual dan rekam hasil (misalnya: ps ping 10.0.0.4:3389).

  • Jika tidak ada respons yang diterima dalam pengujian ping ini, jalankan jejak simultan netsh pada komputer virtual backend, dan komputer virtual pengujian jaringan virtual saat Anda menjalankan PsPing, lalu hentikan netsh jejak.

Praktik terbaik konektivitas keluar

Azure memantau dan mengoperasikan infrastrukturnya dengan sangat cermat. Namun, kegagalan sementara masih dapat terjadi dari aplikasi yang disebarkan, dan tidak ada jaminan transmisi tanpa kehilangan. Gateway NAT adalah opsi yang lebih disukai untuk membangun konektivitas keluar yang sangat andal dan tangguh dari penyebaran Azure. Untuk mengoptimalkan efisiensi koneksi aplikasi, lihat panduan nanti di artikel.

Gunakan pengumpulan koneksi

Ketika Anda mengumpulkan sambungan Anda, Anda sedang menghindari membuka sambungan jaringan baru agar tidak melakukan panggilan ke alamat dan port yang sama. Gunakan skema penyatuan sambungan dalam aplikasi Anda, yaitu saat permintaan didistribusikan secara internal di seluruh rangkaian sambungan yang tetap dan digunakan kembali jika memungkinkan. Skema ini membatasi jumlah port SNAT yang digunakan dan menciptakan lingkungan yang lebih dapat diprediksi. Pengumpulan sambungan membantu mengurangi latensi dan pemanfaatan sumber daya, sehingga meningkatkan performa aplikasi Anda.

Untuk mengumpulkan sambungan HTTP, tinjau Mengumpulkan sambungan HTTP dengan HttpClientFactory.

Menggunakan kembali koneksi

Daripada menghasilkan sambungan TCP atomik untuk setiap permintaan, sebaiknya konfigurasikan aplikasi Anda agar menggunakan kembali sambungan. Penggunaan kembali koneksi menghasilkan transaksi TCP dengan performa lebih baik dan sangat relevan untuk protokol seperti HTTP/1.1, yang penggunaan kembali koneksinya adalah default. Penggunaan kembali ini berlaku untuk protokol lain yang menggunakan HTTP sebagai transportasinya seperti REST.

Gunakan logika coba lagi yang kurang agresif

Ketika port SNAT habis atau kegagalan aplikasi terjadi, percobaan ulang yang agresif atau kasar tanpa penundaan dan logika back-off menyebabkan kelelahan atau bahkan kelelahan terus terjadi. Anda dapat mengurangi permintaan untuk port SNAT dengan menggunakan logika coba lagi yang kurang agresif.

Bergantung pada batas waktu diam yang dikonfigurasi, jika percobaan ulang terlalu agresif, koneksi tidak memiliki cukup waktu untuk menutup dan merilis port SNAT untuk digunakan kembali.

Untuk panduan dan contoh tambahan, lihat Pola percobaan ulang.

Gunakan keepalive untuk mengatur ulang batas waktu habis siaga keluar

Untuk informasi selengkapnya tentang keepalives, lihat Batas waktu diam TCP.

Jika memungkinkan, Private Link harus digunakan untuk menyambungkan langsung dari jaringan virtual Anda ke layanan platform Azure demi mengurangi permintaan pada port SNAT. Mengurangi permintaan pada port SNAT dapat membantu mengurangi risiko kelelahan port SNAT.

Untuk membuat Private Link, lihat panduan Mulai Cepat berikut untuk memulai:

Langkah berikutnya

Kami selalu berusaha untuk meningkatkan pengalaman pelanggan kami. Jika Anda mengalami masalah gateway NAT yang tidak diatasi atau diselesaikan oleh artikel ini, berikan umpan balik melalui GitHub di bagian bawah halaman ini.

Untuk mempelajari selengkapnya mengenai gateway NAT, lihat: