操作指南

API文档

Linux 云服务器配置 IPv6

最近更新时间:2021-09-07 15:10:31

Linux 云服务器配置 IPv6 有两种方式:工具配置手动配置。请根据您的实际情况选择对应的方式,推荐您使用更高效的自动配置工具配置 IPv6 地址。

说明:

默认云服务器的 IPv6 地址仅具有私网通信能力,若您想要通过该 IPv6 地址访问公网或被公网访问,则需通过弹性公网 IPv6 为该 IPv6 地址开通公网能力,操作详情请参见 为云服务器的 IPv6 地址开通公网

工具配置

config_ipv6 工具配置

config_ipv6 工具可以为已开启 IPv6 且已分配 IPv6 地址的 CVM 实例,一键配置 IPv6 地址。

使用限制

  • config_ipv6 工具仅适用于 VPC 网络环境下。
  • config_ipv6 工具运行时会自动重启网卡、网络服务,短时间内网络可能会不可用,请慎重执行。

操作步骤

  1. 登录云服务器,执行ifconfigip address 命令确定需要配置 IPv6 地址的网卡,如下图所示,本例 eth0 无 IPv6 地址(fe80::是本机私有地址)。

  2. 在云服务器中直接执行如下命令下载 config_ipv6 工具。

    wget https://iso-1251783334.cos.ap-guangzhou.myqcloud.com/scripts/config_ipv6.sh

  3. 赋予执行权限后使用管理员权限执行如下命令,配置过程中请输入y确认配置操作。

    chmod +x ./config_ipv6.sh  # 赋予执行权限
    ./config_ipv6.sh [网卡名称]   # 网卡名称请根据步骤1查询到的实际接口填写,本例以 eth0 为例
    # 示例 1:./config_ipv6.sh eth0
    # 示例 2:./config_ipv6.sh eth1

  4. 执行 ifconfig 查询 IPv6 地址的配置情况,出现如下所示报文表示配置成功。

  5. (此步骤仅适用于 CoreOS 操作系统)重启云服务器,使上述配置生效。

开机自动配置IPv6

对于需要自动化配置 IPv6 实例的需求,例如大批量配置,建议您使用实例自定义数据配合脚本的方式来调用。详情请参见 实例自定义数据。如下为脚本示例(假设是 RHEL 系列,Bash Shell 脚本)。

说明:

该示例仅对 eth0 进行配置,实际操作时注意修改为实际使用的网卡名。

#!/bin/sh
install_dir=/usr/sbin
install_path="$install_dir"/config-ipv6
if [ ! -f "$install_path" ]; then
    tool_url="https://iso-1251783334.cos.ap-guangzhou.myqcloud.com/scripts/config_ipv6.sh"
    # download the tool
    if ! wget "$tool_url" -O "$install_path"; then
        echo "[Error] download tool failed, code $?"
        exit "$?"
    fi
fi
# chmod the tool
if ! chmod +x "$install_path"; then
    echo "[Error] chmod tool failed, code $?"
    exit "$?"
fi
# run the tool
$install_path eth0

enable_ipv6 工具配置

enable_ipv6 工具可以为已分配 IPv6 地址的 CVM 实例,一键配置 IPv6 地址。

使用限制

  • enable_ipv6 工具仅适用于 VPC 网络环境下。
  • enable_ipv6 工具运行时会自动重启网卡、网络服务,短时间内网络可能会不可用,请慎重执行。

操作步骤

  1. 登录云服务器,在云服务器中直接执行如下命令下载 enable_ipv6 工具。

    wget https://iso-1251783334.cos.ap-guangzhou.myqcloud.com/scripts/enable_ipv6.sh

  2. 赋予执行权限后,使用管理员权限执行如下命令:

     chmod +x ./enable_ipv6.sh
     ./enable_ipv6.sh [网卡名称]  
     # 示例 1:./enable_ipv6.sh eth0
     # 示例 2:./enable_ipv6.sh eth1

  3. (此步骤仅适用于 CoreOS 操作系统)重启云服务器,使上述配置生效。

手动配置

