Menggunakan Terjemahan Alamat Jaringan Sumber (SNAT) untuk sambungan keluar

Skenario tertentu mengharuskan mesin virtual atau instans komputasi memiliki konektivitas keluar ke internet. IP frontend load balancer publik Azure dapat digunakan untuk menyediakan konektivitas keluar ke internet untuk instans backend. Konfigurasi ini menggunakan terjemahan alamat jaringan sumber (SNAT) untuk menerjemahkan IP privat mesin virtual ke alamat IP publik load balancer. SNAT memetakan alamat IP backend ke alamat IP publik penyeimbang muatan Anda. SNAT mencegah sumber luar dari memiliki alamat langsung ke instans backend.

Metode konektivitas outbound Azure

Metode berikut adalah metode Azure yang paling umum digunakan untuk mengaktifkan konektivitas keluar:

# Metode Jenis alokasi port Tingkat produksi? Peringkat
1 Menggunakan alamat IP frontend load balancer untuk keluar melalui aturan keluar Statis, eksplisit Ya, tetapi tidak dalam skala besar OK
2 Mengaitkan gateway NAT ke subnet Dinamis, eksplisit Ya Terbaik
3 Menetapkan IP publik ke mesin virtual Statis, eksplisit Ya OK
4 Akses keluar default Implisit No Terburuk

Diagram opsi keluar Azure.

1. Menggunakan alamat IP frontend dari load balancer untuk keluar melalui aturan keluar

Diagram penyeimbang muatan publik dengan aturan keluar.

Aturan keluar memungkinkan Anda untuk secara eksplisit menentukan SNAT (terjemahan alamat jaringan sumber) untuk load balancer publik SKU standar. Konfigurasi ini memungkinkan Anda untuk menggunakan IP publik atau IP dari load balancer Anda untuk konektivitas keluar dari instans backend.

Konfigurasi ini mengaktifkan:

  • Penyamaran IP

  • Menyederhanakan daftar izin Anda

  • Mengurangi jumlah sumber daya IP publik untuk penyebaran

Dengan aturan keluar, Anda memiliki kontrol deklaratif penuh atas konektivitas internet keluar. Aturan outbound memungkinkan Anda untuk menskalakan dan menyelaraskan kemampuan ini dengan kebutuhan spesifik Anda melalui alokasi port manual. Mengalokasikan port SNAT secara manual berdasarkan ukuran kumpulan backend dan jumlah frontendIPConfigurations dapat membantu menghindari kehabisan SNAT.

Anda dapat mengalokasikan port SNAT secara manual baik dengan "port per instans" atau "jumlah maksimum instans backend". Jika Anda memiliki mesin virtual di backend, sebaiknya alokasikan port berdasarkan "port per instans" untuk mendapatkan penggunaan port SNAT maksimum.

Hitung port per instans sebagai berikut:

Jumlah IP frontend * 64K / Jumlah instans backend

Jika Anda memiliki Virtual Machine Scale Sets di backend, disarankan untuk mengalokasikan port dengan "jumlah maksimum instans backend". Jika lebih banyak VM ditambahkan ke backend daripada port SNAT yang tersisa yang diizinkan, peluasan skala Set Skala Komputer Virtual dapat diblokir, atau VM baru tidak akan menerima port SNAT yang memadai.

Untuk informasi selengkapnya tentang aturan keluar, lihat Aturan keluar.

2. Mengaitkan gateway NAT ke subnet

Diagram gateway NAT dan penyeimbang beban publik.

Azure NAT Gateway menyederhanakan konektivitas Internet khusus keluar untuk jaringan virtual. Saat dikonfigurasi pada subnet, semua konektivitas keluar menggunakan alamat IP publik statis yang ditentukan. Konektivitas keluar dimungkinkan tanpa load balancer atau alamat IP publik yang langsung melekat pada komputer virtual. NAT Gateway dikelola sepenuhnya dan sangat tangguh.

Menggunakan gateway NAT adalah metode terbaik untuk konektivitas keluar. Gateway NAT sangat dapat diperluas, dapat diandalkan, dan tidak memiliki kekhawatiran yang sama tentang kelelahan port SNAT.

Gateway NAT lebih diutamakan daripada metode konektivitas keluar lainnya, termasuk load balancer, alamat IP publik tingkat instans, dan Azure Firewall.

Untuk informasi selengkapnya tentang Azure NAT Gateway, lihat Apa itu Azure NAT Gateway.

3. Menetapkan IP publik ke mesin virtual

Diagram mesin virtual dengan alamat IP publik tingkat instans.

