• 沒有找到結果。

操作场景

用户使用IPv6地址通信需要获取来访者的真实IPv6地址。TOA内核模块主要用来获取 经NAT64转化过的来访者真实IPv6地址,该插件安装在后端服务器。

当用户需要在操作系统中编译NAT64 TOA内核模块时,可参考本文档进行配置。本操 作当前仅支持华东-上海一区域。

说明

● TOA不支持UDP协议。

● TOA模块在以下操作系统中验证可以正常工作,其他内核版本安装方法类似。

CentOS 7/7.2 (Kernel version 3.10.0)

Ubuntu 14.04.3(Kernel version 3.12.0)

Ubuntu 16.04.3 (Kernel version 4.4.0)

前提条件

● 编译内核模块开发环境需与当前内核版本开发环境一致。

● 确保虚拟机可以访问开放源。

● 如果是非root用户,需拥有sudo权限。

操作步骤

编译并加载TOA模块

以下操作步骤是针对Linux内核版本为3.0以上的操作系统。

1. 准备编译环境。

说明

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

以下是不同Linux发行版本的操作说明,请根据环境选择对应的方案。

– CentOS环境下的操作步骤。

i. 执行如下命令,安装gcc编译器。

sudo yum install gcc

ii. 执行如下命令,安装make工具。

sudo yum install make

iii. 执行如下命令,安装内核模块开发包,开发包头文件与库的版本需要与 内核版本一致。

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。

– Ubuntu、Debian环境下的操作步骤。

i. 执行如下命令,安装gcc编译器。

sudo apt-get install gcc ii. 执行如下命令,安装make工具。

sudo apt-get install make

iii. 执行如下命令,安装内核模块开发包,开发包头文件与库的版本需要与 内核版本一致。

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

– SUSE环境下的操作步骤。

i. 执行如下命令,安装gcc编译器。

sudo zypper install gcc

ii. 执行如下命令,安装make工具。

sudo zypper install make

iii. 执行如下命令,安装内核模块开发包,开发包头文件与库的版本需要与 内核版本一致。

sudo zypper install enel-default-devel – CoreOS环境下的操作步骤。

CoreOS环境下在容器内进行内核模块的编译时,需要先启动一个用于内核模 块开发的容器,然后再进行编译。

详细过程参见CoreOS官方文档,获取方式如下链接所示。

https://coreos.com/os/docs/latest/kernel-modules.html 2. 编译内核模块。

a. 使用git工具,执行如下命令,下载TOA内核模块源代码。

git clone https://github.com/huaweicloud/elb-toa git checkout IPv6

用户指南 9 附录

说明

sudo insmod toa.ko

b. 执行如下命令,验证模块加载情况,查看内核输出信息。

dmesg | grep TOA

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

说明

i. 在“/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内核模块路径。

ii. 执行以下命令,为toa.modules启动脚本添加可执行权限。

sudo chmod +x /etc/sysconfig/modules/toa.modules 说明

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

5. 安装多节点。

如果要在相同的客户操作系统中加载此内核模块,可以将toa.ko文件拷贝到需要

struct toa_nat64_peer uaddr 2. 调用函数,获得IPv6地址。

getsockopt(connfd, IPPROTO_IP, TOA_SO_GET_LOOKUP, &uaddr, &len) 其中

connfd:服务器端提供服务连接的socket fd IPPROTO_IP:固定

len:sizeof(struct toa_nat64_peer) TOA_SO_GET_LOOKUP:常量值4096

uaddr:用来保存NAT64 TOA数据结构的变量 3. 输出地址并保存。

uaddr.saddr 4. 参考代码示例:

//定义保存nat64 toa信息的数据结构和变量 enum {

struct toa_nat64_peer { struct in6_addr saddr;

uint16_t sport;

};struct toa_nat64_peer uaddr;

……//获取服务端的socket

sockaddr.sin_family = AF_INET;

sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);

sockaddr.sin_port = htons(PORT);

listenfd = socket(AF_INET,SOCK_STREAM,0);

bind(listenfd, (struct sockaddr *)&sockaddr, sizeof(sockaddr))

……//监听对应的socket

connfd = accept(listenfd, (struct sockaddr*)&caddr, &length);

