为ECS实例实现IPv6通信

更新时间:

如果您需要在VPC中进行IPv6公私网通信,您可以在开通了IPv6网段的VPC和交换机下创建带有IPv6地址的ECS实例。本文介绍ECS实例如何实现通过IPv6地址通信、如何为ECS实例分配IPv6地址、配置IPv6地址等。

说明

由于IPv4网络地址资源的有限性,在IPv4环境中,网络工程师经常需要花费大量时间和精力去解决地址冲突等问题。相比之下,引入IPv6网段后,不仅因其庞大的地址空间解决了网络地址资源的限制问题,还消除了众多接入设备连接互联网时所面临的障碍。

使用限制

IPv6网关支持的地域

区域

地域

中国

华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特)、华北6(乌兰察布)、华东1(杭州)、华东2(上海)、华东5(南京-本地地域)、华东6(福州-本地地域)、华南1(深圳)、华南2(河源)、华南3(广州)、西南1(成都)、中国香港、华中1(武汉-本地地域)

亚太

菲律宾(马尼拉)、新加坡、日本(东京)、韩国(首尔)、印度尼西亚(雅加达)、马来西亚(吉隆坡)、泰国(曼谷)

欧洲与美洲

美国(弗吉尼亚)、美国(硅谷)、德国(法兰克福)

不支持IPv6的ECS实例规格族

  • 密集计算型实例规格族ic5

  • 内存型实例规格族se1

  • 大数据型实例规格族d1

  • 本地SSD型实例规格族i2g,本地SSD型实例规格族i1

  • 高主频计算型实例规格族hfc5,高主频通用型实例规格族hfg5

  • 通用型弹性裸金属服务器实例规格族ebmg5,内存网络增强型弹性裸金属服务器实例规格族ebmr5s

  • 上一代共享型实例规格族xn4、n4、mn4、e4

配置步骤

说明

您可以通过一键部署快速完成以下操作。

步骤一: 分配IPv6地址

为ECS实例分配IPv6地址,以使其能够通过IPv6协议与其他实例或外部网络进行通信。

为已有实例分配IPv6地址

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 实例

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 选择已创建的ECS实例,在操作列下选择icon1 > 网络和安全组 > 管理IPv6

  5. 管理辅助私网IP对话框中,按照界面提示分配IPv6地址。

    重要

    如果实例所在的交换机没有打开分配IPv6地址的功能,点击开通交换机IPv6,在交换机界面开通IPv6。交换机如何开通IPv6,请参见交换机开通IPv6

    image

  6. 单击确定

新建实例时分配IPv6地址

创建实例时,需要注意以下信息(其他配置说明,请参见自定义购买实例):

  • 网络及可用区:选择已开通IPv6的专有网络和交换机。若未开通,可参考文档交换机开通IPv6

  • 实例:筛选出支持IPv6的实例规格,并选择一个实例规格。

    image

  • 带宽和安全组:单击弹性网卡|IPv6(选填),然后选中免费分配 IPv6 地址

    image

分配完成后,您可以通过ECS管理控制台查看IP地址详情。具体操作,请参见查看IP地址

步骤二: 配置IPv6地址