Asosiasi Metode Protokol IP
IP Publik di NIC VM SNAT (Source Network Address Translation)
tidak digunakan.
TCP (Protokol Kendali Transmisi)
UDP (Protokol Datagram Pengguna)
ICMP (Protokol Pesan Kontrol Internet)
ESP (Enkapsulasi Keamanan Payload)

Lalu lintas kembali ke klien yang meminta dari alamat IP publik komputer virtual (IP Tingkat Instans).

Azure menggunakan IP publik yang ditetapkan ke konfigurasi IP NIC instans untuk semua alur keluar. Instans memiliki semua port sementara yang tersedia. Tidak masalah apakah komputer virtual berimbang muatan atau tidak. Skenario ini lebih diutamakan daripada yang lain, kecuali untuk NAT Gateway.

IP publik yang ditetapkan ke komputer virtual adalah hubungan 1:1 (bukan 1: banyak) dan diimplementasikan sebagai NAT 1:1 tanpa status.

4. Akses keluar default

Diagram akses keluar default.

Di Azure, mesin virtual yang dibuat dalam jaringan virtual tanpa penetapan konektivitas keluar eksplisit diberi alamat IP publik keluar default. Alamat IP ini memungkinkan konektivitas keluar dari sumber daya ke internet. Akses ini disebut sebagai akses keluar default. Metode akses ini tidak disarankan karena tidak aman dan alamat IP dapat berubah.

Penting

Pada 30 September 2025, akses keluar default untuk penyebaran baru akan dihentikan. Untuk informasi selengkapnya, lihat pengumuman resmi. Disarankan untuk menggunakan satu bentuk konektivitas eksplisit seperti yang ditunjukkan pada opsi 1-3 di atas.

Apa itu port SNAT?

Port digunakan untuk menghasilkan pengidentifikasi unik yang digunakan untuk mempertahankan aliran yang berbeda. Internet menggunakan lima tuple agar menghasilkan perbedaan.

Jika port digunakan untuk sambungan masuk, port memiliki pendengar untuk permintaan sambungan masuk pada port tersebut. Port tidak bisa digunakan untuk sambungan keluar. Untuk membangun koneksi keluar, port sementara digunakan untuk menyediakan tujuan dengan port tempat untuk berkomunikasi dan mempertahankan arus lalu lintas yang berbeda. Ketika port sementara ini digunakan untuk SNAT, mereka disebut port SNAT.

Menurut definisi, setiap alamat IP memiliki 65.535 port. Setiap port dapat digunakan untuk sambungan masuk atau keluar untuk TCP (Protokol Kendali Transmisi) dan UDP (Protokol Datagram Pengguna). Ketika alamat IP publik ditambahkan sebagai IP frontend ke load balancer, 64.000 port yang memenuhi syarat untuk SNAT.

Setiap port yang digunakan dalam aturan NAT penyeimbangan beban atau masuk menggunakan rentang delapan port dari 64.000 port SNAT yang tersedia. Penggunaan ini mengurangi jumlah port yang memenuhi syarat untuk SNAT, jika IP frontend yang sama digunakan untuk konektivitas keluar. Jika aturan LOAD-balancing atau NAT masuk yang digunakan port berada di blok yang sama dari delapan port yang digunakan oleh aturan lain, aturan tidak memerlukan port tambahan.

Catatan

Jika Anda perlu menyambungkan ke layanan Azure PaaS yang didukung seperti Azure Storage, Azure SQL, atau Azure Cosmos DB, Anda dapat menggunakan Azure Private Link untuk menghindari SNAT sepenuhnya. Azure Private Link mengirim lalu lintas dari jaringan virtual Anda ke layanan Azure melalui jaringan backbone Azure alih-alih melalui internet.

Private Link adalah opsi yang direkomendasikan dibandingkan titik akhir layanan untuk akses privat ke layanan yang di-hosting Azure. Untuk informasi selengkapnya tentang perbedaan antara Private Link dan titik akhir layanan, lihat Membandingkan Titik Akhir Privat dan Titik Akhir Layanan.

Bagaimana cara kerja SNAT default?

Saat kompuiter virtual membuat aliran keluar, Azure menerjemahkan alamat IP sumber ke alamat IP sementara. Terjemahan ini dilakukan melalui SNAT.

Jika menggunakan SNAT tanpa aturan keluar melalui load balancer publik, port SNAT telah dialokasikan sebelumnya seperti yang dijelaskan dalam tabel alokasi port SNAT default berikut:

Tabel alokasi port default

Saat aturan penyeimbangan beban dipilih untuk menggunakan alokasi port default, atau aturan keluar dikonfigurasi dengan "Gunakan jumlah default port keluar", port SNAT dialokasikan secara default berdasarkan ukuran kumpulan backend. Backend akan menerima jumlah port yang ditentukan oleh tabel, per IP frontend, hingga maksimum 1024 port.