CentOS 7.3/CentOS 7.5/CentOS 7.6 配置 IPv6

  1. 远程连接实例,具体操作请参见 登录及远程连接

  2. 检查实例是否已开启 IPv6 功能支持,执行如下命令:

    ip addr | grep inet6
    或者
    ifconfig | grep inet6

    • 若实例未开启 IPv6 功能支持,请根据下文继续开启 IPv6 功能支持。
    • 若返回 inet6 相关内容,表示实例已成功开启 IPv6 功能支持,您可以跳至 第6步 继续操作。
  3. 执行以下步骤修改并保存sysctl.conf文件。

    1. 执行如下命令,打开etc文件夹下的sysctl.conf文件。

      vim /etc/sysctl.conf

    2. 按 “i” 切换至编辑模式,将如下的 IPv6 相关参数设置为0。

      net.ipv6.conf.all.disable_ipv6 = 0
      net.ipv6.conf.default.disable_ipv6 = 0
      net.ipv6.conf.lo.disable_ipv6 = 0

    3. 按 “Esc”,输入 “:wq”,保存文件并返回。

  4. 执行如下命令,对参数进行加载。

    sysctl -p

  5. 执行如下命令,查看是否修改成功。

    sysctl -a | grep ipv6 | grep disable

    显示结果如下,则已成功修改。

  6. 执行以下步骤修改并保存ifcfg-eth0文件。

    1. 执行如下命令,打开/etc/sysconfig/network-scripts/文件夹下的ifcfg-eth0文件。

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

    2. 按 “i” 切换至编辑模式,增加如下内容。

      DHCPV6C=yes

    3. 按 “Esc”,输入 “:wq”,保存文件并返回。

  7. 执行以下步骤修改并保存route6-eth0文件。

    1. 执行如下命令,打开/etc/sysconfig/network-scripts/文件夹下的route6-eth0文件。

      vim /etc/sysconfig/network-scripts/route6-eth0

    2. 按 “i” 切换至编辑模式,增加如下内容,为网卡的 IPv6 添加默认出口。

      default dev eth0 via fe80::feee:ffff:feff:ffff

    3. 按 “Esc”,输入 “:wq”,保存文件并返回。

  8. 执行如下命令,重新启动网卡。

    service network restart
    或者
    systemctl restart network

  9. 依次执行如下命令,查看是否已经获取到 IPv6 地址。

    ifconfig

    若出现以下报文表示已成功获取到 IPv6 地址。

  10. 请参考 SSH 支持 IPv6 配置 为 SSH 开启 IPv6 功能。

CentOS 6.8 配置 IPv6

  1. 远程连接实例,具体操作请参见 登录及远程连接

  2. 检查实例是否已开启 IPv6 功能支持,执行如下命令:

    ip addr | grep inet6
    或者
    ifconfig | grep inet6

    • 若实例未开启 IPv6 功能支持,请根据下文继续开启 IPv6 功能支持。
    • 若返回inet6相关内容,表示实例已成功开启 IPv6 功能支持,您可以跳至 第5步 继续操作。
  3. 执行以下步骤修改并保存ipv6.conf文件。

    1. 执行如下命令,打开/etc/modprobe.d/文件夹下的ipv6.conf文件。

      vi /etc/modprobe.d/ipv6.conf

    2. 按 “i” 切换至编辑模式,将如下的内核参数设置为0。

      options ipv6 disable=0

    3. 按 “Esc”,输入 “:wq”,保存文件并返回。

  4. 执行以下步骤修改并保存sysctl.conf.first文件。

    1. 执行如下命令,打开etc文件夹下的sysctl.conf.first文件。

      vim /etc/sysctl.conf.first

    2. 按 “i” 切换至编辑模式,将如下的配置文件参数设置为0。

      net.ipv6.conf.all.disable_ipv6 = 0

    3. 按 “Esc”,输入 “:wq”,保存文件并返回。

  5. 执行以下步骤修改并保存network文件。

    1. 执行如下命令,打开/etc/sysconfig/文件夹下的network文件。

      vi /etc/sysconfig/network

    2. 按 “i” 切换至编辑模式,增加如下内容。

      NETWORKING_IPV6=yes
      DHCPV6C=yes

    3. 按 “Esc”,输入 “:wq”,保存文件并返回。

  6. 执行以下步骤修改并保存route6-eth0文件。

    1. 执行如下命令,打开或创建/etc/sysconfig/network-scripts/文件夹下的route6-eth0文件。

      vim /etc/sysconfig/network-scripts/route6-eth0

    2. 按 “i” 切换至编辑模式,增加如下内容,为网卡的 IPv6 添加默认出口。

      default dev eth0 via fe80::feee:ffff:feff:ffff

    3. 按 “Esc”,输入 “:wq”,保存文件并返回。

  7. 重启云服务器,若仅通过 service network restart,IPv6 无法正常加载。

  8. 执行如下命令查看重启后 IPv6 是否已经正常加载。

    sysctl -a | grep ipv6 | grep disable

    若出现以下报文说明 IPv6 已经正常加载。

  9. 依次执行如下命令,查看是否已经获取到 IPv6 地址。

    ifconfig

    若出现以下报文说明成功获取 IPv6 地址。

  10. 请参考 SSH 支持 IPv6 配置 为 SSH 开启 IPv6 功能。