将IPv6地址配置到云服务器的网卡上,以使镜像操作系统内部识别并生效IPv6。

  1. 部分镜像支持自动配置并识别IPv6地址,通过以下步骤确认您的ECS实例操作系统是否已经识别了IPv6地址。

    Linux实例

    1. 远程连接Linux实例。

      具体操作,请参见通过密码或密钥认证登录Linux实例

    2. 执行ip -6 addr show或者ifconfig命令。

      1. 如果返回信息如下图所示,则表示已成功识别IPv6地址,可以跳过此配置IPv6的步骤,如果没有,请继续执行以下操作。

    image

    Windows实例

    1. 远程连接Windows实例。

      具体操作,请参见通过密码认证登录Windows实例

    2. 打开命令行工具,执行ipconfig命令

      1. 如果返回信息如下图所示,则表示已成功识别IPv6地址,可以跳过此配置IPv6的步骤,如果没有,请继续执行以下操作。

    image

  2. 配置IPv6地址。

    重要

    自动配置IPv6地址方式需安装云助手;若您的实例不支持或不方便安装云助手,请通过手动方式配置IPv6地址。

    (推荐)自动配置IPv6地址

    前提条件

    1. 实例已安装云助手。若未安装,请参见安装云助手Agent

    2. 仅适用于以下操作系统:Alibaba Cloud Linux 2/3、CentOS 6/7/8、Red Hat 6/7、Anolis OS、Fedora、Ubuntu 14/16/18/20、Debian 8/9/10/11、SUSE 11/12/15、OpenSUSE 15/42、FreeBSD 11。

    重要

    配置过程需使用到云助手,可能会自动重启网卡、网络服务,短时间内网络可能会不可用,请慎重执行。

    操作步骤

    1. 远程连接Linux实例。

      具体操作,请参见通过密码或密钥认证登录Linux实例

    2. 执行以下命令配置IPv6地址。

      说明

      在默认情况下,执行以下命令时会自动校验ecs-utils-ipv6插件是否已在本地安装,或本地版本是否为最新。若未安装或版本较旧,插件将自动从网络上下载最新版本并执行安装,这一过程需要您的ECS实例具备公网访问功能。

      sudo acs-plugin-manager --exec --plugin=ecs-utils-ipv6

    手动配置(Linux

    1. 远程连接Linux实例。

      具体操作,请参见通过密码或密钥认证登录Linux实例

    2. 执行ip addr | grep inet6或者ifconfig | grep inet6命令,检查实例是否已开启IPv6服务。

      1. 如果未返回inet6相关内容:表示实例未开启IPv6服务,请开启IPv6服务。

        如何开启IPv6服务

        Alibaba Cloud Linux 2/3

        1. 执行以下命令,修改/etc/sysctl.conf配置文件。

          vi /etc/sysctl.conf
        2. i键进入编辑模式,找到如下内容,将内容末尾数值1替换为0

          net.ipv6.conf.all.disable_ipv6 = 1
          net.ipv6.conf.default.disable_ipv6 = 1
          net.ipv6.conf.lo.disable_ipv6 = 1
        3. 如果需要开启指定网络接口,修改信息示例如下。

          net.ipv6.conf.eth0.disable_ipv6 = 0
        4. 修改完成后按Esc键退出编辑模式,输入:wq后按下回车键,保存并退出。

        5. 执行以下命令,验证/etc/sysctl.conf配置信息是否与initramfs中的/etc/sysctl.conf存在差异。

          diff -u /etc/sysctl.conf <(lsinitrd -f /etc/sysctl.conf)
          说明

          Alibaba Cloud Linux 2配置了initramfs(initram file system)。如果initramfs中的/etc/sysctl.conf文件与IPv6的配置文件/etc/sysctl.conf存在差异,系统可能会生效新的配置,与您需求的配置混淆。

        6. 若两个配置文件存在差异,执行以下命令,重新生成initramfs

          sudo dracut -v -f
        7. 重启ECS实例使配置生效。具体操作,请参见重启实例

        8. 执行ip addr | grep inet6或者ifconfig | grep inet6命令,验证是否已成功开启IPv6。

          若系统返回inet6相关内容,则表示IPv6服务已成功开启。

        CentOS 6/7

        1. 执行以下命令,修改/etc/modprobe.d/disable_ipv6.conf配置文件。

          vi /etc/modprobe.d/disable_ipv6.conf
          1. i键进入编辑模式,将options ipv6 disable=1修改为options ipv6 disable=0

          2. 修改完成后按Esc键退出编辑模式,输入:wq后按下回车键,保存并退出。

        2. 执行以下命令,修改/etc/sysconfig/network配置文件。

          vi /etc/sysconfig/network
          1. i键进入编辑模式,将NETWORKING_IPV6=no修改为NETWORKING_IPV6=yes

          2. 修改完成后按Esc键退出编辑模式,输入:wq后按下回车键,保存并退出。

        3. (可选)依次执行以下命令,重新加载IPv6模块。

          说明

          若您的操作系统为CentOS 6,则需要执行该步骤。否则,跳过该步骤。

          modprobe ipv6 -r
          modprobe ipv6
          lsmod | grep ipv6

          若系统返回以下内容,表明IPv6模块已经成功加载。

          ipv6                  xxxxx  8
          说明

          返回内容第三列参数值不能为 0,否则您需要重新设置IPv6服务。

        4. 执行以下命令,修改/etc/sysctl.conf配置文件。

          vi /etc/sysctl.conf
          1. i键进入编辑模式,找到如下内容,替换内容末尾数值10

            net.ipv6.conf.all.disable_ipv6 = 1
            net.ipv6.conf.default.disable_ipv6 = 1
            net.ipv6.conf.lo.disable_ipv6 = 1
          2. 修改完成后按Esc键退出编辑模式,输入:wq后按下回车键,保存并退出。

        5. 执行以下命令,使配置生效。

          sudo sysctl -p

        Debian 8/9

        1. 执行以下命令,修改/etc/default/grub配置文件。

          vi /etc/default/grub
          1. i键进入编辑模式,删除ipv6.disable=1内容。

          2. 修改完成后按Esc键退出编辑模式,输入:wq后按下回车键,保存并退出。

        2. 执行以下命令,修改/boot/grub/grub.cfg配置文件。

          vi /boot/grub/grub.cfg
          1. i键进入编辑模式,删除ipv6.disable=1内容。

          2. 修改完成后按Esc键退出编辑模式,输入:wq后按下回车键,保存并退出。

        3. 重启Linux实例。具体操作,请参见重启实例

        4. 执行以下命令,修改/etc/sysctl.conf配置文件。

          vi /etc/sysctl.conf
          1. i键进入编辑模式,找到如下内容,替换内容末尾数值10

            net.ipv6.conf.all.disable_ipv6 = 0
            net.ipv6.conf.default.disable_ipv6 = 0
            net.ipv6.conf.lo.disable_ipv6 = 0
          2. 修改完成后按Esc键退出编辑模式,输入:wq后按下回车键,保存并退出。

        5. 执行以下命令,使配置生效。

          sudo sysctl -p

        Ubuntu 14/16、OpenSUSE 42

        1. 执行以下命令。修改vi /etc/sysctl.conf配置文件。

          vi /etc/sysctl.conf
          1. i键进入编辑模式,找到如下内容,替换内容末尾数值10

            net.ipv6.conf.all.disable_ipv6 = 0
            net.ipv6.conf.default.disable_ipv6 = 0
            net.ipv6.conf.lo.disable_ipv6 = 0
          2. 修改完成后按Esc键退出编辑模式,输入:wq后按下回车键,保存并退出。

        2. 执行以下命令,使配置生效。

          sysctl -p

        FreeBSD 11

        1. 执行以下命令,修改/etc/rc.conf配置文件。

          vi /etc/rc.conf
          1. i键进入编辑模式,添加ipv6_activate_all_interfaces="YES"内容。

          2. 修改完成后按Esc键退出编辑模式,输入:wq后按下回车键,保存并退出。

        2. 执行以下命令,重启网络使配置生效。

          /etc/netstart restart

        SUSE 11/12

        1. 执行以下命令,修改/etc/modprobe.d/50-ipv6.conf配置文件。

          vi /etc/modprobe.d/50-ipv6.conf
          1. i键进入编辑模式,删除install ipv6 /bin/true内容。

          2. 修改完成后按Esc键退出编辑模式,输入:wq后按下回车键,保存并退出。

        2. 执行以下命令。修改vi /etc/sysctl.conf配置文件。

          vi /etc/sysctl.conf
          1. i键进入编辑模式,找到如下内容,替换内容末尾数值10

            net.ipv6.conf.all.disable_ipv6 = 0
            net.ipv6.conf.default.disable_ipv6 = 0
            net.ipv6.conf.lo.disable_ipv6 = 0
          2. 修改完成后按Esc键退出编辑模式,输入:wq后按下回车键,保存并退出。

        3. 执行以下命令,使配置生效。

          sysctl -p
      2. 如果返回inet6相关内容:表示实例已开启IPv6服务,请配置IPv6地址。

    3. 配置IPv6地址。

      Alibaba Cloud Linux 2/3、CentOS 6/7、Red Hat 6/7

      1. 执行以下命令,修改网卡配置文件。

        vi /etc/sysconfig/network-scripts/ifcfg-eth0

        eth0:需要替换为实际网卡接口名称。修改完成后,保存并退出。

      2. i键进入编辑模式,在文件中根据实际信息添加以下配置。

        DHCPV6C=yes
        IPV6INIT=yes
      3. 修改完成后按Esc键退出编辑模式,输入:wq后按下回车键,保存并退出。

      4. 重启ECS实例使配置生效。具体操作,请参见重启实例

      CentOS 8

      1. 确认网卡配置文件是否包含IPV6INIT=yesDHCPV6C=yes两项内容。如果包含直接进行下一步操作,如果未包含需先手动添加。

        vi /etc/sysconfig/network-scripts/ifcfg-eth0

        eth0为网卡标识符,您需要修改成实际的标识符。修改完成后,保存并退出。

      2. 禁用cloud-init修改/etc/sysconfig/network-scripts/目录下网卡文件的能力。

        说明

        分配IPv6地址后无需手动配置,但重启之后可能丢失,因此需要禁用cloud-init修改网卡文件的能力。

        1. 执行vi /etc/cloud/cloud.cfg打开网卡配置文件。

          vi /etc/cloud/cloud.cfg
        2. Example datasource config内容前添加以下信息:

          network:
            config: disabled

          修改完成后,保存并退出。

      3. 重启ECS实例使配置生效。具体操作,请参见重启实例

      Debian 8/9/10/11、Ubuntu 16

      1. 执行vi /etc/network/interfaces打开网卡配置文件,在文件中根据实际信息添加以下内容:

        iface eth0 inet6 dhcp

        eth0:需要替换为实际网卡接口名称。修改完成后,保存并退出。

      2. 重启ECS实例使配置生效。具体操作,请参见重启实例

      Ubuntu 18/20

      1. 禁用cloud-init修改/etc/sysconfig/network-scripts/目录下网卡文件的能力。

        说明

        分配IPv6地址后无需手动配置,但重启之后可能丢失,因此需要禁用cloud-init修改网卡文件的能力。

        1. 执行vi /etc/cloud/cloud.cfg打开网卡配置文件。

          vi /etc/cloud/cloud.cfg
        2. Example datasource config内容前添加以下信息:

          network:
            config: disabled

          修改完成后,保存并退出。

      2. 重启ECS实例使配置生效。具体操作,请参见重启实例

      Ubuntu 14

      1. 执行vi /etc/network/interfaces打开网卡配置文件,在文件中根据实际信息添加以下内容:

        iface eth0 inet6 dhcp

        eth0:需要替换为实际网卡接口名称。修改完成后,保存并退出。

      2. 重启ECS实例使配置生效。具体操作,请参见重启实例

      FreeBSD 11

      1. 执行vi /etc/rc.conf命令,打开网卡配置文件,在文件中根据实际信息添加以下内容:

        ipv6_enable="YES"
        ipv6_ifconfig_vtnet0="<IPv6地址> <子网前缀长度>"

        vtnet0:需要替换为实际网卡接口名称。修改完成后,保存并退出。

      2. 继续在文件中修改以下信息,修改完成后,保存并退出。

        ip6addrctl_enable="YES"
        ipv6_activate_all_interfaces="YES"
        ipv6_network_interfaces="auto"

        修改完成后,配置文件内容示例如下:

        hostname="Aliyun"
        sshd_enable="YES"
        dumpdev="NO"
        ipv6_enable="YES"
        ip6addrctl_enable="YES"
        ip6addrctl_policy="ipv4_prefer"
        ipv6_activate_all_interfaces="YES"
        ipv6_network_interfaces="auto"
        ifconfig_lo0="inet 127.0.0.1      netmask 255.0.0.0"
        ifconfig_vtnet0="inet 192.168.XX.XX netmask 255.255.255.0"
        ipv6_ifconfig_vtnet0="2001:XXXX:4:4:4:4:4:4 prefixlen 64"
        defaultrouter="192.168.XX.XX"
        hostname="freebsd"
      3. 重启ECS实例使配置生效。具体操作,请参见重启实例

      Anolis OS 7.9/8.4、CentOS Stream、Fedora

      1. 确认网卡配置文件是否包含IPV6INIT=yesDHCPV6C=yes两项内容。如果包含无需再做任何操作,如果未包含需先手动添加。

        vi /etc/sysconfig/network-scripts/ifcfg-eth0

        eth0:需要替换为实际网卡接口名称。修改完成后,保存并退出。

      2. 重启ECS实例使配置生效。具体操作,请参见重启实例

    手动配置(Windows)

    1. 远程连接Windows实例。

      具体操作,请参见通过密码认证登录Windows实例

    2. 打开命令行工具,执行ipconfig命令,检查实例是否已开启IPv6服务。

      1. 如果未返回inet6相关内容:表示实例未开启IPv6服务,请开启IPv6服务。

        如何开启IPv6服务?

        1. 选择控制面板 > 网络和共享中心 > 网络连接

        2. 单击当前网络连接名,打开状态界面,再单击属性

        3. 选中Internet 协议版本 6 (TCP/IPv6)

          1. Windows Server 2008/2012/2016/2019/2022的操作步骤如下:

          2. 检查IPv6协议这一行是否被选中。如果没有选中则需要先选中,然后单击确定

          3. Windows Server 2003的操作步骤如下:

          4. 根据IPv6协议是否存在,执行不同操作。

            1. 存在IPv6协议:选中Internet 协议版本 6 (TCP/IPv6),再单击确定

            2. 不存在IPv6协议:

              1. 在本地连接属性页面,单击安装,在网络组件类型页面单击协议 > 添加

              2. 选择网络协议页面,选择Microsoft TCP/IP 版本 6 > 确定完成安装。

              3. 选中Internet 协议版本 6 (TCP/IPv6),再单击确定

      2. 如果返回inet6相关内容:表示实例已开启IPv6服务,请配置IPv6地址。

    3. 配置IPv6地址。

      1. 在实例详情页,获取已生成的IPv6地址。

      2. 配置IPv6地址。

        1. Windows Server 2008/2012/2016的操作步骤如下:

          1. 选择控制面板 > 网络

          2. 单击当前网络连接名,打开状态界面,再单击属性

          3. 选择IPv6协议 > 属性

          4. 选中使用以下IPv6地址,并填入IPv6地址、子网前缀长度和IPv6网关,单击确定

          5. (可选)绑定多个IPv6地址:在Internet 协议版本 6(TCP/IP)属性界面,单击高级打开高级设置界面,单击添加做批量处理。完成后单击确定

        2. Windows Server 2003的操作步骤如下:

          1. 选择控制面板 > 网络连接,查看当前网络连接名,假设为本地连接 2

          2. 在Windows系统桌面使用Win+R组合键打开运行对话框,并输入cmd命令,然后单击确定,打开命令行工具。

          3. 添加IPv6地址。

            1. 单个IPv6地址执行以下命令:

            2. netsh interface ipv6 add address "本地连接 2" <IPv6 地址>
            3. 多个IPv6地址执行以下命令:

            4. netsh interface ipv6 add address "本地连接 2" <IPv6 地址 1>
              netsh interface ipv6 add address "本地连接 2" <IPv6 地址 2>
          4. 执行以下命令,添加默认路由。

          5. netsh interface ipv6 add route ::/0 "本地连接 2" <IPv6 网关>
  3. (条件必选)如果您的ECS实例运行的是Linux系统,请执行此步骤;否则,可跳过此操作。

    执行以下命令,查看实例是否安装了多网卡配置工具。

    ls /sbin/eni-ifscan

    若返回信息如下图,则表示实例预装了多网卡配置工具,您需要修改多网卡配置工具的eni-function文件。

    说明

    如果Linux实例预装了多网卡配置工具,由于该工具默认不支持IPv6,将导致Linux系统内的IPv6网卡无法自动识别,实例重启后系统无法获取IPv6地址。

    image

    如何修改eni-function文件

    1. 执行以下命令,修改eni-function文件。

      vim /etc/eni_utils/eni-function 
    2. i键进入编辑模式,将IPV6INIT=no修改为IPV6INIT=yes,并添加DHCPV6C=yes行,修改后保存并退出。

      image

  4. 验证,当输入ifconfigipconfig命令返回第一步的结果时即表示配置成功。

步骤三: (可选)开通IPv6公网带宽

默认云服务器的IPv6地址仅具有私网通信能力,若您想要通过该IPv6地址访问公网或被公网访问,则需开通IPv6公网带宽。

如何开通IPv6公网带宽

  1. 登录专有网络管理控制台

  2. 在左侧导航栏,选择公网访问 > IPv6网关

  3. 在顶部菜单栏处,选择IPv6网关的地域。
  4. IPv6网关页面,根据实例的专有网络ID找到对应IPv6网关,然后单击IPv6网关ID。

  5. 在IPv6网关的详情页面,单击IPv6公网带宽页签,找到目标IPv6地址,然后在操作列单击开通公网带宽

  6. IPv6公网带宽(后付费)页面,根据以下信息配置公网带宽,然后单击立即购买并完成支付。

    参数

    描述

    流量

    选择公网带宽的计费类型。

    公网带宽支持按固定带宽计费按使用流量计费两种计费类型。更多信息,请参见计费说明

    带宽

    根据需要调整公网带宽的带宽峰值。

    计费周期

    公网带宽的计费周期。有Day(按天)Hour(按小时)两种计费周期。

    当公网带宽选择按固定带宽计费时,计费周期为Day(按天),当公网带宽选择按使用流量计费时,计费周期为Hour(按小时)

步骤四: IPv6网络连通性测试验证

测试IPv6的网络连通性,以保证配置的IPv6地址已具备访问公网或被公网访问的能力。

说明

测试IPv6的网络连通性时,您需要确保服务端与客户端都支持并配置了IPv6。

测试公网连通性

ping -6 aliyun.com

系统返回信息如下图所示,表示网络连接正常。ping -6

说明

在此示例中,网站aliyun.com已支持IPv6,当您的ECS实例配置完成后,即可通过IPv6访问aliyun.com。

测试私网连通性

在ECS01实例中执行ping6 <ECS02 IPv6私网地址>命令,ping6ECS02实例的IPv6地址,测试私网通信是否正常。

如果能接收到回复报文,表示通信正常。经测试,ECS01实例到ECS02实例的IPv6私网通信正常。pingecs02

在ECS02实例中执行ping6命令,pingECS01实例的IPv6地址,测试私网通信是否正常。

如果能接收到回复报文,表示通信正常。经测试,ECS02实例到ECS01实例的IPv6私网通信正常。pingecs01

说明

在此示例中,两台ECS实例互相访问的前提是您的ECS01实例与ECS02实例均已配置了IPv6。

其他操作

添加IPv6安全组规则

IPv4和IPv6通信彼此独立,如果当前的安全组规则不能满足业务需求,为了增强网络安全性您需要为ECS实例单独配置IPv6安全组规则。

如何添加IPv6安全组规则

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择网络与安全 > 安全组

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 找到目标安全组,在操作列中,单击管理规则

  5. 在安全组详情页,找到访问规则区域,选择入方向出方向

  6. 添加安全组规则。具体操作,请参见添加安全组规则

    说明

    您需要设置授权对象为IPv6地址段,例如:2001:db8:1234:1a00::***。有关安全组规则更多信息,可参见安全组规则

删除已分配的IPv6地址

如果您的ECS实例不需要IPv6地址,您可以删除实例的IPv6地址。删除IPv6地址后,您仍然可以使用IPv4地址。本章节介绍如何通过ECS管理控制台删除IPv6地址。

重要

请确保实例的状态为运行中已停止

操作步骤

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择网络与安全 > 弹性网卡

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 弹性网卡页面,选择已绑定至目标实例并分配了IPv6地址的弹性网卡,然后在操作列单击管理弹性网卡IP

  5. 在弹出的管理弹性网卡IP对话框中,单击IPv6地址信息右侧的image.png图标。

  6. 单击确定

相关文档

  • 当某个IPv6地址不需要公网通信能力时,您可以删除IPv6地址的公网带宽。具体操作,请参见删除IPv6公网带宽

  • 您可以通过添加和管理路由表中的IPv6路由,来管理专有网络 VPC(Virtual Private Cloud)内的IPv6流量。具体操作,请参见添加和管理路由表中IPv6路由