文档中心 > 操作步骤
针对Linux内核版本为3.0以上的操作系统

最近更新时间:2023-01-29

1、准备编译环境


说明

安装内核模块开发包的过程中,如果源里面找不到对应内核版本的安装包,请自行去网上下载需要的安装包。


 

以下是不同Linux版本的操作指导,请根据实际环境选择对应的方案。

CentOS环境

  1. 安装gcc编译器。

  2. sudo yum install gcc

  3. 安装make工具。

  4. sudo yum install make

  5. 安装内核模块开发包,开发包头文件与库的版本需要与内核版本一致。

  6. 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。


     

Ubuntu环境

  1. 安装gcc编译器。

  2. sudo apt-get install gcc

  3. 安装make工具。

  4. sudo apt-get install make

  5. 安装内核模块开发包,开发包头文件与库的版本需要与内核版本一致。

  6. sudo apt-get install linux-headers-`uname -r`

 

2、编译内核模块

  1. 下载"TOA内核模块源代码",上传到HSLB后端服务器并解压。

  2. 执行如下命令,进入源码目录,编译模块。

  3. cd toa 目录

    make

    编译过程如未提示warning或者error,说明编译成功,请检查当前目录下是否已经生成toa.ko文件。


    说明

    如果提示“config_retpoline=y but not supported by the compiler, Compiler update recommended”,表明gcc版本过老,建议将gcc升级为较新版本。



3、加载内核模块

  1. 加载内核模块。

  2. sudo insmod toa.ko

  3. 验证内核模块加载情况。

  4. dmesg | grep TOA

    若提示信息包含“TOA: toa loaded”,说明内核模块加载成功。

4、自动加载内核模块

为了使TOA内核模块在系统启动时生效,可以将加载TOA内核模块的命令加到客户的启动脚本中。

自动加载内核模块的方法有以下两种方法:

  • 客户可以根据自身需求,在自定义的启动脚本中添加加载TOA内核模块的命令。

  • 可以参考以下操作步骤配置启动脚本。

  1. 在“/etc/sysconfig/modules/”目录下新建toa.modules文件。该文件包含了TOA内核模块的加载脚本。

    toa.modules文件内容,请参考如下示例:

  2. #!/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内核模块路径。

  3. 为toa.modules启动脚本添加可执行权限。

  4. sudo chmod +x /etc/sysconfig/modules/toa.modules



    说明

    客户升级内核后,会导致现有TOA内核模块不匹配,因此需要重新编译TOA内核模块。


     

5、安装多节点(可选)

如果要在相同的客户操作系统中加载此内核模块,可以将toa.ko文件拷贝到需要加载此模块的虚拟机中,然后参照步骤加载内核模块。

内核模块加载成功以后,应用程序可以正常获取访问者的真实IP地址。


说明

节点的操作系统发行版与内核版本必须相同。 



6、验证TOA内核模块

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地址。