最近更新时间:2023-01-29
说明:
安装内核模块开发包的过程中,如果源里面找不到对应内核版本的安装包,请自行去网上下载需要的安装包。
以下是不同Linux版本的操作指导,请根据实际环境选择对应的方案。
安装gcc编译器。
sudo yum install gcc |
安装make工具。
sudo yum install make |
安装内核模块开发包,开发包头文件与库的版本需要与内核版本一致。
sudo yum install kernel-devel-`uname -r` |
说明:
如果自带源里没有对应的内核开发包,可以到如下地址中去下载对应的rpm包。
地址:https://mirror.netcologne.de/oracle-linux-repos/ol7_latest/getPackage/
以kernel-devel-3.10.0-1062.12.1.el7.x86_64为例,下载后请执行如下命令安装:
rpm -ivh kernel-devel-3.10.0-1062.12.1.el7.x86_64.rpm。
安装gcc编译器。
sudo apt-get install gcc |
安装make工具。
sudo apt-get install make |
安装内核模块开发包,开发包头文件与库的版本需要与内核版本一致。
sudo apt-get install linux-headers-`uname -r` |
下载"TOA内核模块源代码",上传到HSLB后端服务器并解压。
执行如下命令,进入源码目录,编译模块。
cd toa 目录 make |
编译过程如未提示warning或者error,说明编译成功,请检查当前目录下是否已经生成toa.ko文件。
说明:
如果提示“config_retpoline=y but not supported by the compiler, Compiler update recommended”,表明gcc版本过老,建议将gcc升级为较新版本。
加载内核模块。
sudo insmod toa.ko |
验证内核模块加载情况。
dmesg | grep TOA |
若提示信息包含“TOA: toa loaded”,说明内核模块加载成功。
为了使TOA内核模块在系统启动时生效,可以将加载TOA内核模块的命令加到客户的启动脚本中。
自动加载内核模块的方法有以下两种方法:
客户可以根据自身需求,在自定义的启动脚本中添加加载TOA内核模块的命令。
可以参考以下操作步骤配置启动脚本。
在“/etc/sysconfig/modules/”目录下新建toa.modules文件。该文件包含了TOA内核模块的加载脚本。
toa.modules文件内容,请参考如下示例:
#!/bin/sh /sbin/modinfo -F filename /root/toa/toa.ko > /dev/null 2>&1 if [ $? -eq 0 ]; then /sbin/insmod /root/toa/toa.ko fi |
其中“/root/toa/toa.ko”为TOA内核模块文件的路径,客户需要将其替换为自己编译的TOA内核模块路径。
为toa.modules启动脚本添加可执行权限。
sudo chmod +x /etc/sysconfig/modules/toa.modules |
说明:
客户升级内核后,会导致现有TOA内核模块不匹配,因此需要重新编译TOA内核模块。
如果要在相同的客户操作系统中加载此内核模块,可以将toa.ko文件拷贝到需要加载此模块的虚拟机中,然后参照步骤加载内核模块。
内核模块加载成功以后,应用程序可以正常获取访问者的真实IP地址。
说明:
节点的操作系统发行版与内核版本必须相同。
TOA内核模块安装成功后即可直接获取到客户端IP地址,例如:
执行如下命令,在安装有python的后端服务器中启动一个简易的HTTP服务。
python -m SimpleHTTPServer port |
其中,port需要与HSLB添加该后端服务器时配置的端口一致,默认为80。
启动之后,通过客户端访问HSLB的IP时,服务端的访问日志如下:
192.168.1.21 - - [06/Aug/2020 14:24:21] "GET / HTTP/1.1" 200 – |
说明:
上述访问日志中192.168.1.21,是后端服务器可以获取到的客户端源IP地址,即客户访问后端服务器的真实IP地址。