Ubuntu 14/Ubuntu 16/Ubuntu 18 配置 IPv6

  1. 远程连接实例,具体操作请参见 登录及远程连接

  2. 检查实例是否已开启 IPv6 功能支持,执行如下命令:

    ip addr | grep inet6
    或者
    ifconfig | grep inet6

    • 若实例未开启 IPv6 功能支持,请根据下文继续开启 IPv6 功能支持。
    • 若返回inet6相关内容,表示实例已成功开启 IPv6 功能支持,您可以跳至 第5步第6步 继续操作。
  3. 运行如下命令,并做相应修改,开启 IPv6 功能支持。

    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

  4. 运行sysctl -p使配置生效。

  5. 如果镜像类型为 Ubuntu 14/Ubuntu16,请执行如下操作配置 IPv6。

    1. 运行如下命令,打开网卡配置文件。
      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网关>

    1. 重启网络服务:运行service network restartsystemctl restart networking
  6. 如果镜像类型为 Ubuntu 18,请执行如下操作配置 IPv6。

    1. 编辑网卡配置文件。

      vi /etc/netplan/50-cloud-init.yaml

    2. 添加 IPv6 地址和网关配置。

      注意:

      只添加 addresses 和 gateway6。

      network:
      version: 2
      ethernets:
      eth0:
      dhcp4: true                         //开启dhcp4
      match:
      macaddress: 52:54:00:75:ce:c2  //MAC地址
      set-name: eth0                      //网卡名
      addresses:
               - 2a00:7b80:454:2000::xxx/64    //设置IPv6地址和掩码
      gateway6: 2a00:7b80:454::1          //设置IPv6网关地址

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

      netplan apply

  7. 请参考 SSH 支持 IPv6 配置 开启 SSH 的 IPv6 功能。

Debian 8.2 配置 IPv6

  1. 远程连接实例,具体操作请参见 登录及远程连接

  2. 检查实例是否已开启 IPv6 功能支持,执行如下命令:

    ip addr | grep inet6
    或者
    ifconfig | grep inet6

    • 若实例未开启 IPv6 功能支持,请根据下文继续开启 IPv6 功能支持。
    • 若返回inet6相关内容,表示实例已成功开启 IPv6 功能支持,您可以跳至 第5步 继续操作。
  3. 执行以下步骤修改并保存sysctl.conf文件。

    1. 执行如下命令,打开etc文件夹下的sysctl.conf

      vim /etc/sysctl.conf

    2. 按 “i” 切换至编辑模式,将如下的 IPv6 相关参数设置为0。

      net.ipv6.conf.all.disable_ipv6 = 0
      net.ipv6.conf.default.disable_ipv6 = 0

    3. 按 “Esc”,输入 “:wq”,保存文件并返回。

  4. 执行如下命令,对参数进行加载。

    sysctl -p

  5. 依次执行如下命令,查看是否已经获取到 IPv6 地址。

    ifconfig

    若出现以下报文,证明成功获取 IPv6 地址。

  6. Debian 8.2 系统默认为 ssh(22端口)开启 IPv6 监听,无需特殊配置,您可执行如下命令,进行查看。

    netstat -tupln

  7. 执行如下命令,配置默认路由。

    ip -6 route add default dev eth0 via fe80::feee:ffff:feff:ffff

  8. 请参考 SSH 支持 IPv6 配置 为 SSH 开启 IPv6 功能。