Sebagai contoh, dengan 100 VM di kumpulan backend dan hanya satu IP frontend, setiap VM akan menerima 512 port. Jika IP frontend kedua ditambahkan, setiap VM akan menerima 512 port tambahan. Ini berarti setiap VM dialokasikan total 1024 port. Akibatnya, menambahkan IP frontend ketiga TIDAK akan meningkatkan jumlah port SNAT yang dialokasikan di luar 1024 port.

Sebagai aturan praktis, jumlah port SNAT yang disediakan ketika alokasi port default dimanfaatkan dapat dihitung sebagai: MIN(# port SNAT default yang disediakan berdasarkan ukuran kumpulan * jumlah IP frontend yang terkait dengan kumpulan, 1024)

Tabel berikut menunjukkan pra-alokasi port SNAT untuk SATU IP frontend, tergantung pada ukuran kumpulan backend:

Ukuran kumpulan (instans komputer virtual) Port SNAT default
1-50 1,024
51-100 512
101-200 256
201-400 128
401-800 64
801-1.000 32

Kehabisan port

Setiap koneksi ke IP tujuan dan port tujuan yang sama menggunakan port SNAT. Koneksi ini mempertahankan alur lalu lintas yang berbeda dari instans backend atau klien ke server. Proses ini memberi server port yang berbeda untuk mengatasi lalu lintas. Tanpa proses ini, komputer klien tidak menyadari alur paket mana yang merupakan bagian darinya.

Bayangkan memiliki beberapa browser menuju ke https://www.microsoft.com, yaitu:

  • IP Tujuan = 23.53.254.142

  • Port Tujuan = 443

  • Protokol = TCP

Tanpa port SNAT untuk lalu lintas kembali, klien tidak memiliki cara untuk memisahkan satu hasil kueri dari yang lain.

Sambungan keluar bisa meledak. Instans backend dapat dialokasikan port yang tidak mencukupi. Gunakan fungsi penggunaan ulang koneksi dalam aplikasi Anda. Tanpa penggunaan ulang koneksi, risiko kehabisan port SNAT akan meningkat.

Untuk informasi selengkapnya tentang penggabungan koneksi dengan Azure App Service, lihat Memecahkan masalah kesalahan koneksi keluar yang terputus-putus di Azure App Service

Koneksi keluar baru ke IP tujuan gagal ketika kelelahan port terjadi. Koneksi berhasil ketika port tersedia. Port habis terjadi ketika 64.000 port dari alamat IP tersebar tipis di banyak instans backend. Untuk panduan tentang mitigasi kehabisan port SNAT, lihat panduan pemecahan masalah.

Untuk koneksi TCP, load balancer menggunakan satu port SNAT untuk setiap IP dan port tujuan. Multiuse ini memungkinkan beberapa koneksi ke IP tujuan yang sama dengan port SNAT yang sama. Multiuse ini dibatasi jika koneksi tidak ke port tujuan yang berbeda.

Untuk koneksi UDP, penyeimbang muatan menggunakan algoritma NAT kerucut terbatas port, yang mengkonsumsi satu port SNAT per IP tujuan apa pun port tujuannya.

Port digunakan kembali untuk jumlah koneksi yang tidak terbatas. Porta hanya digunakan kembali jika IP atau port tujuan berbeda.

Kendala

  • Ketika koneksi tidak aktif tanpa paket baru yang dikirim, port akan dirilis setelah 4 - 120 menit.

  • Ambang ini dapat dikonfigurasi melalui aturan keluar.

  • Setiap alamat IP menyediakan 64.000 port yang dapat digunakan untuk SNAT.

  • Setiap port dapat digunakan untuk koneksi TCP dan UDP ke alamat IP tujuan

  • Port SNAT UDP diperlukan baik saat port tujuan unik atau tidak. Untuk setiap koneksi UDP ke IP tujuan, satu port SNAT UDP digunakan.

  • Port SNAT TCP dapat digunakan untuk beberapa koneksi ke IP tujuan yang sama asalkan port tujuan berbeda.

  • Kehabisan SNAT terjadi ketika instans backend kehabisan Port SNAT yang diberikan. Penyeimbang muatan masih dapat memiliki port SNAT yang tidak digunakan. Jika port SNAT yang digunakan instans backend melebihi port SNAT yang diberikan, instans backend tidak dapat membuat koneksi keluar baru.

  • Paket terfragmentasi dihilangkan kecuali keluar melalui IP publik tingkat instans pada NIC VM.

  • Konfigurasi IP sekunder dari antarmuka jaringan tidak menyediakan komunikasi keluar (kecuali jika IP Publik dikaitkan dengan IP sekunder) melalui load balancer.

Langkah berikutnya