阿里雲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作業系統。
(可選)備份作業系統中內建的TOA模組。如果後續重啟失敗,可以切換到原有核心執行系統復原。
載入VTOA模組。
#modprobe vtoa驗證VTOA模組是否載入成功。
#lsmod | grep vtoa設定VTOA模組,開啟系統啟動時自動載入功能。
建立檔案
/etc/sysconfig/modules/vtoa.modules,並在檔案中添加以下內容。#!/bin/bash modprobe vtoa > /dev/null 2>&1執行以下命令,授予
vtoa.modules檔案可執行許可權。sudo chmod +x /etc/sysconfig/modules/vtoa.modules
方式二:通過源碼載入TOA模組
(可選)備份作業系統中內建的TOA模組。如果後續重啟失敗,可以切換到原有核心執行系統復原。
訪問TOA源碼下載連結,下載源碼包。請確保伺服器可以訪問公網,下載該檔案。
核心版本為2.x時,請使用toa_kernel2.x檔案。
核心版本為3.x時,請使用toa_kernel3.x檔案。
核心版本 4.x/5.x時,請使用toa_kernel_common檔案。
安裝編譯環境(gcc、kernel-headers和kernel-devel)。
CentOS系統
#yum install gcc kernel-headers kernel-devel -yUbuntu/Debian系統
#apt-get install gcc linux-headers-$(uname -r) -y重要Debain系統如果執行該命令報錯,請參考如下操作安裝編譯環境。以伺服器是Debian 11.11 64位系統,並且核心版本為5.10.0-33-amd64為例。
執行如下命令安裝編譯環境。
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
編譯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模組。
載入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確認TOA模組是否已載入成功。
# lsmod | grep toa設定TOA模組,開啟系統啟動時自動載入功能。
CentOS系統
建立檔案
/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執行以下命令,授予
toa.modules檔案可執行許可權。sudo chmod +x /etc/sysconfig/modules/toa.modules
Ubuntu/Debian系統
建立檔案
/etc/modules-load.d/toa.conf,並在檔案中添加以下內容。toa
執行
sudo reboot命令,重啟系統。
方法三:通過RPM包載入TOA模組
適用的作業系統:
Redhat Linux
CentOS 6.x
CentOS 7.x
(可選)備份作業系統中內建的TOA模組。如果後續重啟失敗,可以切換到原有核心執行系統復原。
根據您的伺服器系統類別型,下載對應的TOA模組安裝檔案。請確保伺服器可以訪問公網,下載該檔案。
CentOS 7.x系統:kernel-3.10.0-957.21.3.el7.toa.x86_64.rpm
CentOS 6.x或Redhat Linux系統:
安裝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,進行強制安裝。
設定TOA模組,開啟系統啟動時自動載入功能。
建立檔案
/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 fiCentOS 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
執行以下命令,授予
toa.modules檔案可執行許可權。sudo chmod +x /etc/sysconfig/modules/toa.modules
執行
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模組。