OpenSUSE 42 配置 IPv6

  1. 远程连接实例,具体操作请参见 登录及远程连接

  2. 执行如下命令,检查实例是否已开启 IPv6 功能支持。

    ip addr | grep inet6
    或者
    ifconfig | grep inet6

    • 若实例未开启 IPv6 功能支持,请根据下文继续开启 IPv6 功能支持。
    • 若返回inet6相关内容,表示实例已成功开启 IPv6 功能支持,您可以跳至 第4步 继续操作。
  3. 运行如下命令,并做相应修改,开启 IPv6 功能支持。

    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

  4. 运行sysctl -p使配置生效。

  5. 配置 IPv6,OpenSUSE 42镜像类型的云服务器 IPv6 操作步骤有 脚本方式 手动方式 。请根据实际情况选择配置方式。

    • 脚本方式

      1. 将如下脚本拷贝到 shell 文件中,这里以 test.sh 为例。

        • dev表示网卡设备名,例如 eth0、eth1。
        • index 表示这是第几个 ipv6 地址,从0开始计数。
        • ip6 表示本机的 ipv6 地址,例如2607:f0d0:1002:0011:0000:0000:0000:0002。
        • prefix_len 表示子网前缀长度,例如64。
              dev=$1
                  index=$2
              ip6=$3
                  prefix_len=$4
          
                  ifcfg_file="/etc/sysconfig/network/ifcfg-$dev"
          
                  if [ ! -f "$ifcfg_file" ]; then
                      touch "$ifcfg_file"
                  fi
          
                  echo -e "\nIPADDR_$index='$ip6'\nPREFIXLEN_$index='$prefix_len'" >> "$ifcfg_file"
                  # update default IPv6 routing
              netip=$(echo $ip6 | awk -F":" '{print $1":"$2":"$3":"$4}')
                  echo "default $netip::1 - $ifcfg" >> /etc/sysconfig/network/routes
          
               service network restart
      2. 执行脚本,举例如下。

        ./test.sh eth0 0 2402:4e00:1000:4200:0:8f0c:d527:b985 64

    • 手动方式

      1. 运行如下脚本,打开网卡配置文件。
        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=<子网前缀长度>

      1. 运行vi /etc/sysconfig/network/routes打开路由配置文件,添加配置项。

        default <IPv6网关> - -

      2. 重启网络服务:运行service network restartsystemctl restart networking

  6. 请参考 SSH 支持 IPv6 配置 开启 SSH 的 IPv6 功能。

SUSE 10 配置 IPv6

  1. 远程连接实例,具体操作请参见 登录及远程连接

  2. 运行如下命令,并做相应修改,开启 IPv6 功能支持。

    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

  3. 运行sysctl -p使配置生效。

  4. 配置 IPv6,SUSE 10镜像类型的云服务器 IPv6 操作步骤有 脚本方式手动方式。请根据实际情况选择配置方式。

    • 脚本方式

      1. 将如下脚本拷贝到 shell 文件中,这里以 test.sh 为例。

        • dev 表示网卡设备名,例如 eth0、eth1。
        • index 表示这是第几个 ipv6 地址,从0开始计数。
        • ip6 表示本机的 ipv6 地址,例如2607:f0d0:1002:0011:0000:0000:0000:0002。
        • prefix_len 表示子网前缀长度,例如64。
          dev=$1
              index=$2
          ip6=$3
              prefix_len=$4
          
              ifcfg_file="/etc/sysconfig/network/ifcfg-$dev"
          
              if [ ! -f "$ifcfg_file" ]; then
                  touch "$ifcfg_file"
              fi
              echo -e "\nIPADDR_$index='$ip6'\nPREFIXLEN_$index='$prefix_len'" >> "$ifcfg_file"
              # update default IPv6 routing
          netip=$(echo $ip6 | awk -F":" '{print $1":"$2":"$3":"$4}')
              echo "default $netip::1 - $ifcfg" >> /etc/sysconfig/network/routes
              service network restart
      2. 执行脚本,举例如下。

        ./test.sh eth0 0 2402:4e00:1000:4200:0:8f0c:d527:b985 64

    • 手动方式

      1. 运行如下脚本,打开网卡配置文件。
        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=<子网前缀长度>

        1. 运行vi /etc/sysconfig/network/routes打开路由配置文件,添加配置项。

          default <IPv6网关> - -

        2. 重启网络服务:运行service network restartsystemctl restart networking

  5. 请参考 SSH 支持 IPv6 配置 开启 SSH 的 IPv6 功能。

