Pendengar layer 4 Network Load Balancer (NLB) memungkinkan server backend mendapatkan alamat IP client. Dalam kebanyakan kasus, mengaktifkan pelestarian IP client pada kelompok server sudah cukup. Namun, Anda harus mengaktifkan Proxy Protocol baik pada pendengar NLB maupun server backend ketika client IPv6 mengakses layanan IPv4, instans NLB menggunakan pendengar TCPSSL, atau instans NLB dikaitkan dengan kelompok server bertipe IP.
Metode untuk mendapatkan alamat IP client

Gunakan pelestarian IP client
Saat membuat kelompok server untuk instans NLB, Anda dapat mengaktifkan Client IP Preservation. Dengan fitur ini diaktifkan, server backend menerima alamat IP client aktual sebagai alamat IP sumber.
Dalam skenario tertentu, pelestarian IP client tidak tersedia dan Anda harus menggunakan Proxy Protocol sebagai gantinya. Untuk informasi selengkapnya, lihat Use Proxy Protocol.
Gunakan Proxy Protocol
Proxy Protocol adalah protokol yang menyampaikan informasi koneksi asli client dari server proxy ke server backend.
Tanpa Proxy Protocol, server proxy mengganti alamat IP sumber dan port client dengan miliknya sendiri dalam header permintaan, sehingga server backend tidak dapat melihat detail koneksi asli.
Dengan Proxy Protocol, server proxy menambahkan informasi koneksi asli di awal header khusus. Server backend mengurai header ini untuk mengambil alamat IP sumber, port sumber, dan protokol transport client.
Hal ini memungkinkan pencatatan log, kontrol akses, dan pemantauan lalu lintas yang akurat pada server backend.
-
Penting: Proxy Protocol harus didukung baik oleh server proxy (dalam hal ini, pendengar NLB) maupun server backend. Jika Anda mengaktifkan fitur ini tetapi server backend Anda tidak dapat mengurai header Proxy Protocol, penguraian permintaan dapat gagal dan berdampak pada ketersediaan layanan.
-
Pendengar NLB menggunakan Proxy Protocol untuk menambahkan informasi koneksi asli, seperti alamat IP sumber, alamat IP tujuan, port sumber, dan port tujuan, ke header data TCP atau UDP. Proses ini tidak membuang atau menimpa data yang sudah ada.
-
NLB hanya mendukung Proxy Protocol v2. Proxy Protocol v2 mendukung beberapa protokol transport, seperti TCP dan UDP. Untuk informasi selengkapnya, lihat The PROXY protocol.
Aktifkan Proxy Protocol pada pendengar NLB dan server backend dalam skenario berikut:
-
Client IPv6 mengakses layanan IPv4 pada server backend
-
Instans NLB menggunakan pendengar TCPSSL (Pendengar TCPSSL tidak dapat dikaitkan dengan kelompok server yang telah mengaktifkan pelestarian IP client.)
-
Instans NLB dikaitkan dengan kelompok server bertipe IP (Kelompok server bertipe IP tidak mendukung pelestarian IP client.)
Prosedur
Pelestarian IP client
Prasyarat
-
Anda telah membuat kelompok server NLB dan menambahkan server backend ke dalamnya. Topik ini menggunakan kelompok server bertipe ECS sebagai contoh. Protokol backend adalah TCP, instans ECS digunakan sebagai server backend, dan aplikasi pada server backend menggunakan port 80. Untuk informasi selengkapnya, lihat NLB server groups.
-
Anda telah membuat instans NLB dan menambahkan pendengar ke dalamnya. Topik ini menggunakan pendengar TCP pada port 80 sebagai contoh. Untuk informasi selengkapnya, lihat Create and manage NLB instances dan Add a TCP listener.
Langkah 1: Periksa pelestarian IP client
-
Masuk ke Network Load Balancer console.
-
Pada bilah navigasi atas, pilih wilayah tempat instans ditempatkan.
-
Pada halaman Server Groups, temukan kelompok server target dan klik ID-nya.
-
Pada halaman detail kelompok server, verifikasi bahwa bidang Client IP Preservation diatur ke Enabled. Jika diatur ke Disabled, klik Modify Basic Information dan aktifkan fitur tersebut.
Langkah 2: Verifikasi pengambilan IP client
Jika NGINX digunakan sebagai server backend, Anda dapat memeriksa log NGINX untuk memverifikasi bahwa alamat IP client berhasil diperoleh.
Contoh berikut menunjukkan konfigurasi field log default di 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"';
#...
}
Jalur default file log NGINX adalah /var/log/nginx/access.log.
Alamat IP pertama dalam setiap entri log adalah alamat IP client.
140.205.1xxx -- [xxx] xxx xxx xxx xxx xxx xxx
xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx
140.205.xx.29 -- [27/xxx] xxx xxx xxx xxx xxx xxx 527 xxx
xxx xxx xxx xxx xxx xxx xxx xxx xxx
140.205.xx.29 -- [2xxx] xxx xxx 304 xxx xxx xxx xxx xxx
Proxy Protocol
Prasyarat
-
Anda telah membuat kelompok server NLB dan menambahkan server backend ke dalamnya. Topik ini menggunakan kelompok server bertipe ECS sebagai contoh. Protokol backend adalah TCP, instans ECS digunakan sebagai server backend, dan aplikasi pada server backend menggunakan port 80. Untuk informasi selengkapnya, lihat NLB server groups.
-
Anda telah membuat instans NLB dan menambahkan pendengar ke dalamnya. Topik ini menggunakan pendengar TCP pada port 80 sebagai contoh. Untuk informasi selengkapnya, lihat Create and manage NLB instances.
Catatan-
Sebelum mengaktifkan Proxy Protocol, pastikan server backend Anda mendukung Proxy Protocol v2. Jika tidak, koneksi baru akan gagal.
-
Jika beberapa pendengar pada satu instans dikaitkan dengan kelompok server yang sama, Anda harus mengaktifkan Proxy Protocol untuk semuanya.
-
NGINX Plus R16 atau versi lebih baru serta NGINX open source 1.13.11 atau versi lebih baru mendukung Proxy Protocol v2.
-
Langkah 1: Aktifkan Proxy Protocol pada pendengar
-
Masuk ke Network Load Balancer console.
-
Pada bilah navigasi atas, pilih wilayah tempat instans ditempatkan.
-
Pada halaman Instances, temukan instans target dan klik ID-nya.
-
Pada halaman Instance Details, klik tab Listener, temukan pendengar target, lalu klik ID pendengar tersebut.
-
Pada halaman Listener Details, verifikasi bahwa bidang Enable Proxy Protocol diatur ke Enabled. Jika belum diaktifkan, klik Modify Listener dan aktifkan fitur tersebut.
Langkah 2: Aktifkan Proxy Protocol pada server backend
Bagian ini menggunakan CentOS 7.9 dan NGINX 1.20.1 sebagai contoh. Konfigurasi Anda mungkin berbeda.
-
Masuk ke server backend dan jalankan perintah
nginx -tuntuk menemukan jalur file konfigurasi. Jalur default biasanya/etc/nginx/nginx.conf, tetapi jalur aktual dapat berbeda. -
Ubah dan simpan file konfigurasi untuk mengaktifkan Proxy Protocol, seperti pada contoh berikut.
http { # Pastikan untuk mengatur $proxy_protocol_addr. Variabel ini digunakan untuk mencatat alamat IP client. 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"'; # Untuk pendengar pada port 80, tambahkan parameter proxy_protocol. server { listen 80 proxy_protocol; #... } } -
Jalankan perintah
sudo nginx -s reloaduntuk memuat ulang file konfigurasi NGINX.
Langkah 3: Verifikasi pengambilan IP client
Jika NGINX digunakan sebagai server backend, Anda dapat memeriksa log NGINX untuk memverifikasi bahwa alamat IP client berhasil diperoleh.
Jalur default file log NGINX adalah /var/log/nginx/access.log.
Pada setiap entri log, alamat IP untuk variabel $proxy_protocol_addr adalah alamat IP client.
140.205.1xxx -- [xxx]
xxx
140.205.xx.29 -- [27/xxx] xxx xxx xxx
xxx
140.205.xx.29 -- [2xxx] 304 xxx xxx xxx
xxx
Referensi header Proxy Protocol v2
Jika Anda tidak menggunakan NGINX, rujuk struktur header Proxy Protocol v2 di bawah ini dan The PROXY protocol untuk mengimplementasikan penguraian kustom. Lihat dokumentasi resmi server Anda untuk detail selengkapnya.
-
Gambar berikut menunjukkan format header biner Proxy Protocol v2 saat membawa alamat client IPv4:

-
Gambar berikut menunjukkan format header biner Proxy Protocol v2 saat membawa alamat client IPv6:

FAQ
Mendapatkan IP client di lingkungan ACK
Dalam kluster Container Service for Kubernetes (ACK), metodenya sama tetapi beberapa detail operasional berbeda. Network management FAQ.
Dokumen terkait
Metode untuk mendapatkan alamat IP client bervariasi tergantung jenis load balancer:
-
Saat menggunakan pendengar layer 4 instans Classic Load Balancer (CLB), Anda dapat langsung mendapatkan alamat IP client atau dengan mengaktifkan Proxy Protocol. Untuk informasi selengkapnya, lihat Obtain the client IP address through a layer 4 listener of a CLB instance.
-
Saat menggunakan pendengar layer 7 instans CLB, Anda dapat mendapatkan alamat IP client dari header X-Forwarded-For. Untuk informasi selengkapnya, lihat Obtain the client IP address through a layer 7 listener of a CLB instance.
-
Saat menggunakan instans Application Load Balancer (ALB), Anda dapat mendapatkan alamat IP client dari header X-Forwarded-For. Untuk informasi selengkapnya, lihat Obtain the client IP address on a backend server through an ALB instance.