Listener Lapisan 4 dari Network Load Balancer (NLB) dapat bekerja sama dengan server backend untuk melestarikan alamat IP klien. Dalam banyak kasus, jika pelestarian alamat IP klien diaktifkan untuk server backend, server backend dapat memperoleh alamat IP klien. Namun, jika klien IPv6 mengakses layanan IPv4, instance NLB dikonfigurasi dengan listener yang menggunakan SSL melalui TCP, dan server backend ditentukan oleh alamat IP, server backend tidak dapat memperoleh alamat IP klien kecuali Protokol Proxy diaktifkan.
Bagaimana NLB melestarikan alamat IP klien

Aktifkan fitur pelestarian alamat IP klien
Jika Anda mengaktifkan Client IP Preservation saat membuat grup server untuk instance NLB, server backend dapat memperoleh alamat IP sumber, yaitu alamat IP klien.
Dalam beberapa skenario, fitur ini tidak berlaku. Anda perlu mengaktifkan Protokol Proxy agar server backend dapat memperoleh alamat IP klien. Untuk informasi lebih lanjut, lihat Aktifkan Protokol Proxy.
Aktifkan Protokol Proxy
Protokol Proxy adalah protokol internet yang meneruskan informasi koneksi asli antara server proxy dan server backend.
Dalam banyak kasus, header permintaan yang membawa alamat IP klien sumber ditimpa setelah permintaan diteruskan dari server proxy ke server backend. Alamat IP klien sumber dan port diganti dengan alamat IP dan port dari server proxy. Akibatnya, server backend tidak dapat memperoleh informasi koneksi asli.
Protokol Proxy memungkinkan server proxy untuk mengenkapsulasi informasi koneksi asli dalam header permintaan, yang kemudian diteruskan ke server backend. Server backend dapat memperoleh informasi koneksi asli dengan menguraikan header permintaan yang dienkapsulasi oleh Protokol Proxy. Informasi tersebut mencakup alamat IP sumber, port sumber, dan protokol transmisi.
Protokol Proxy melestarikan informasi koneksi asli untuk mendukung pencatatan log tingkat lanjut, kontrol akses, dan pemantauan lalu lintas.
Protokol Proxy hanya berfungsi jika diaktifkan pada server proxy dan server backend. Jika server backend tidak dapat mengurai header Protokol Proxy tetapi Protokol Proxy diaktifkan, kesalahan penguraian mungkin terjadi pada server backend dan mengganggu ketersediaan layanan.
NLB memungkinkan listener menggunakan Protokol Proxy untuk melestarikan informasi koneksi asli, termasuk alamat IP sumber, alamat IP tujuan, port sumber, dan tujuan, serta menyisipkan informasi koneksi ke header TCP atau UDP tanpa menimpa data asli.
NLB hanya mendukung Protokol Proxy v2. Protokol Proxy v2 mendukung berbagai protokol transmisi, seperti TCP dan UDP. Untuk informasi lebih lanjut, lihat The PROXY protocol.
Skema berikut memerlukan NLB dan server backend untuk mengaktifkan Protokol Proxy agar alamat IP klien dapat dilestarikan:
Klien IPv6 mengakses layanan IPv4 yang ditempatkan di server backend.
Instance NLB dikonfigurasi dengan listener yang menggunakan SSL melalui TCP. Listener yang menggunakan SSL melalui TCP tidak dapat dikaitkan dengan grup server yang memiliki pelestarian alamat IP klien diaktifkan.
Server backend dari instance NLB ditentukan oleh alamat IP. Jenis server backend ini tidak mendukung pelestarian alamat IP klien.
Prosedur
Aktifkan fitur pelestarian alamat IP klien
Prasyarat
Grup server NLB telah dibuat, dan server backend telah ditambahkan ke grup server. Dalam contoh ini, grup server tipe server dibuat. Protokol backend adalah TCP, Instance Elastic Compute Service (ECS) digunakan sebagai server backend, dan port 80 digunakan oleh aplikasi backend. Untuk informasi lebih lanjut, lihat Buat dan Kelola Grup Server.
Instance NLB telah dibuat, dan listener telah dibuat untuk instance NLB. Listener TCP yang menggunakan port 80 digunakan dalam contoh ini. Untuk informasi lebih lanjut, lihat Buat dan Kelola Instance NLB dan Tambahkan Listener TCP.
Langkah 1: Periksa apakah grup server memiliki pelestarian alamat IP klien diaktifkan
Masuk ke Konsol NLB.
Di bilah navigasi atas, pilih wilayah tempat instance NLB ditempatkan.
Di halaman Server Groups, klik ID grup server yang ingin Anda kelola.
Di halaman detail grup server, periksa apakah status Client IP Preservation adalah Enabled. Jika statusnya adalah Disabled, klik Modify Basic Information untuk mengaktifkan fitur tersebut.
Langkah 2: Periksa apakah server backend dapat melestarikan alamat IP klien
Jika aplikasi NGINX ditempatkan di server backend, Anda dapat memeriksa log NGINX untuk menentukan apakah server backend dapat melestarikan alamat IP klien.
Blok kode berikut menunjukkan konfigurasi default bidang dalam log NGINX.
http {
# Konfigurasi default
log_format main '$remote_addr- $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#...
}
Path default log NGINX adalah /var/log/nginx/access.log.
Alamat IP pertama dalam setiap entri log adalah alamat IP klien.