FreeBSD 11 配置 IPv6

FreeBSD 11 配置 IPv6 有 脚本方式手动方式,请根据实际情况选择配置方式。

脚本方式

注意:

脚本方式配置会重启网络,请谨慎执行。

  1. 远程连接实例,具体操作请参见 登录及远程连接

  2. 将如下脚本拷贝到 shell 文件中,这里以“test.sh”为例。

    + dev 表示网卡设备名,例如 eth0、eth1。
    + ip6 表示本机的 ipv6 地址,例如 2607:f0d0:1002:0011:0000:0000:0000:0002。
    + prefix_len 表示子网前缀长度,例如 64。

    key_value_editer() 
    {
    local file=$1
    local key=$2
    local value=$3
    [ ! -f "$file" ] && return
    if ! grep -i "^${key}[[:space:]]*=" "$file" &>/dev/null; then
     echo "$key=$value" >> "$file"
    else
     value=${value//\//\\/}
     sed -i "s/^${key}[[:space:]]*=.*/$key=$value/" "$file"
    fi
    }
    dev=$1
    ipv6=$2
    prefix_len=$3
    rc_conf_file="/etc/rc.conf"
    if [ ! -f "$rc_conf_file" ]; then
    exit 1
    fi
    # enable ipv6
    sed -i -e "s/ipv6_network_interfaces='none'//" $rc_conf_file
    sed -i -e "s/ipv6_activate_all_interfaces='NO'//" $rc_conf_file
    key_value_editer "$rc_conf_file" "ipv6_activate_all_interfaces" "'YES'"
    tail="_ipv6"
    # config ipv6 address
    echo "ifconfig_$dev$tail='inet6 $ipv6 prefixlen $prefix_len'" >> /etc/rc.conf
    # config ipv6 defaultrouter
    netip=$(echo $ipv6 | awk -F":" '{print $1":"$2":"$3":"$4}')
    echo "ipv6_defaultrouter='$netip::1'" >> /etc/rc.conf
    /etc/netstart restart

  3. 执行脚本,举例如下。

    sh ./test.sh vtnet0 2402:4e00:1000:4200:0:8f0c:d527:b985 64

  4. 请参考 SSH 支持 IPv6 配置 开启 SSH 的 IPv6 功能。

手动方式

  1. 远程连接实例,具体操作请参见 登录及远程连接

  2. 运行vi /etc/rc.conf命令。

  3. 删除ipv6_network_interfaces='none' ,并修改ipv6_activate_all_interfaces='NO'ipv6_activate_all_interfaces='YES'后保存退出。

  4. 运行/etc/netstart restart重启网络。

  5. 运行vi /etc/rc.conf打开网卡配置文件,vtnet0为网卡标识符,您需要修改成实际的标识符。在文件中根据实际信息添加以下配置:

    说明:

    为区分单个 IPv6 与多个 IPv6 地址,您只需在同一网卡标识符的基础上重复添加地址信息即可。

    • 单 IPv6 地址:

      ipv6_ifconfig_vtnet0="<IPv6地址>"
      ipv6_defaultrouter="<IPv6网关>"

    • 多 IPv6 地址:

      ipv6_ifconfig_vtnet0="<IPv6地址1>"
      ipv6_ifconfig_vtnet0="<IPv6地址2>"
      ipv6_defaultrouter="<IPv6网关>"

  6. 运行 /etc/netstart restart 重启网络服务,使配置生效。

  7. 请参考 SSH 支持 IPv6 配置 开启 SSH 的 IPv6 功能。

附录

SSH 支持 IPv6 配置

注意:

如果需要使用 IPv6 地址远程连接,则需要开启 ssh 的 IPv6 支持。

  1. 执行如下命令,打开 /etc/ssh/文件夹下的sshd_config文件。

    vim /etc/ssh/sshd_config

  2. 按 “i” 切换至编辑模式,删除对AddressFamily any的注释(即删除前面的#),为 ssh 等应用程序开启 IPv6 监听。

  3. 按 “Esc”,输入 “:wq”,保存文件并返回。

  4. 执行如下命令,重新加载配置。

    service sshd reload

  5. 执行netstat -tupln命令,若出现以下报文,表示查 ssh 已成功监听 IPv6。

目录