文档中心 > 弹性公网 IPv6 > 快速入门 > Linux 云服务器配置 IPv6

Linux 云服务器配置 IPv6

最近更新时间:2020-08-20 10:39:27

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

工具配置

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 操作系统)重启云服务器,使上述配置生效。

config_ipv6 工具配置

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

使用限制

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

操作步骤

  1. 登录云服务器,在云服务器中直接执行如下命令下载 config_ipv6 工具。
    wget https://iso-1251783334.cos.ap-guangzhou.myqcloud.com/scripts/config_ipv6.sh
  2. 赋予执行权限后使用管理员权限执行如下命令:
    chmod +x ./config_ipv6.sh  
    ./config_ipv6.sh [网卡名称] 
    # 示例 1:./config_ipv6.sh eth0
    # 示例 2:./config_ipv6.sh eth1
  3. (此步骤仅适用于 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

手动配置

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 地址。

    # 若云服务器有多个网卡,请执行 dhclient -6 网卡名称,如 dhclient -6 eth0
    dhclient -6 或 dhclient -6 网卡名称
    ifconfig

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

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

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 地址。
    # 若云服务器有多个网卡,请执行 dhclient -6 网卡名称,如 dhclient -6 eth0
    dhclient -6 或 dhclient -6 网卡名称
    ifconfig
    若出现以下报文表示已成功获取到 IPv6 地址。
  10. 请参考 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 地址。
    # 若云服务器有多个网卡,请执行 dhclient -6 网卡名称,如 dhclient -6 eth0
    dhclient -6 或 dhclient -6 网卡名称
    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 功能。

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网关>
    2. 重启网络服务:运行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
                      match:
                      macaddress: 52:54:00:75:ce:c2
                      set-name: eth0
                  addresses:
                          - 2a00:7b80:454:2000::xxx/64
                      gateway6: 2a00:7b80:454::1   
    3. 执行如下命令,使配置生效。
      netplan apply
  7. 请参考 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=<子网前缀长度>
    2. 运行vi /etc/sysconfig/network/routes打开路由配置文件,添加配置项。

       default <IPv6网关> - -
    3. 重启网络服务:运行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=<子网前缀长度>
  2. 运行vi /etc/sysconfig/network/routes打开路由配置文件,添加配置项。

      default <IPv6网关> - -
  3. 重启网络服务:运行service network restartsystemctl restart networking

    1. 请参考 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
  1. 执行脚本,举例如下。
    sh ./test.sh vtnet0 2402:4e00:1000:4200:0:8f0c:d527:b985 64
  2. 请参考 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网关>"
  1. 运行/etc/netstart restart重启网络服务,使配置生效。
  2. 请参考 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。
目录