//获取对应nat64 toa的信息 char from[40];

int len = sizeof(struct toa_nat64_peer);

if (getsockopt(connfd, IPPROTO_IP, TOA_SO_GET_LOOKUP, &uaddr, &len) == 0) { inet_ntop(AF_INET6, &uaddr.saddr, from, sizeof(from));

//获取源IP和源port的信息

printf("real client [%s]:%d\n", from, ntohs(uaddr.sport));

}

用户指南 9 附录

A 修订记录

发布日期 修改说明

2021-12-28 第十九次正式发布。文档内容更新为:

● 在IPv6弹性公网IP中,增加IPv6网络的应用场景。

2021-11-01 第十八次正式发布。文档内容更新为:

新增“优选BGP线路”,

● 在申请弹性公网IP中,修改参数“线路”的描述。

● 在申请共享带宽、添加弹性公网IP到共享带宽中,增加参数

“线路”以及相关约束与限制说明。

● 在共享流量包简介、带宽加油包简介中,增加约束与限制说 明。

2021-05-12 第十七次正式发布。文档内容更新为:

新增“公网IP池”章节。

2021-02-20 第十六次正式发布。文档内容更新为:

常见问题新增:EIP资源在什么情况下会被冻结,如何解除被冻 结的EIP资源?

常见问题新增:如何查询EIP使用量?

2021-01-08 第十五次正式发布。文档内容更新为:

从共享带宽移出EIP时,支持设置EIP移出后规格,包括计费模 式和带宽大小。

2020-12-01 第十四次正式发布。文档内容更新为:

● 常见问题删除“什么是弹性公网IP?”。

● 常见问题“静态BGP与全动态BGP有何区别?”补充计费信 息。

2020-11-03 第十三次正式发布。文档内容更新为:

● 新增常见问题:在管理控制台找不到已购EIP怎么办?

● 删除常见问题:弹性云服务器关机再开机后,其绑定的弹性 公网IP是否会改变?

发布日期 修改说明

2020-09-07 第十二次正式发布。文档内容更新为:

● 在“什么是弹性公网IP”章节,补充线路类型信息。

● 修改常见问题:EIP连接出现问题时,如何排查?

● 新增常见问题:带宽如何扩大至300Mbit/s以上?

2020-07-28 第十一次正式发布。文档内容更新为:

● 新增“配置剩余使用量预警”章节。

● 常见问题新增:共享流量包与共享带宽有什么区别?

● 常见问题新增:共享流量包购买后需要设置吗?

● 修改常见问题:如何查询弹性公网IP归属地?

● 在“使用限制”章节,新增入云限速规则调整说明。

2020-06-18 第十次正式发布。文档内容更新为:

● 常见问题新增“弹性公网IP Ping不通?”。

● 常见问题新增“EIP出现封堵后,如何解封?”。

2020-05-26 第九次正式发布。文档内容更新为:

● 常见问题结构调整。

● 常见问题新增“一台弹性云服务器云主机是否可以绑定多个 弹性公网IP?”。

2020-04-15 第八次正式发布。文档内容更新为:

常见问题新增“弹性公网IP是否支持跨区域绑定?”。

2020-03-30 第七次正式发布。文档内容更新为:

● 产品介绍新增“计费说明”章节。

● 常见问题新增“计费类”。

2020-03-26 第六次正式发布。文档内容更新为:

● 新增“导出弹性IP弹性公网IP列表”章节。

● 常见问题新增“如何查询弹性公网IP归属地?”。

● 常见问题新增“弹性公网IP是否支持转移给其他帐号?”。

2020-02-18 第五次正式发布。文档内容更新为:

● 常见问题新增“弹性公网IP如何计费?”。

● 优化常见问题“一个弹性公网IP可以给几个弹性云服务器使 用?”。

2020-02-10 第四次正式发布。文档内容更新为:

修改“权限管理”章节,VPC系统权限名称变更。

2020-01-20 第三次正式发布。文档内容更新为:

修改“权限管理”章节内容。

用户指南 A 修订记录

发布日期 修改说明

2020-01-14 第二次正式发布。

● 优化“产品介绍”。

● 新增弹性公网IP带宽章节。

2019-12-10 第一次正式发布。

相關文件