Aktifkan Protokol Proxy
Prasyarat
Sebuah grup server NLB telah dibuat, dan server backend telah ditambahkan ke grup server tersebut. Dalam contoh ini, sebuah grup server dengan tipe server dibuat. Protokol backend adalah TCP, Instance ECS digunakan sebagai server backend, dan port 80 digunakan oleh aplikasi backend. Untuk informasi lebih lanjut, lihat Buat dan Kelola Grup Server.
Sebuah instance NLB telah dibuat, dan sebuah listener telah dibuat untuk instance NLB tersebut. Sebuah Listener TCP yang menggunakan port 80 digunakan dalam contoh ini. Untuk informasi lebih lanjut, lihat Buat dan Kelola Instance NLB.
CatatanSebelum mengaktifkan Protokol Proxy, pastikan server backend Anda mendukung Protokol Proxy v2.
Jika beberapa listener dikaitkan dengan grup server backend yang sama, Protokol Proxy harus diaktifkan di semua listener.
NGINX Plus R16 dan versi lebih baru serta open source NGINX 1.13.11 dan versi lebih baru mendukung Protokol Proxy v2.
Langkah 1: Aktifkan Protokol Proxy untuk listener
Masuk ke Konsol NLB.
Di bilah navigasi atas, pilih wilayah tempat instance NLB ditempatkan.
Di halaman Instances, klik ID instance yang ingin Anda kelola.
Di halaman detail instance, klik tab Listener, dan klik ID listener yang ingin Anda kelola.
Di halaman detail listener, periksa apakah status Enable Proxy Protocol adalah Enabled. Jika Protokol Proxy dinonaktifkan, klik Modify Listener untuk mengaktifkan Protokol Proxy.
Langkah 2: Aktifkan Protokol Proxy untuk server backend
Dalam contoh ini, sistem operasi CentOS 7.9 dan NGINX 1.20.1 digunakan. Sesuaikan konfigurasi berdasarkan lingkungan yang Anda gunakan.
Masuk ke server backend dan jalankan perintah
nginx -tuntuk menanyakan path file konfigurasi. Path default adalah/etc/nginx/nginx.conf, yang mungkin bervariasi berdasarkan lingkungan yang Anda gunakan.Ubah konfigurasi Protokol Proxy dan simpan modifikasi. Blok kode berikut menunjukkan sebuah contoh.
http { # Tetapkan variabel $proxy_protocol_addr, yang digunakan untuk mencatat alamat IP klien. log_format main '$proxy_protocol_addr - $remote_addr- $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # Tentukan bahwa listener menggunakan port 80, dan tambahkan proxy_protocol. server { listen 80 proxy_protocol; #... } }Jalankan perintah
sudo nginx -s reloaduntuk memuat ulang file konfigurasi NGINX.
Langkah 3: Uji apakah server backend dapat melestarikan alamat IP klien
Jika aplikasi NGINX ditempatkan di server backend, Anda dapat memeriksa log NGINX untuk menentukan apakah server backend dapat melestarikan alamat IP klien.
Path default log NGINX adalah /var/log/nginx/access.log.
Dalam setiap entri log, alamat IP dalam variabel $proxy_protocol_addr adalah alamat IP klien.

Paket sampel yang ditransmisikan melalui Protokol Proxy v2
Server backend yang Anda gunakan berbeda dari yang ada di contoh sebelumnya, Anda dapat merujuk manual penyedia server Anda dan The PROXY protocol untuk menyesuaikan konfigurasi penguraian berdasarkan struktur paket yang didefinisikan oleh Protokol Proxy v2.
Contoh berikut menunjukkan bagaimana alamat IP klien IPv4 dilestarikan di header Protokol Proxy v2 dalam format biner.

Contoh berikut menunjukkan bagaimana alamat IP klien IPv6 dilestarikan di header Protokol Proxy v2 dalam format biner.

FAQ
Bagaimana CLB melestarikan alamat IP klien ketika ditempatkan di kluster Container Service for Kubernetes (ACK)?
CLB dapat melestarikan alamat IP klien saat digunakan dalam kluster ACK. Pelestarian alamat IP klien dapat dilakukan melalui berbagai metode. Untuk detail lebih lanjut, lihat Bagaimana cara mengonfigurasi pod untuk memperoleh alamat IP asli klien?
Referensi
Application Load Balancer (ALB), Classic Load Balancer (CLB), dan NLB menggunakan metode berbeda untuk melestarikan alamat IP klien.
Listener Lapisan 4 dari CLB dapat secara langsung melestarikan alamat IP klien atau menggunakan Protokol Proxy. Untuk informasi lebih lanjut, lihat Aktifkan listener Lapisan 4 untuk melestarikan alamat IP klien.
Listener Lapisan 7 dari CLB menggunakan Header X-Forwarded-For untuk melestarikan alamat IP klien. Untuk informasi lebih lanjut, lihat Aktifkan listener Lapisan 7 untuk melestarikan alamat IP klien.
ALB menggunakan Header X-Forwarded-For untuk melestarikan alamat IP klien. Untuk informasi lebih lanjut, lihat Aktifkan ALB untuk melestarikan alamat IP klien dan meneruskannya ke server backend.