TOA(tcp option adress)安装
1.说明
1.1.场景说明
TOA 属于 4层转发系统
的一个功能模块,缺省情况下服务经过 4层转发系统
,服务源站查看到的请求IP为NAT的回源地址,这对于一些特殊业务来说(比如游戏),是无法满足的,TOA的功能就是让真实源服务源站获取访问者真实IP地址,该模块安装在源站服务器上。以下为 TOA 的局限性:
- 仅支持 TCP 协议
- 仅支持 IPv4
- 仅支持 Linux 操作系统
1.2.前提条件
编译TOA 内核模块时,当前的内核版本与需与内核开发包版本保持一致
需要 root 权限
在代理节点开启对应转发规则
使用任意客户端访问代理节点业务IP,源站正常可以看到客户端IP,而代理节点业务IP
2.安装
2.1.共通
sudo yum -y install gcc
sudo yum -y install make
sudo yum -y install kernel-devel-`uname -r`
sudo yum -y install kernel-headers-`uname -r`
进入toa内核目录:cd /lib/modules/uname -r/kernel/net/toa/
卸载toa,执行:rmmod toa
重新挂载本目录下的新的toa,执行:modprobe toa (或 insmod ./toa.ko) 若无任何报错,即为安装成功,
通过命令:lsmod | grep toa ,将会显示出已安装的toa模块
2.2.Centos6
2.6.32-754.9.1.el6.x86_64
2.3.Centos7
3.10.0-327.el7.x86_64
系统源码包下载地址
2.3.0.原理
TOA的kind(即代码字段opcode)采用的是254 tcp options
ipv4时占用Options 8字节,ipv6时将占用20字节
2.3.1.源码编译
git clone https://github.com/Huawei/TCP_option_address.git
cd src
make
2.3.2.加载内核
执行如下命令,加载内核模块。
sudo insmod toa.ko
执行如下命令,验证模块加载情况,查看内核输出信息。
dmesg | grep TOA
若提示信息包含“TOA: toa loaded”,说明内核模块加载成功。
可执行lsmod|grep toa命令检测 toa 模块加载情况
通过执行 modprobe toa 命令手动加载
2.3.3.开机启动自动加载
vi /etc/sysconfig/modules/toa.modules
#!/bin/sh
toapath=/root/toa/toa.ko
/sbin/modinfo -F filename $toapath > /dev/null 2>&1if [ $? -eq 0 ]; then/sbin/insmod $toapathfichmod +x /etc/sysconfig/modules/toa.modules
或者
echo “modprobe toa” >> /etc/rc.d/rc.local
3.参考
toa模块-编译centos5/6版本
toa协议源码解析
腾讯云toa.pdf
TOA 实现原理
TOA与Proxy Protocol
TOA(tcp option adress)安装相关推荐
- TOA - TCP Option Address
使用Haproxy转发TCP到业务服务器端,后端报文看到的源 IP 地址是代理服务器的IP . 为了让后端能够获取到用户端实际的 IP 地址,有三个方案: 1. http 请求记录标识: 在客户端和服 ...
- win7 中出现“为了配置TCP/IP,必须安装并启动网络适配卡“问题的解决办法
win7 中出现"为了配置TCP/IP,必须安装并启动网络适配卡"问题的解决办法 参考文章: (1)win7 中出现"为了配置TCP/IP,必须安装并启动网络适配卡&qu ...
- tcp option
一.奇怪现象: 三次握手时,前两次syn|syn+ack中的window size明明很大,但是第三次握手的时候window size却突然变得很小, 并且后续的数据传输的过程中,window siz ...
- tcp option 结构体_基于 Kotlin 实现一个简单的 TCP 自定义协议
一. 开发背景 想要成为一名优秀的Android开发,你需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~. 我们的项目需要开发一款智能硬件.它由 Web 后台发送指令到一款桌面端应用 ...
- TCP BBR - 如何安装、启动、停止BBR!
TCP BBR从Linux 4.9 内核开始,就作为它内核的一部分存在了,如果想使用BBR,那么首先就是判断内核版本是否大于4.9,如果符合版本标准,那么直接启动BBR就可以了,如果低于4.9,升级内 ...
- Ubuntu20.04 tcp调试工具mNetAssist安装
1. 下载 tcp调试工具 mNetAssist.deb下载地址:https://cloud.189.cn/t/ra2M7juimAFb (访问码:k9kv) 2. 安装 用命令行安装软件如下: # ...
- 安装、卸载TCP/IP协议
卸载TCP/IP协议 注意:不适用Win10 打开注册表 .运行窗口输入regedit进入注册表. 删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Serv ...
- 关于 FullNat 模式的 Toa 实现原理【转】
目录 背景 获取client ip的几种方法 toa/uoa 获取client ip 原理 tcp option 字段 lvs中的toa格式与插入 格式 插入 后端获取client ip ss/net ...
- snort完整安装(snort-2.8.3.1)
snort完整安装一(snort-2.8.3.1) 本来是打算做字符串匹配的,上网查了资料说是snort中有匹配算法,于是想自己装一个试试,真是没想到,一装就3个星期,还是好不容易才搞定的.闲话不说了 ...
最新文章
- MyBatis入门示例
- 部署awstats分析系统
- Python3 文件操作
- 步步为营-72-asp.net简单练习(通过webForm实现一些简单实例)
- 原型设计20条军规(转)
- 面试官:GET和POST两种基本请求方法有什么区别
- linux下面mysql不监听3306
- Qt5使用windeployqt后 exe文件还是无法执行 无法定位程序输入点 _ZdaPvj 于动态链接库 libstdc++-6.dll
- C语言逆序字符串(递归实现)
- 安装SQL2005只有配置工具或 错误码是29506 解决方案
- Web前端笔记-2D图形平面内平移定位(two.js)
- Vue小案例 之 商品管理------创建页面与部分数据
- scrapy使用meta在各个模块的组件之间传递数据
- 使用Visual Studio.net调试javascript最方便的方法
- endnote修改正文中参考文献标注_如何用endnote修改毕业论文后参考文献格式为毕业手册要求格式...
- 嵌入式linux系统蜂鸣器实验,嵌入式系统原理实验四蜂鸣器.docx
- Flask 创建app 时候传入的 static_folder 和 static_url_path参数理解(1ni)
- MAC地址克隆有什么作用
- ValueError: mode mismatch
- 手把手教你:CSS+JS 打造一个有个性的滚动条