ELB可以针对客户访问的业务为访问者提供个性化的管理策略,制定策略之前需要获取来访者的真实IP。TOA内核模块主要用来获取ELB转化过的访问者真实IP地址(仅支持IPv4),该插件安装在ELB后端服务器。
本文档仅适用于四层(TCP协议)服务,当客户需要在操作系统中编译TOA内核模块时,可参考本文档进行配置。
Linux内核版本为2.6.32和Linux内核版本为3.0以上的操作系统,在配置TOA内核模块的操作步骤上有所区别,具体操作请参照相应的操作步骤进行配置。
安装内核模块开发包的过程中,如果源里面找不到对应内核版本的安装包,需要自行去网上下载需要的安装包。
以下是不同Linux发行版本的操作说明,请根据环境选择对应的方案。
sudo yum install kernel-devel-`uname -r`
如果自带源里没有对应的内核开发包,可以到如下地址中去下载对应的rpm包。
地址:https://mirror.netcologne.de/oracle-linux-repos/ol7_latest/getPackage/
以3.10.0-693.11.1.el7.x86_64为例,下载后执行以下命令安装:
rpm -ivh kernel-devel-3.10.0-693.11.1.el7.x86_64.rpm。
CoreOS环境下在容器内进行内核模块的编译时,需要先启动一个用于内核模块开发的容器,然后再进行编译。
详细过程参见CoreOS官方文档,获取方式如下链接所示。
git clone https://github.com/Huawei/TCP_option_address.git
如果未安装git工具,请进入以下链接下载TOA模块源代码。
make
编译过程未提示warning或者error,说明编译成功,检查当前目录下是否已经生成toa.ko文件。
如果报错提示“config_retpoline=y but not supported by the compiler, Compiler update recommended”,表明gcc版本过老,建议将gcc升级为较新版本
为了使TOA内核模块在系统启动时生效,可以将加载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内核模块路径。
sudo chmod +x /etc/sysconfig/modules/toa.modules
客户升级内核后,会导致现有TOA内核模块不匹配,因此需要重新编译TOA内核模块。
如果要在相同的客户操作系统中加载此内核模块,可以将toa.ko文件拷贝到需要加载此模块的虚拟机中,然后参照3步骤加载内核模块。
内核模块加载成功以后,应用程序可以正常获取访问者的真实源IP地址。
节点的操作系统发行版与内核版本必须相同。
TOA内核模块安装成功后即可直接获取到源地址,此处提供一个验证的例子。
执行如下命令,在安装有python的后端服务器中启动一个简易的HTTP服务。
python -m SimpleHTTPServer port
其中,port需要与ELB添加该后端服务器时配置的端口一致,默认为80。
启动之后,通过客户端访问ELB的IP时,服务端的访问日志如下:
192.168.0.90 - - [06/Aug/2020 14:24:21] "GET / HTTP/1.1" 200 –
上述访问日志中192.168.0.90,即后端服务器可以获取到的客户端源IP地址。
TOA插件支持2.6.32-xx内核版本的操作系统(CentOS 6.8镜像)。参考如下步骤,进行配置。
http://kb.linuxvirtualserver.org/images/3/34/Linux-2.6.32-220.23.1.el6.x86_64.rs.src.tar.gz
n可以依据系统CPU核数配置相应的参数,例如:4核CPU,可配置为4,从而加快编译速度。
命令执行结果如图1所示。
命令执行结果如图2所示。
建议将modprobe toa命令加入开机启动脚本,以及系统定时监控脚本中,如图4所示。
TOA模块加载完成后,查询内核信息如图5所示。
TOA内核模块安装成功后即可直接获取到源地址,此处提供一个验证的例子。
执行如下命令,在安装有python的后端服务器中启动一个简易的HTTP服务。
python -m SimpleHTTPServer port
其中,port需要与ELB添加该后端服务器时配置的端口一致,默认为80。
启动之后,通过客户端访问ELB的IP时,服务端的访问日志如下:
192.168.0.90 - - [06/Aug/2020 14:24:21] "GET / HTTP/1.1" 200 –
上述访问日志中192.168.0.90,即后端服务器可以获取到的客户端源IP地址。
一. 背景介绍 本文将介绍如何将 MySQL 中的数据,通过 Binlog + Canal 的形式导...
1. 接口描述 接口请求域名: bm.tencentcloudapi.com 。 获取物理机的分区格式 ...
很早之前就想写一篇关于红黑树的文章,但是由于担心自己理解的不透彻,就一直不...
2021 年 2 月 4 日,全球顶级开源社区云原生计算基金会(Cloud Native Computing ...
IP双线路实现方式是指在一台服务器上安装两块网卡,分别接入电信网线与网通网线...
帮助用户完成云硬盘备份存储库的创建,快速购买磁盘备份容器。 操作步骤 登录云...
在建立一个可以在一夜之间将商品运送到大部分发达国家的全球电子商务帝国的过程...
自从双十一成了全民购物狂欢节之后,双十二也理所当然的被当做了降价促销的日子...
01.? 什么是「全景录制」? 不同业务场景的录制需求往往较为复杂,涉及多人上下...
网站ICP备案需要哪些材料? 网站备案信息 都需要哪些材料呢?之前有客户咨询过网...