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 |
1. Menggunakan alamat IP frontend dari load balancer untuk keluar melalui 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.
Ketika beberapa IP frontend dikonfigurasi menggunakan aturan keluar, koneksi keluar mungkin berasal dari SALAH SATU IP frontend yang dikonfigurasi ke instans backend. Kami tidak menyarankan untuk membangun dependensi apa pun di ip frontend mana yang dapat dipilih untuk koneksi.
Untuk informasi selengkapnya tentang aturan keluar, lihat Aturan keluar.
2. Mengaitkan gateway NAT ke subnet
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
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
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 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 menerima 512 port. Jika IP frontend kedua ditambahkan, setiap VM menerima 512 port tambahan. Ini berarti setiap VM dialokasikan total 1.024 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 diterapkan 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.
Penggunaan kembali port
Untuk koneksi TCP, load balancer menggunakan satu port SNAT untuk setiap IP dan port tujuan. Untuk koneksi ke IP tujuan yang sama, satu port SNAT dapat digunakan kembali selama port tujuan berbeda. Penggunaan kembali tidak dimungkinkan ketika sudah ada koneksi ke IP dan port tujuan yang sama.
Untuk koneksi UDP, load balancer menggunakan algoritma NAT kerucut terbatas port, yang mengonsumsi satu port SNAT per IP tujuan, terlepas dari port tujuan.
Port individual dapat digunakan kembali untuk jumlah koneksi yang tidak terbatas di mana penggunaan kembali diizinkan (ketika IP tujuan atau port berbeda).
Dalam contoh dalam tabel berikut, instans backend dengan IP privat 10.0.0.1 membuat koneksi TCP ke IP tujuan 23.53.254.142 dan 26.108.254.155, sementara load balancer dikonfigurasi dengan alamat IP frontend 192.0.2.0. Karena IP tujuan berbeda, port SNAT yang sama dapat digunakan kembali untuk beberapa koneksi.
Alur | Tuple sumber | Tuple sumber setelah SNAT | Tuple tujuan |
---|---|---|---|
1 | 10.0.0.1:80 | 192.0.2.0:1 | 23.53.254.142:80 |
2 | 10.0.0.1:80 | 192.0.2.0:1 | 26.108.254.155:80 |
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 IPv4 sekunder antarmuka jaringan tidak didukung dengan aturan keluar. Untuk konektivitas keluar pada konfigurasi IPv4 sekunder, lampirkan IP publik tingkat instans atau manfaatkan NAT Gateway sebagai gantinya.
Langkah berikutnya
- Memecahkan masalah kegagalan koneksi keluar karena kehabisan SNAT
- Tinjau metrik SNAT dan pelajari cara yang tepat untuk memfilter, memisahkan, dan melihatnya.
- Pelajari cara melakukan migrasi metode konektivitas keluar yang sudah ada ke gateway NAT