Linux实例使用IPv6导航
本文介绍了如何为Linux系统的ECS实例使用和配置IPv6的大致流程,供您参考。
前提条件
ECS实例的网络类型必须是专有网络VPC。在分配IPv6地址前,请先了解IPv6。
使用导航
使用IPv6的流程图如下所示:
1.搭建IPv6 VPC—>2.分配IPv6地址->3.开通公网带宽->4.配置IPv6地址->5.测试网络连通性
使用IPv6的步骤如下所示:
1. 搭建IPv6 VPC
要在创建ECS实例时分配IPv6地址,您必须先搭建IPv6 VPC。
2. 为ECS实例分配IPv6地址
默认情况下,您在新建ECS实例时只分配私网IPv4地址,不分配IPv6地址。如需使用IPv6地址,您需为ECS实例分配IPv6地址。
3. 开通公网带宽
创建ECS实例时配置的IPv6地址默认是专有网络VPC内网通信。如果您想通过IPv6地址访问公网或被公网访问,需要开通IPv6公网带宽。
4. 配置IPv6地址
您可以为ECS实例自动配置IPv6地址和手动配置IPv6地址,推荐您使用更高效的自动配置工具配置IPv6地址。
5. 测试网络连通性
您可以登录ECS实例测试网络的连通性,以保证配置的IPv6地址已具备公网访问能力。
步骤一:
仅 VPC 类型的 ECS 实例支持 IPv6 地址。要在 Linux 实例上配置 IPv6 地址,必须先搭建 IPv6 VPC。
背景信息
默认情况下,专有网络使用 IPv4 寻址协议。您可以根据需要开通 IPv6 寻址协议。
操作步骤
如果您还未创建 VPC,您可以在创建VPC时开通IPv6。
如果您已经创建了VPC,您可以为已有VPC开通IPv6。
步骤二:
您可以在新建 Linux 实例时分配 IPv6 地址,暂不支持为已建的实例分配 IPv6 地址.。
背景信息
默认情况下,您在新建实例时只分配私网 IPv4 地址,不分配 IPv6 地址。IPv6 功能处于公测阶段,您需要先申请公测。
为新建实例分配 IPv6 地址
前提条件:实例所在的 VPC 和交换机已经开通 IPv6 网段,详情请参见搭建 IPv6 专有网络。
操作步骤:创建实例。
步骤三:
如果您想使用 IPv6 地址进行公网通信,您需要开通 IPv6 公网带宽。
背景信息
创建实例时配置的 IPv6 地址默认是 VPC 内网通信。
操作步骤
- 登录控制台。
- 在左侧导航栏,单击IPv6网关。
- 找到目标 IPv6 网关,进入详情信息页,单击IPv6公网带宽。
- 找到目标 IPv6 地址,然后单击开通公网带宽。
- 选择计费类型和带宽峰值,然后单击立即购买完成支付。
步骤四:
本文介绍了如何为Linux实例自动配置IPv6地址和手动配置IPv6地址,推荐您使用更高效的自动配置工具配置IPv6地址。
自动配置IPv6地址
ecs-util-ipv6能为已分配IPv6地址的ECS实例一键配置IPv6地址,或者为没有分配IPv6地址的ECS实例一键清理IPv6配置。
使用限制如下:
ecs-util-ipv6工具仅适用于VPC类型实例,使用前请勿将网络禁用或者将相关出口IP端口(100.100.100.200:80)禁用。
ecs-util-ipv6工具运行时会自动重启网卡、网络服务,短时间内网络可能会不可用,请慎重执行。
下载对应系统版本工具到目标系统,赋予执行权限后使用管理员权限执行:
wget -O ecs-utils-ipv6 https://ipv6-tool.qnssl.com/rhel-ecs-utils-ipv6 (具体操作系统对应的下载地址见下面表格)
chmod +x ./ecs-utils-ipv6
./ecs-utils-ipv6
如果当前ECS已绑定IPv6地址,则会自动配置;否则会自动清理原有IPv6地址配置。
命令行参数:
ecs-utils-ipv6 --help # show usage
ecs-utils-ipv6 --version # show version
ecs-utils-ipv6 # auto config all dev ipv6
ecs-utils-ipv6 --static [dev] [ip6s] [prefix_len] [gw6] # config dev static ipv6
e.g. ecs-utils-ipv6 --static eth0
ecs-utils-ipv6 --static eth0 xxx::x1 64 xxx::x0
ecs-utils-ipv6 --static eth0 "xxx::x1 xxx:x2 xxx:x3" 64 xxx::x0
ecs-utils-ipv6 --enable # enable ipv6
ecs-utils-ipv6 --disable # disable ipv6
可以开启、禁用、手动配置、自动配置(默认)IPv6。
./ecs-utils-ipv6 #默认可不带参数,自动配置多网卡多IPv6
./ecs-utils-ipv6 --enable #开启IPv6
./ecs-utils-ipv6 --disable #禁用IPv6
./ecs-utils-ipv6 --static <dev> #自动配置网卡IPv6
./ecs-utils-ipv6 --static <dev> <ip6s> <prefix_len> <gw6> #手动配置网卡IPv6,支持多IPv6,请用""包含,多个IPv6用空格隔开
下载地址如下:
| 系列 | 发行版 | 下载地址 |
|---|---|---|
| RHEL | CentOS 5/6/7/8 Red Hat 5/6/7 |
https://ipv6-tool.qnssl.com/rhel-ecs-utils-ipv6 |
| Debian | Ubuntu 14/16 Debian/8/9 |
https://ipv6-tool.qnssl.com/debian-ecs-utils-ipv6 |
| SLES | SUSE 11/12 OpenSUSE 42 |
https://ipv6-tool.qnssl.com/sles-ecs-utils-ipv6 |
| CoreOS | CoreOS 14/17 | https://ipv6-tool.qnssl.com/coreos-ecs-utils-ipv6 |
| FreeBSD | FreeBSD 11 | https://ipv6-tool.qnssl.com/freebsd-ecs-utils-ipv6 |
手动配置IPv6地址
完成以下操作,手动配置IPv6地址:
1.检查实例是否已开启IPv6服务。
| **注意: **CentOS 8、Debian 10.3、Ubuntu18.04默认开启了IPv6服务。 |
2.开启IPv6服务。
CentOS 6的操作步骤如下:
a.远程连接实例。具体操作,请参见通过VNC远程连接Linux实例。
b.运行vi /etc/modprobe.d/disable_ipv6.conf,将options ipv6 disable=1修改为options ipv6 disable=0后保存退出。
c.运行vi /etc/sysconfig/network,将NETWORKING_IPV6=no修改为NETWORKING_IPV6=yes后保存退出。
d.运行以下命令:
modprobe ipv6 -r
modprobe ipv6
e.运行lsmod | grep ipv6,当返回以下内容时,表明IPv6模块已经成功加载:
ipv6 xxxxx 8
| **说明: **第三列参数值不能为 0,否则您需要重新设置IPv6服务。 |
f.运行vi /etc/sysctl.conf做如下修改:
#net.ipv6.conf.all.disable_ipv6 = 1
#net.ipv6.conf.default.disable_ipv6 = 1
#net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
g.运行sysctl -p使配置生效。
CentOS 7的操作步骤如下:
a.远程连接实例。
b.运行vi /etc/modprobe.d/disable_ipv6.conf,将options ipv6 disable=1修改为options ipv6 disable=0 后保存退出。
c.运行vi /etc/sysconfig/network,将NETWORKING_IPV6=no修改为NETWORKING_IPV6=yes后保存退出。
d.运行vi /etc/sysctl.conf做如下修改:
#net.ipv6.conf.all.disable_ipv6 = 1
#net.ipv6.conf.default.disable_ipv6 = 1
#net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
e.运行sysctl -p使配置生效。
CoreOS 14或17的操作步骤如下:
a.远程连接实例。
b.运行vi /usr/share/oem/grub.cfg,删除ipv6.disable=1后保存退出。
c.重启实例。
Debian 8或9的操作步骤如下:
a.远程连接实例。
b.运行vi /etc/default/grub,删除ipv6.disable=1后保存退出。
c.运行vi /boot/grub/grub.cfg,删除ipv6.disable=1后保存退出。
d.重启实例。
e.运行vi /etc/sysctl.conf做如下修改:
#net.ipv6.conf.all.disable_ipv6 = 1
#net.ipv6.conf.default.disable_ipv6 = 1
#net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
f.运行sysctl -p使配置生效。
FreeBSD 11的操作步骤如下:
a.远程连接实例。
c.运行vi /etc/rc.conf,添加ipv6_activate_all_interfaces="YES"后保存退出。
d.运行/etc/netstart restart重启网络。
OpenSUSE 42的操作步骤如下:
远程连接实例。
运行vi /etc/sysctl.conf做如下修改:
#net.ipv6.conf.all.disable_ipv6 = 1
#net.ipv6.conf.default.disable_ipv6 = 1
#net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
SUSE 11或12的操作步骤如下:
a.远程连接实例。
b.运行vi /etc/modprobe.d/50-ipv6.conf,删除install ipv6 /bin/true后保存退出。
c.运行vi /etc/sysctl.conf做如下修改:
#net.ipv6.conf.all.disable_ipv6 = 1
#net.ipv6.conf.default.disable_ipv6 = 1
#net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
d.运行sysctl -p使配置生效。
Ubuntu 14或16的操作步骤如下:
a.远程连接实例。
b.运行vi /etc/sysctl.conf做如下修改:
#net.ipv6.conf.all.disable_ipv6 = 1
#net.ipv6.conf.default.disable_ipv6 = 1
#net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
c.运行sysctl -p使配置生效。
3.查询实例的IPv6地址。
您可以通过控制台查看实例分配的IPv6地址。
4.手动配置IPv6地址。
CentOS 6/7/8 和 Red Hat 6/7 的操作步骤如下:
a.远程连接实例。
b.运行vi /etc/sysconfig/network-scripts/ifcfg-eth0打开网卡配置文件,eth0为网卡标识符,您需要修改成实际的标识符。在文件中根据实际信息添加以下配置:
- 单IPv6地址
IPV6INIT=yes
IPV6ADDR=<IPv6地址>/<子网前缀长度>
IPV6_DEFAULTGW=<IPv6网关>
- 多IPv6地址:
IPV6INIT=yes
IPV6ADDR=<IPv6地址>/<子网前缀长度>
IPV6ADDR_SECONDARIES="<IPv6地址1>/<子网前缀长度> <IPv6地址2>/<子网前缀长度>"
IPV6_DEFAULTGW=<IPv6网关>
| **说明: **为区分单个IPv6与多个IPv6地址,请在IPV6ADDR_SECONDARIES 参数中使用列表格式表达多地址格式,使用半角引号(")包含地址,并用空格隔开。 |
Debian/8/9和Ubuntu 14/16的操作步骤如下:
a.远程连接实例。
b.运行vi /etc/network/interfaces打开网卡配置文件,eth0为网卡标识符,您需要修改成实际的标识符。在文件中根据实际信息添加以下配置:
- 单 IPv6 地址:
auto eth0
iface eth0 inet6 static
address <IPv6地址>
netmask <子网前缀长度>
gateway <IPv6网关>
- 多IPv6 地址:
auto eth0
iface eth0 inet6 static
address <IPv6地址>
netmask <子网前缀长度>
gateway <IPv6网关>
auto eth0:0
iface eth0:0 inet6 static
address <IPv6地址1>
netmask <子网前缀长度>
gateway <IPv6网关>
auto eth0:1
iface eth0:1 inet6 static
address <IPv6地址2>
netmask <子网前缀长度>
gateway <IPv6网关>
| **说明: **为区分单个 IPv6 与多个 IPv6 地址,您只需在同一网卡标识符的基础上重复添加地址信息即可。 |
c.重启网络服务:运行service network restart或systemctl restart networking。
OpenSUSE 42 和 SUSE Linux 11/12的操作步骤如下:
a.远程连接实例。
b.运行vi /etc/sysconfig/network/ifcfg-eth0打开网卡配置文件,eth0为网卡标识符,您需要修改成实际的标识符。在文件中根据实际信息添加以下配置:
- 单 IPv6 地址:
IPADDR_0=<IPv6地址>
PREFIXLEN_0=<子网前缀长度>
- 多IPv6 地址:
IPADDR_0=<IPv6地址>
PREFIXLEN_0=<子网前缀长度>
IPADDR_1=<IPv6地址1>
PREFIXLEN_1=<子网前缀长度>
IPADDR_2=<IPv6地址2>
PREFIXLEN_2=<子网前缀长度>
| **说明: **为区分单个IPv6与多个IPv6地址,请使用不用的IPADDR_N和PREFIXLEN_N重复添加地址信息。 |
CoreOS 14/17的操作步骤如下:
a.远程连接实例。
b.运行vi /etc/systemd/network/10-eth0.network打开网卡配置文件,eth0为网卡标识符,您需要修改成实际的标识符。在文件中根据实际信息添加以下配置:
- 单IPv6地址:
[Address]
Address=<IPv6地址>/<子网前缀长度>
[Route]
Destination=::/0
Gateway=<IPv6网关>
- 多IPv6地址:
[Address]
Address=<IPv6地址1>/<子网前缀长度>
[Address]
Address=<IPv6地址2>/<子网前缀长度>
[Route]
Destination=::/0
Gateway=<IPv6网关>
| **说明: **为区分单个IPv6与多个IPv6地址,请使用不用的IPADDR_N和PREFIXLEN_N重复添加地址信息。 |
FreeBSD 11的操作步骤如下:
a.远程连接实例。
b.运行vi /etc/rc.conf打开网卡配置文件,vtnet0为网卡标识符,您需要修改成实际的标识符。在文件中根据实际信息添加以下配置:
- 单IPv6地址:
ipv6_ifconfig_vtnet0="<IPv6地址>"
ipv6_defaultrouter="<IPv6网关>"
- 多IPv6地址:
ipv6_ifconfig_vtnet0="<IPv6地址1>"
ipv6_ifconfig_vtnet0="<IPv6地址2>"
ipv6_defaultrouter="<IPv6网关>"
| **说明: **为区分单个IPv6与多个IPv6地址,您只需在同一网卡标识符的基础上重复添加地址信息即可。 |
步骤五:
IPv4 和 IPv6 通信彼此独立,如果当前的安全组规则不能满足业务需求,您需要为云主机实例单独配置 IPv6 安全组规则。
操作步骤
- 登录 QVM 管理控制台。
- 在左侧导航栏,选择云主机 > 安全组。
- 找到目标安全组,然后单击配置规则。
- 单击手动添加。
- 配置安全组规则。
- 其中,授权对象中输入授权的 IPv6 地址段。例如输入::/0则代表授权所有 IPv6 地址。
关于安全组规则的配置操作和常见案例,请参见添加安全组应用案例。
步骤六:
操作步骤
- 远程连接已配置IPv6地址的ECS实例。
- 运行以下命令验证网络连通性。
ping -6 baidu.com