全部產品
Search
文件中心

Anti-DDoS:通過安裝TOA模組擷取真實請求來源IP

更新時間:Jul 04, 2025

阿里雲ECS伺服器、非阿里雲ECS伺服器(主要指線下IDC伺服器)通過連接埠方式接入DDoS高防後,由於業務請求流量先經過DDoS高防清洗過濾再轉寄到來源站點伺服器,來源站點無法直接擷取真實的請求來源IP,您可以通過在伺服器安裝TOA模組來擷取真實的來源IP。本文介紹如何在基於Linux核心的作業系統中安裝TOA模組。

適用情境

適用情境

描述

DDoS高防-阿里雲ECS

來源站點部署在阿里雲ECS上。業務流量經過DDoS高防清洗後到達阿里雲ECS。

DDoS高防-四層SLB-阿里雲ECS

來源站點部署在阿里雲ECS上。業務流量先經過DDoS高防清洗後,由四層SLB轉寄到達阿里雲ECS。

DDoS高防-雲下IDC伺服器

來源站點部署在IDC伺服器上。業務流量經過DDoS高防清洗後到達IDC伺服器。

注意事項

  • 僅支援通過連接埠接入DDoS高防的四層TCP協議業務,不支援UDP協議業務。網站業務,請參見配置DDoS高防後擷取真實的請求來源IP

  • 建議您先在測試環境中執行本文的操作,觀察環境穩定後再在正式環境中進行配置。

  • 如果是非root使用者,需擁有sudo許可權。

方式一:通過modprobe命令載入VTOA模組

僅適用於Alibaba Cloud Linux 3作業系統。

  1. (可選)備份作業系統中內建的TOA模組。如果後續重啟失敗,可以切換到原有核心執行系統復原。

  2. 載入VTOA模組。

    #modprobe vtoa
  3. 驗證VTOA模組是否載入成功。

    #lsmod | grep vtoa
  4. 設定VTOA模組,開啟系統啟動時自動載入功能。

    1. 建立檔案/etc/sysconfig/modules/vtoa.modules,並在檔案中添加以下內容。

      #!/bin/bash
      modprobe vtoa > /dev/null 2>&1
    2. 執行以下命令,授予vtoa.modules檔案可執行許可權。

      sudo chmod +x /etc/sysconfig/modules/vtoa.modules

方式二:通過源碼載入TOA模組

  1. (可選)備份作業系統中內建的TOA模組。如果後續重啟失敗,可以切換到原有核心執行系統復原。

  2. 訪問TOA源碼下載連結,下載源碼包。請確保伺服器可以訪問公網,下載該檔案。

    • 核心版本為2.x時,請使用toa_kernel2.x檔案。

    • 核心版本為3.x時,請使用toa_kernel3.x檔案。

    • 核心版本 4.x/5.x時,請使用toa_kernel_common檔案。

  3. 安裝編譯環境(gcc、kernel-headers和kernel-devel)。

    • CentOS系統

      #yum install gcc kernel-headers kernel-devel -y
    • Ubuntu/Debian系統

      #apt-get install gcc linux-headers-$(uname -r) -y
      重要

      Debain系統如果執行該命令報錯,請參考如下操作安裝編譯環境。以伺服器是Debian 11.11 64位系統,並且核心版本為5.10.0-33-amd64為例。

      1. 訪問Debian_11.11_5.10.0-33-amd64.zip下載檔案。

      2. 執行如下命令安裝編譯環境。

        sudo dpkg -i linux-headers-5.10.0-33-common_5.10.226-1_all.deb
        sudo dpkg -i linux-kbuild-5.10_5.10.237-1_amd64.deb
        sudo dpkg -i linux-compiler-gcc-10-x86_5.10.237-1_amd64.deb
        sudo dpkg -i linux-headers-5.10.0-33-amd64_5.10.226-1_amd64.deb
  4. 編譯TOA模組。

    將源碼包解壓,執行cd命令進入檔案夾中並編譯源碼檔案。編譯過程未提示warning或者error,說明編譯成功,檢查目前的目錄下是否已經產生toa.ko檔案。

    //源碼包路徑,以toa_kernel3.x為例介紹
    //核心版本為2.x時,#cd toa_kernel2.x/ 
    //核心版本為3.x時,#cd toa_kernel3.x/ 
    //核心版本4.x/5.x時,#cd toa_kernel_common/
    #cd toa_kernel3.x/ 
    //編譯
    #make
    說明

    如果要在其他相同作業系統中載入此TOA模組,可以直接將toa.ko檔案拷貝到其他伺服器,然後直接參照後續步驟載入TOA模組。

  5. 載入TOA模組。

    #mv toa.ko /lib/modules/`uname -r`/kernel/net/netfilter/ipvs/toa.ko && depmod
    #insmod /lib/modules/`uname -r`/kernel/net/netfilter/ipvs/toa.ko
  6. 確認TOA模組是否已載入成功。

    # lsmod | grep toa 
  7. 設定TOA模組,開啟系統啟動時自動載入功能。

    • CentOS系統

      1. 建立檔案/etc/sysconfig/modules/toa.modules,並在檔案中添加以下內容。

        #!/bin/bash
        if [ -e /lib/modules/`uname -r`/kernel/net/netfilter/ipvs/toa.ko ] ;
        then
        insmod /lib/modules/`uname -r`/kernel/net/netfilter/ipvs/toa.ko > /dev/null 2>&1
        fi
      2. 執行以下命令,授予toa.modules檔案可執行許可權。

        sudo chmod +x /etc/sysconfig/modules/toa.modules
    • Ubuntu/Debian系統

      建立檔案/etc/modules-load.d/toa.conf,並在檔案中添加以下內容。

      toa
  8. 執行sudo reboot命令,重啟系統。

