Saat Anti-DDoS Proxy meneruskan trafik ke server origin Anda, IP klien asli akan disembunyikan. Ambil IP tersebut dengan mengurai header X-Forwarded-For atau menginstal modul TOA.
Untuk layanan non-situs web (Lapisan 4)
Instal modul TOA pada server origin Anda untuk memperoleh alamat IP asal. Peroleh alamat IP asal permintaan dengan menginstal modul TOA. Jika Anda tidak dapat menginstal modul TOA, hubungi dukungan teknis.
Instans Anti-DDoS Proxy IPv4
IP sumber klien dikirimkan menggunakan bidang TCP Option. Untuk layanan non-situs web (Lapisan 4), setelah handshake tiga arah antara Anti-DDoS Proxy dan server origin, proxy memodifikasi paket ACK terakhir dengan menyisipkan TCP Option sepanjang 8 byte (jenis 254) yang berisi port sumber dan IP sumber klien. Tangkapan Wireshark berikut menunjukkan contohnya. Bagian TCP Option – Experimental berisi informasi nomor port dan IP sumber:
Destination Port: 443
[Stream index: 0]
[TCP Segment Len: 0]
Sequence number: 1 (relative sequence number)
Acknowledgment number: 1 (relative ack number)
1001 .... = Header Length: 36 bytes (9)
▶ Flags: 0x010 (ACK)
Window size value: 65535
[Calculated window size: 65535]
[Window size scaling factor: -2 (no window scaling used)]
Checksum: 0x90fb [unverified]
[Checksum Status: Unverified]
Urgent pointer: 0
▼ Options: (16 bytes), Experimental
▼ TCP Option – Experimental
Kind: RFC3692-style Experiment 2 (254)
Length: 8
Magic Number: 0xc406
Unknown (0xfa) (8 bytes)
0000 b4 0c 25 e2 80 46 4c e1 75 f7 e5 c1 08 00 45 00 ..%..FL. u.....E.
0010 00 38 00 00 40 00 26 06 cf e9 2f 70 49 ce 67 96 .8..@.&. ../pI.g.
0020 a4 02 1b 2e 01 bb c8 c1 cf 98 ab 2f 54 e1 90 10 ........ .../T...
0030 ff ff 90 fb 00 00 fe 08 c4 06 65 xx xx 85 fa 08 ........ ..exx...
0040 01 bb cb 6b 34 80 ...k4.
-
Nomor port: Bidang
Magic Numberberisi nomor port dalam bentuk heksadesimal. Misalnya, c4 06 dikonversi ke desimal menjadi 50182. -
IP sumber: Empat byte setelah nomor port merepresentasikan IP sumber dalam bentuk heksadesimal. Pada contoh ini,
65 ** ** 85sesuai dengan IP sumber101.*.*.133.
Instans Anti-DDoS Proxy IPv6
Mode v6tov4
Pada mode v6tov4, di mana klien IPv6 terhubung ke server origin IPv4, paket ACK terakhir berisi TCP Option sepanjang 40 byte (jenis 249). Opsi ini mencakup port sumber, IP sumber, dan alamat IP Anti-DDoS Proxy. Berikut contohnya:
Destination Port: 8080
[Stream index: 1]
[Stream Packet Number: 3]
[Conversation completeness: Incomplete, ESTABLISHED (7)]
[TCP Segment Len: 0]
Sequence Number: 1 (relative sequence number)
Sequence Number (raw): 2505761997
[Next Sequence Number: 1 (relative sequence number)]
Acknowledgment Number: 1 (relative ack number)
Acknowledgment number (raw): 483970095
1111 .... = Header Length: 60 bytes (15)
Flags: 0x010 (ACK)
Window: 4096
[Calculated window size: 262144]
[Window size scaling factor: 64]
Checksum: 0xbc88 [unverified]
[Checksum Status: Unverified]
Urgent Pointer: 0
Options: (40 bytes), Unknown (0xf9)
TCP Option – Unknown
Kind: Unknown (249)
Length: 40
Payload: 9d7d2401b180xxxd960f875d960f87000000012405e000100300000000000a7304b55
[Timestamps]
-
Nomor port: Dua byte pertama dari
Payloadberisi nomor port dalam bentuk heksadesimal. Misalnya,9d7ddikonversi ke desimal menjadi 40317. -
Alamat IP sumber: 16 byte setelah nomor port berisi alamat IPv6 sumber dalam bentuk heksadesimal. Misalnya,
2401*****0f87sesuai dengan2401:b180:100*:*:*:f87:5d96:f87.Catatan20 byte tersisa dalam
Payloadberisi informasi IP Anti-DDoS.
Mode v6tov6
Pada skenario v6tov6, di mana baik klien maupun server origin menggunakan IPv6, paket ACK terakhir berisi TCP Option sepanjang 20 byte (jenis 253). Opsi ini mencakup port sumber dan IP sumber. Berikut contohnya:
Destination Port: 8080
[Stream index: 0]
[Stream Packet Number: 1]
[Conversation completeness: Incomplete (12)]
[TCP Segment Len: 0]
Sequence Number: 1 (relative sequence number)
Sequence Number (raw): 721958393
[Next Sequence Number: 1 (relative sequence number)]
Acknowledgment Number: 1 (relative ack number)
Acknowledgment number (raw): 2789445640
1010 .... = Header Length: 40 bytes (10)
Flags: 0x010 (ACK)
Window: 65535
[Calculated window size: 65535]
[Window size scaling factor: -1 (unknown)]
Checksum: 0x90cc [unverified]
[Checksum Status: Unverified]
Urgent Pointer: 0
Options: (20 bytes), Experimental
TCP Option - Experimental: Unknown
Kind: RFC3692-style Experiment 1 (253)
Length: 20
Experiment Identifier: Unknown (0xeb98)
Data: 2401b180100xxx0f875d960f87
-
Nomor port: Bidang
Experiment Identifierberisi nomor port dalam bentuk heksadesimal. Misalnya, eb98 dikonversi ke desimal menjadi 60312. -
Alamat IP sumber: Bidang
Databerisi alamat IPv6 sumber dalam bentuk heksadesimal. Misalnya, 2401*****0f87 sesuai dengan 2401:b180:100*:*:*:f87:5d96:f87.
Tambahkan blok CIDR back-to-origin dari Anti-DDoS Proxy ke daftar putih server origin Anda untuk mencegah trafik yang diteruskan diblokir. Izinkan blok CIDR back-to-origin mengakses server origin.
-
Anti-DDoS Proxy -> ECS: Tambahkan blok CIDR back-to-origin ke grup keamanan ECS. Tambahkan aturan grup keamanan.
-
Anti-DDoS Proxy -> SLB -> ECS: Tambahkan blok CIDR back-to-origin ke daftar putih kontrol akses SLB. Aktifkan kontrol akses.
Untuk layanan situs web (Lapisan 7)
Metode 1: Gunakan header X-Forwarded-For
Cara kerja
-
Saat proxy Lapisan 7 seperti Anti-DDoS Proxy meneruskan permintaan, server origin melihat IP proxy sebagai sumbernya. Header
X-Forwarded-Formencatat IP aktual klien. Format:X-Forwarded-For: <alamat_IP_asal>. -
Jika permintaan melewati beberapa proxy (seperti WAF atau CDN), header
X-Forwarded-Formencatat IP klien asli diikuti oleh setiap IP proxy. Format:X-Forwarded-For: real-client-IP, proxy-server-1-IP, proxy-server-2-IP, proxy-server-3-IP, .... Setiap proxy menambahkan alamat node sebelumnya keX-Forwarded-Fortetapi tidak menambahkan IP-nya sendiri.
Metode pengambilan
Ambil nilai header X-Forwarded-For dalam kode aplikasi Anda:
-
Alamat IP pertama dalam nilai
X-Forwarded-Foryang dipisahkan koma adalah IP asal klien. -
Anda juga dapat mengonfigurasi server web Anda (Nginx, IIS 6, IIS 7, Apache, atau Tomcat) untuk mengurai header
X-Forwarded-For. Peroleh alamat IP asal klien.
-
ASP
Request.ServerVariables("HTTP_X_FORWARDED_FOR") -
ASP.NET (C#)
Request.ServerVariables["HTTP_X_FORWARDED_FOR"] -
PHP
$_SERVER["HTTP_X_FORWARDED_FOR"] -
JSP
request.getHeader("HTTP_X_FORWARDED_FOR")
Metode 2: Gunakan header HTTP kustom
Ikhtisar
Pada arsitektur kompleks, header standar X-Forwarded-For (XFF) rentan terhadap pemalsuan dan kebingungan IP akibat banyaknya lapisan proxy. Header HTTP kustom memberikan transmisi IP klien yang lebih andal.
Prosedur
Konfigurasikan Anti-DDoS Proxy untuk menulis IP klien ke header HTTP kustom. Konfigurasi pengaturan kembali ke asal.
Masuk ke halaman Website Config di Konsol Anti-DDoS Proxy.
-
Pada halaman Website Config, klik Add Website.
-
Pada halaman Website Config, di bagian Forwarding Settings, atur Traffic Marking ke Custom Header (misalnya,
Custom-True-IP). -
Dalam kode aplikasi Anda, ambil nilai header kustom tersebut, misalnya:
request.getHeader("Custom-True-IP").