全部產品
Search
文件中心

Edge Security Acceleration:來源站點擷取用戶端IP

更新時間:Jun 30, 2024

本文為您介紹了如何從來源站點擷取用戶端IP。

擷取方式介紹

經過加速後來源站點的伺服器擷取到的用戶端IP地址為CDN加速裝置的IP地址。如果您需要從來源站點擷取用戶端IP地址,有如下兩種方式:

  • Linux系統安裝toa核心模組,使用方便且對應用完全透明,無需修改來源站點Linux伺服器的應用程式即可擷取真實用戶端IP。
  • Proxy Protocol(本文簡稱PP),對系統核心沒有要求,需要應用程式配合修改,通過解析文本字串擷取用戶端IP。目前,Nginx和HAProxy已經支援。

安裝toa模組

如果來源站點的入口系統是Linux系統,並且版本符合要求,可以通過安裝toa模組的RPM包來擷取使用者用戶端IP。

支援的Linux版本RPM包下載
CentOS 6.5CentOS 6.5 RPM
CentOS 6.9CentOS 6.9 RPM
CentOS 7.0CentOS 7.0 RPM
CentOS 7.2CentOS 7.2 RPM
CentOS 7.3CentOS 7.3 RPM
CentOS 7.4CentOS 7.4 RPM
CentOS 7.5CentOS 7.5 RPM
alicdn.alios7alicdn.alios7 RPM
  1. 通過rpm指令安裝對應版本的包。

    rpm -ivh tcp-toa-1.2.7-alicdn.alios7.x86_64.rpm
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:tcp-toa-1.2.7-alicdn.alios7      ################################# [100%]
  2. 運行toa模組。
    service tcp_toa start
    [Starting tcp_toa]:
    Checking installed modules...
            tcp_toa not installed.
    Checking module files...                [OK]
    Installing tcp_toa...                   [OK]
  3. 查看toa模組運行狀態。
    lsmod | grep toa
    tcp_toa                12916  0
  4. 停止toa模組。
    service tcp_toa stop
    [StoPPing tcp_toa]:
    Checking installed modules...
            tcp_toa installed.
    Checking installed tcp_toa...           [OK]
    Uninstalling tcp_toa...                 [OK]
  5. 您可以通過輸入rpm -e tcp-toa 卸載toa模組。
    rpm -e tcp-toa
    [StoPPing tcp_toa]:
    Checking installed modules...
            tcp_toa installed.
    Checking installed tcp_toa...           [OK]
    Uninstalling tcp_toa...                 [OK]

Proxy Protocol

PP方式擷取IP需要在控制台配置進行使用,功能開啟後,加速伺服器和來源站點建立TCP串連,在傳輸第一個使用者payload前,會傳遞PP協議文本。

配置Nginx接受PP,只需要將參數proxy_protocol添加在server塊中的listen指令後,詳情請參見Accepting the PROXY Protocol

http {
    #...
    server {
        listen 80   proxy_protocol;
        listen 443  ssl proxy_protocol;
        #...
    }
}
說明 其他支援PP的應用請參見Proxy Protocol

不支援PP的應用程式,需要在TCP串連建立後,讀取PP的文本行並進行字串解析來擷取用戶端IP,字元樣本如下所示。

PROXY TCP4 10.10.10.10 192.168.0.1 12345 80\r\n

解析時先讀取行直至\n,在按照協議進行解析,各欄位定義如下。

PROXY_STRING + single space + INET_PROTOCOL + single space + CLIENT_IP + single space + PROXY_IP + single space + CLIENT_PORT + single space + PROXY_PORT + "\r\n"

真實輸出的PP文本行相對以上格式,在 \r\n 之前可能還包含全域唯一的ID,用於全鏈路監控,如果不需要您可以忽略它。

"id"="xxxx"