TOA安装文档

背景

生产环境中客户走TCP转发的时候,有需要获取客户真实IP,这时候源站需要安装TOA模块

安装准备

  • 准备TOA的模块的包。 TOA下载
  • 确认内核与内核开发包是否一致。开发包下载 对应的系统版本进去路径为/7.4.1708/os/x86_64/Packages/kernel-devel-3.10.0-693.el7.x86_64.rpm
  • 获取root权限或者sudo

安装步骤

  • 查看自己的linux的版本已经内核版本

涉及的命令cat /etc/redhat-release

  • 涉及的命令unmae -r

  • 首先把需要的包上传到源站。

涉及到的命令如下:

rz TCP_option_address-master.zip
unzip TCP_option_address-master.zip (解压模块包)
yum -y install  make gcc  (安装需要的依赖)

看到上面TCP_option的解压出来的包之后

  • 开发包上传之后可以直接用yum安装rpm包

    rz kernel-devel-3.10.0-693.el7.x86_64.rpm
    yum -y install kernel-devel-3.10.0-693.el7.x86_64.rpm (这个仅供参考不同的内核后缀不一样)

/usr/src/kernels/下能看到你安装的内核开发包的文件夹

  • 确保/lib/modules/3.10.0-693.el7.x86_64/build 的软链接目录有效,无效操作如下

sudo ln -sv /usr/src/kernels/$(uname -r) ./build (例子:sudo ln -sv /usr/src/kernels/3.10.0-693.el7.x86_64 ./build)


![](https://lmw.wiki/usr/uploads/2019/11/134073271.png)

- 接下来进入TCP_option_address-master这个文件夹中看到里面的`src`这个文件夹

![](https://lmw.wiki/usr/uploads/2019/11/3121266398.png)

进去之后会看到

![](https://lmw.wiki/usr/uploads/2019/11/1461987166.png)

在之后make即可

![](https://lmw.wiki/usr/uploads/2019/11/842468139.png)

上图表示安装完毕,在`ls`一下会发现多出很多文件出来

![](https://lmw.wiki/usr/uploads/2019/11/926842545.png)

我们主要看toa.ko即可,在当前文件夹上输入`insmod toa.ko` 之后`lsmod | grep toa`

![](https://lmw.wiki/usr/uploads/2019/11/1652478267.png)

看到上图 可以确定TOA安装成功。

## 出现的问题以及解决方式

- #### 错误1

加载TOA模块时出现以下错误 `insmod :error inserting './toa.ko': -1 Unknown symbol in module`

- ##### 解决:

- 获取kallsysms 值

key=$(grep sock_def_readable /proc/kallsyms | awk '{print $1}')


- 替换`toa.c`文件中`sk_data_ready_addr`变量(365行)的值

sk_data_ready_addr = 0x${key};


- 重新编译

make


- #### 错误2:编译时出现No such file or directory. Stop.就要注意/usr/src/kernels/$(name -r)是否存在对应的内核开发包
Last modification:May 9th, 2020 at 11:59 am
如果觉得我的文章对你有用,请随意赞赏