方法三:通過RPM包載入TOA模組

適用的作業系統:

  • Redhat Linux

  • CentOS 6.x

  • CentOS 7.x

  1. (可選)備份作業系統中內建的TOA模組。如果後續重啟失敗,可以切換到原有核心執行系統復原。

  2. 根據您的伺服器系統類別型,下載對應的TOA模組安裝檔案。請確保伺服器可以訪問公網,下載該檔案。

  3. 安裝TOA模組。

    • CentOS 7.x系統

      定位到安裝檔案目錄,執行以下命令:

      sudo yum localinstall kernel-3.10.0-957.21.3.el7.toa.x86_64.rpm
      說明

      建議您使用yum localinstall命令安裝核心,避免出現依賴問題。您也可以執行sudo rpm -ivh kernel-3.10.0-957.21.3.el7.toa.x86_64.rpm命令進行安裝。

    • CentOS 6.x或Redhat Linux系統

      定位到安裝檔案目錄,執行以下命令:

      sudo rpm -ivh kernel-firmware-2.6.32-696.13.2.el6.centos.plus.toa.x86_64.rpm
      sudo rpm -ivh kernel-2.6.32-696.13.2.el6.centos.plus.toa.x86_64.rpm
      說明
      • 如果系統中的kernel-firmware版本大於或等於2.6.32-696.13.2.el6.centos.plus.toa,只需要執行上述第二行命令。

      • 如果安裝過程中出現依賴錯誤,可以嘗試在rpm命令中加上額外參數--nodeps

      • 如果核心版本大於toa核心版本,可以嘗試在rpm命令中加上額外參數--force,進行強制安裝。

  4. 設定TOA模組,開啟系統啟動時自動載入功能。

    1. 建立檔案/etc/sysconfig/modules/toa.modules,並在檔案中添加以下內容。

      • CentOS 7.x系統:

        #!/bin/bash
        if [ -e /lib/modules/`uname -r`/kernel/net/toa/toa.ko.xz ] ;
        then 
        modprobe toa > /dev/null 2>&1
        fi                            
      • CentOS 6.x或Redhat Linux系統:

        #!/bin/bash
        if [ -e /lib/modules/`uname -r`/kernel/net/toa/toa.ko ] ;
        then 
        modprobe toa > /dev/null 2>&1
        fi                            
    2. 執行以下命令,授予toa.modules檔案可執行許可權。

      sudo chmod +x /etc/sysconfig/modules/toa.modules
  5. 執行reboot命令,重啟系統。

執行結果

安裝完成後,伺服器能夠正常擷取真實訪問源IP。

如果仍無法擷取真實訪問源IP,建議您執行lsmod|grep toa命令檢測TOA模組的載入情況。如果TOA模組未載入,您可以執行modprobe toa命令手動載入。載入成功後,您可以查看服務端訪問日誌,重新測試主機能否擷取真實的訪問源IP。

相關操作

  • 臨時關閉TOA :rmmod 路徑/模組名

    rmmod toa.ko
  • 卸載TOA模組。

    rmmod toa
  • 確認TOA模組是否卸載成功。若提示“TOA unloaded”,則說明卸載成功。

    dmesg -T

FAQ

網路連接通過TOA模組轉換,對效能有多大影響?

TOA模組是部署在旁路的,因此對網路效能幾乎沒有影響。

Linux核心升級後,為什麼無法擷取真實IP?

Linux升級核心後,會導致現有TOA模組不匹配,因此每次升級核心都需要重新編譯、安裝TOA模組。