更新时间:2024-11-26 GMT+08:00

为多网卡Linux云服务器配置IPv4和IPv6策略路由(CentOS)

操作场景

本文档以CentOS 8.0 64bit为例,指导用户为双网卡Linux云服务器配置策略路由。

关于云服务器双网卡的背景知识及组网说明,请参见方案概述

Linux IPv4操作步骤 (CentOS)

  1. 收集配置策略路由需要的云服务器网卡地址等信息。

    具体操作请参见收集云服务器网络信息

    本示例中,云服务器的网络信息如表1所示。

    表1 Linux IPv4场景信息说明(CentOS)

    类型

    主网卡

    扩展网卡

    源端

    • 网卡地址:10.0.0.115
    • 子网网段:10.0.0.0/24
    • 子网网关:10.0.0.1
    • 网卡地址:10.0.1.183
    • 子网网段:10.0.1.0/24
    • 子网网关:10.0.1.1

    目的端

    网卡地址:10.0.2.12

    不涉及

  2. 登录源端云服务器。

    ECS有多种登录方法,具体请参见登录弹性云服务器

  3. 执行以下命令,检查源端云服务器主网卡和目的端云服务器通信情况。

    ping -I 源端云服务器主网卡地址 目的端云服务器地址

    命令示例:

    ping -I 10.0.0.115 10.0.2.12

    回显类似如下信息,表示可以正常通信。
    [root@ecs-resource ~]# ping -I 10.0.0.115 10.0.2.12
    PING 10.0.2.12 (10.0.2.12) from 10.0.0.115 : 56(84) bytes of data.
    64 bytes from 10.0.2.12: icmp_seq=1 ttl=64 time=0.775 ms
    64 bytes from 10.0.2.12: icmp_seq=2 ttl=64 time=0.268 ms
    64 bytes from 10.0.2.12: icmp_seq=3 ttl=64 time=0.220 ms
    64 bytes from 10.0.2.12: icmp_seq=4 ttl=64 time=0.167 ms
    ^C
    --- 10.0.2.12 ping statistics ---

    配置多网卡策略路由前,请务必确保源端主网卡和目的端通信正常。

  4. 执行以下命令,查看云服务器网卡名称。

    ifconfig

    回显类似如下信息,通过网卡地址查找对应的网卡名称,本示例中:
    • 10.0.0.115为主网卡地址,对应的名称为eth0。
    • 10.0.1.183为扩展网卡地址,对应的名称为eth1。
    [root@ecs-resource ~]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.0.0.115  netmask 255.255.255.0  broadcast 10.0.0.255
            inet6 fe80::f816:3eff:fe92:6e0e  prefixlen 64  scopeid 0x20<link>
            ether fa:16:3e:92:6e:0e  txqueuelen 1000  (Ethernet)
            RX packets 432288  bytes 135762012 (129.4 MiB)
            RX errors 0  dropped 0  overruns 0  frame 1655
            TX packets 423744  bytes 106716932 (101.7 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.0.1.183  netmask 255.255.255.0  broadcast 10.0.1.255
            inet6 fe80::f816:3eff:febf:5818  prefixlen 64  scopeid 0x20<link>
            ether fa:16:3e:bf:58:18  txqueuelen 1000  (Ethernet)
            RX packets 9028  bytes 536972 (524.3 KiB)
            RX errors 0  dropped 0  overruns 0  frame 1915
            TX packets 6290  bytes 272473 (266.0 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  5. 执行以下步骤,为云服务器配置临时路由。

    临时路由配置完后立即生效,当云服务器重启后临时路由会丢失,请执行完5配置完临时路由后,继续执行6配置永久路由,避免云服务器重启后网络中断。

    1. 依次执行以下命令,添加主网卡和扩展网卡的策略路由。
      • 主网卡

        ip route add default via 子网网关 dev 网卡名称 table 路由表名称

        ip route add 子网网段 dev 网卡名称 table 路由表名称

        ip rule add from 网卡地址 table 路由表名称

      • 扩展网卡

        ip route add default via 子网网关 dev 网卡名称 table 路由表名称

        ip route add 子网网段 dev 网卡名称 table 路由表名称

        ip rule add from 网卡地址 table 路由表名称

      参数说明如下:
      • 网卡名称:填写4中所查名称。
      • 路由表名称:自定义路由表名称,此处请使用数字命名路由表。
      • 其他网络信息:填写1中收集的地址。

      命令示例:

      • 主网卡

        ip route add default via 10.0.0.1 dev eth0 table 10

        ip route add 10.0.0.0/24 dev eth0 table 10

        ip rule add from 10.0.0.115 table 10

      • 扩展网卡

        ip route add default via 10.0.1.1 dev eth1 table 20

        ip route add 10.0.1.0/24 dev eth1 table 20

        ip rule add from 10.0.1.183 table 20

      如果云服务器有多张网卡,请依次为所有网卡添加策略路由。

    2. 依次执行以下命令,确认策略路由是否添加成功。

      ip rule

      ip route show table 主网卡路由表名称

      ip route show table 扩展网卡路由表名称

      其中,路由表名称为5.a中自定义的名称。

      命令示例:

      ip rule

      ip route show table 10

      ip route show table 20

      回显类似如下信息,表示策略路由添加成功。
      [root@ecs-resource ~]# ip rule
      0:      from all lookup local
      32764:  from 10.0.1.183 lookup 20
      32765:  from 10.0.0.115 lookup 10
      32766:  from all lookup main
      32767:  from all lookup default
      [root@ecs-resource ~]# ip route show table 10
      default via 10.0.0.1 dev eth0 
      10.0.0.0/24 dev eth0 scope link 
      [root@ecs-resource ~]# ip route show table 20
      default via 10.0.1.1 dev eth1 
      10.0.1.0/24 dev eth1 scope link 
    3. 执行以下命令,验证源端云服务器和目的端云服务器是否可以正常通信。

      ping -I 源端云服务器主网卡地址 目的端云服务器地址

      ping -I 源端云服务器扩展网卡地址 目的端云服务器地址

      命令示例:

      ping -I 10.0.0.115 10.0.2.12

      ping -I 10.0.1.183 10.0.2.12

      回显类似如下信息,两个网卡均可以和目的端正常通信,表示策略路由配置成功。

      [root@ecs-resource ~]# ping -I 10.0.0.115 10.0.2.12
      PING 10.0.2.12 (10.0.2.12) from 10.0.0.115 : 56(84) bytes of data.
      64 bytes from 10.0.2.12: icmp_seq=1 ttl=64 time=0.775 ms
      64 bytes from 10.0.2.12: icmp_seq=2 ttl=64 time=0.268 ms
      64 bytes from 10.0.2.12: icmp_seq=3 ttl=64 time=0.220 ms
      64 bytes from 10.0.2.12: icmp_seq=4 ttl=64 time=0.167 ms
      ^C
      --- 10.0.2.12 ping statistics ---
      4 packets transmitted, 4 received, 0% packet loss, time 102ms
      rtt min/avg/max/mdev = 0.167/0.357/0.775/0.244 ms
      [root@ecs-resource ~]# ping -I 10.0.1.183 10.0.2.12
      PING 10.0.2.12 (10.0.2.12) from 10.0.1.183 : 56(84) bytes of data.
      64 bytes from 10.0.2.12: icmp_seq=1 ttl=64 time=2.84 ms
      64 bytes from 10.0.2.12: icmp_seq=2 ttl=64 time=0.258 ms
      64 bytes from 10.0.2.12: icmp_seq=3 ttl=64 time=0.234 ms
      64 bytes from 10.0.2.12: icmp_seq=4 ttl=64 time=0.153 ms
      ^C
      --- 10.0.2.12 ping statistics ---
      4 packets transmitted, 4 received, 0% packet loss, time 92ms
      rtt min/avg/max/mdev = 0.153/0.871/2.840/1.137 ms
  6. 执行以下步骤,为云服务器配置永久路由。
    1. 执行以下命令,打开“/etc/rc.local”文件。

      vi /etc/rc.local

    2. i进入编辑模式。
    3. 在文件末尾添加以下配置。
      # check eth0 
      for ((x=0; x<30; x++)); do
        if (ping -I eth0 10.0.0.1 -c 1 -W 1 >/dev/null 2>&1); then
          break
        fi
      done
      
      # Add v4 routes for eth0
      ip route flush table 10
      ip route add default via 10.0.0.1 dev eth0 table 10
      ip route add 10.0.0.0/24 dev eth0 table 10
      ip rule add from 10.0.0.115 table 10
      
      # check eth1
      for ((x=0; x<30; x++)); do
        if (ping -I eth1 10.0.1.1 -c 1 -W 1 >/dev/null 2>&1); then
          break
        fi
      done
      
      # Add v4 routes for eth1
      ip route flush table 20
      ip route add default via 10.0.1.1 dev eth1 table 20
      ip route add 10.0.1.0/24 dev eth1 table 20
      ip rule add from 10.0.1.183 table 20
      # Add v4 routes for cloud-init
      ip rule add to 169.254.169.254 table main

      其中,参数说明如下:

      • check eth0:检查主网卡是否启动,通过ping主网卡eth0所在子网的IPv4网关来检查,此处10.0.0.1为eth0所在子网的IPv4网关,-c 1表示一次发送一个数据包,-W 1表示超时时间为1s,重试次数为30次。
      • Add v4 routes for eth0:主网卡的策略路由,和5.a配置保持一致。
      • check eth1:检查扩展网卡是否启动,通过ping扩展网卡eth1所在子网的IPv4网关来检查,此处10.0.1.1为eth1所在子网的IPv4网关,-c 1表示一次发送一个数据包,-W 1表示超时时间为1s,重试次数为30次。
      • Add v4 routes for eth1:扩展网卡的策略路由,和5.a配置保持一致。
      • Add v4 routes for cloud-init:配置cloud-init地址,请和本示例中的配置保持一致,不要修改。
    4. ESC退出,并输入:wq!保存配置。
    5. 执行以下命令,为“/etc/rc.local”文件添加执行权限。

      chmod +x /etc/rc.local

      如果您的操作系统为Redhat、EulerOS,执行完6.e后,还需要执行以下命令,权限才会添加成功。

      chmod +x /etc/rc.d/rc.local

    6. 执行以下命令,重启云服务器。

      reboot

      “/etc/rc.local”文件添加中添加的策略路由,需要重启云服务器后才会生效,此处请确保不影响业务再重启云服务器操作。

    7. 参考5.b~5.c,检查策略路由添加情况,并验证源端和目的通信是否正常。

Linux IPv6操作步骤 (CentOS)

  1. 收集配置策略路由需要的云服务器网卡地址等信息。

    具体操作请参见收集云服务器网络信息

    表2 Linux IPv6场景信息说明(CentOS)

    类型

    主网卡

    扩展网卡

    源端

    • IPv4网卡地址:10.0.0.102
    • IPv6网卡地址:2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9
    • 子网IPv6网段:2407:c080:1200:1dd8::/64
    • 子网IPv6网关:2407:c080:1200:1dd8::1
    • IPv4网卡地址:10.0.1.191
    • IPv6网卡地址:2407:c080:1200:1a9c:7cc0:63b5:8e65:4dd8
    • 子网IPv6网段:2407:c080:1200:1a9c::/64
    • 子网IPv6网关:2407:c080:1200:1a9c::1

    目的端

    • IPv4网卡地址:10.0.2.3
    • IPv6网卡地址:2407:c080:1200:1dd9:16a7:fe7a:8f71:7044

    不涉及

  2. 登录源端云服务器。

    ECS有多种登录方法,具体请参见登录弹性云服务器

  3. 执行以下步骤,确保云服务器已开启IPv6协议栈,并且正常获取到IPv6地址。

    对于源端和目的端的IPv6云服务器,均需要执行该操作,确保云服务器已获取到IPv6地址,否则云服务器无法通过IPv6地址进行通信。

    本章节云服务器使用的操作系统为CentOS 8.0 64bit公共镜像,以下针对该操作系统举例,更多操作系统配置指导,请参见动态获取IPv6地址的“Linux操作系统(手动配置启用IPv6)” 小节。

    1. 执行以下命令,检查云服务器是否可以获取到IPv6地址。

      ip addr

      回显类似如下信息,eth0和eth1为云服务器的网卡,只有一行inet6地址,为fe80开头,表示该云服务器已开启IPv6协议栈,但是未获取到IPv6地址,需要继续执行3.b~3.g,获取IPv6地址。
      [root@ecs-resource ~]# ip addr
      ...
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
          link/ether fa:16:3e:22:22:88 brd ff:ff:ff:ff:ff:ff
          inet 10.0.0.102/24 brd 10.0.0.255 scope global dynamic noprefixroute eth0
             valid_lft 107943256sec preferred_lft 107943256sec
          inet6 fe80::f816:3eff:fe22:2288/64 scope link 
             valid_lft forever preferred_lft forever
      3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
          link/ether fa:16:3e:22:23:e1 brd ff:ff:ff:ff:ff:ff
          inet 10.0.1.191/24 brd 10.0.1.255 scope global dynamic noprefixroute eth1
             valid_lft 107943256sec preferred_lft 107943256sec
          inet6 fe80::f816:3eff:fe22:23e1/64 scope link 
             valid_lft forever preferred_lft forever
    2. 执行以下命令,查看云服务器网卡名称。

      ifconfig

      回显类似如下信息,通过网卡地址查找对应的网卡名称,本示例中:
      • 10.0.0.102为主网卡地址,对应的名称为eth0。
      • 10.0.1.191为扩展网卡地址,对应的名称为eth1。
      [root@ecs-resource ~]# ifconfig
      eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 10.0.0.102  netmask 255.255.255.0  broadcast 10.0.0.255
              inet6 fe80::f816:3eff:fe22:2288  prefixlen 64  scopeid 0x20<link>
              ether fa:16:3e:22:22:88  txqueuelen 1000  (Ethernet)
              RX packets 135116  bytes 132321802 (126.1 MiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 60963  bytes 23201005 (22.1 MiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      
      eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 10.0.1.191  netmask 255.255.255.0  broadcast 10.0.1.255
              inet6 fe80::f816:3eff:fe22:23e1  prefixlen 64  scopeid 0x20<link>
              ether fa:16:3e:22:23:e1  txqueuelen 1000  (Ethernet)
              RX packets 885  bytes 97676 (95.3 KiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 47  bytes 4478 (4.3 KiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    3. 执行以下步骤,编辑主网卡的ifcfg文件。
      1. 执行以下命令,打开主网卡的ifcfg文件。

        vi /etc/sysconfig/network-scripts/ifcfg-主网卡名称

        其中,主网卡名称为3.b中查询到的名称。

        命令示例:

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

      2. i进入编辑模式。
      3. 在文件末尾添加以下配置。
        IPV6INIT="yes"
        DHCPV6C="yes"
      4. ESC退出,并输入:wq!保存配置。
    4. 执行以下步骤,编辑扩展网卡的ifcfg文件。
      1. 执行以下命令,打开扩展网卡的ifcfg文件。

        vi /etc/sysconfig/network-scripts/ifcfg-扩展网卡名称

        其中,扩展网卡名称为3.b中查询到的名称。

        命令示例:

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

      2. i进入编辑模式。
      3. 在文件末尾添加以下配置。
        IPV6INIT="yes"
        DHCPV6C="yes"
      4. ESC退出,并输入:wq!保存配置。
    5. 执行以下步骤,编辑“/etc/sysconfig/network”文件。
      1. 执行以下命令,打开“/etc/sysconfig/network”文件。

        vi /etc/sysconfig/network

      2. i进入编辑模式。
      3. 在文件末尾添加以下配置。
        NETWORKING_IPV6="yes"
      4. ESC退出,并输入:wq!保存配置。
    6. 执行以下命令,重启网络服务使配置生效。

      systemctl restart NetworkManager

    7. 执行以下命令,检查云服务器是否可以获取到IPv6地址。

      ip addr

      回显类似如下信息,eth0和eth1网卡有两行inet6地址,新增一行2407开头的地址,表示配置成功。
      [root@ecs-resource ~]# ip addr
      ...
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
          link/ether fa:16:3e:22:22:88 brd ff:ff:ff:ff:ff:ff
          inet 10.0.0.102/24 brd 10.0.0.255 scope global dynamic noprefixroute eth0
             valid_lft 107999994sec preferred_lft 107999994sec
          inet6 2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9/128 scope global dynamic noprefixroute 
             valid_lft 7195sec preferred_lft 7195sec
          inet6 fe80::f816:3eff:fe22:2288/64 scope link noprefixroute 
             valid_lft forever preferred_lft forever
      3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
          link/ether fa:16:3e:22:23:e1 brd ff:ff:ff:ff:ff:ff
          inet 10.0.1.191/24 brd 10.0.1.255 scope global dynamic noprefixroute eth1
             valid_lft 107999994sec preferred_lft 107999994sec
          inet6 2407:c080:1200:1a9c:7cc0:63b5:8e65:4dd8/128 scope global dynamic noprefixroute 
             valid_lft 7198sec preferred_lft 7198sec
          inet6 fe80::f816:3eff:fe22:23e1/64 scope link noprefixroute 
             valid_lft forever preferred_lft forever
    8. 登录目的端云服务器,参考3.a~3.g,配置目的云服务器获取IPv6地址。
  4. 登录源端云服务器,执行以下命令,检查源端云服务器主网卡和目的端云服务器通信情况。

    ping6 -I 源端云服务器主网卡地址 目的端云服务器地址

    命令示例:

    ping6 -I 2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044

    回显类似如下信息,表示可以正常通信。
    [root@ecs-resource ~]# ping6 -I 2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044
    PING 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044(2407:c080:1200:1dd9:16a7:fe7a:8f71:7044) from 2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9 : 56 data bytes
    64 bytes from 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044: icmp_seq=1 ttl=64 time=0.635 ms
    64 bytes from 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044: icmp_seq=2 ttl=64 time=0.320 ms
    64 bytes from 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044: icmp_seq=3 ttl=64 time=0.287 ms
    64 bytes from 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044: icmp_seq=4 ttl=64 time=0.193 ms
    ^C
    --- 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3074ms
    rtt min/avg/max/mdev = 0.193/0.358/0.635/0.167 ms

    配置多网卡策略路由前,请务必确保源端主网卡和目的端通信正常。

  5. 登录源端云服务器,执行以下步骤,为云服务器配置临时路由。

    临时路由配置完后立即生效,当云服务器重启后临时路由会丢失,请执行5配置完临时路由后,继续执行6配置永久路由,避免云服务器重启后网络中断。

    1. 依次执行以下命令,添加主网卡和扩展网卡的策略路由。
      • 主网卡

        ip -6 route add default via 子网网关 dev 网卡名称 table 路由表名称

        ip -6 route add 子网网段 dev 网卡名称 table 路由表名称

        ip -6 rule add from 网卡地址 table 路由表名称

      • 扩展网卡

        ip -6 route add default via 子网网关 dev 网卡名称 table 路由表名称

        ip -6 route add 子网网段 dev 网卡名称 table 路由表名称

        ip -6 rule add from 网卡地址 table 路由表名称

      参数说明如下:
      • 网卡名称:填写3.b中所查名称。
      • 路由表名称:自定义路由表名称,此处请使用数字命名路由表。
      • 其他网络信息:填写1中收集的地址。

      命令示例:

      • 主网卡

        ip -6 route add default via 2407:c080:1200:1dd8::1 dev eth0 table 10

        ip -6 route add 2407:c080:1200:1dd8::/64 dev eth0 table 10

        ip -6 rule add from 2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9 table 10

      • 扩展网卡

        ip -6 route add default via 2407:c080:1200:1a9c::1 dev eth1 table 20

        ip -6 route add 2407:c080:1200:1a9c::/64 dev eth1 table 20

        ip -6 rule add from 2407:c080:1200:1a9c:7cc0:63b5:8e65:4dd8 table 20

      如果云服务器有多张网卡,请依次为所有网卡添加策略路由。

    2. 依次执行以下命令,确认策略路由是否添加成功。

      ip -6 rule

      ip -6 route show table 主网卡路由表名称

      ip -6 route show table 扩展网卡路由表名称

      其中,路由表名称为5.a中自定义的名称。

      命令示例:

      ip -6 rule

      ip -6 route show table 10

      ip -6 route show table 20

      回显类似如下信息,表示策略路由添加成功。
      [root@ecs-resource ~]# ip -6 rule
      0:      from all lookup local
      32764:  from 2407:c080:1200:1a9c:7cc0:63b5:8e65:4dd8 lookup 20
      32765:  from 2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9 lookup 10
      32766:  from all lookup main
      [root@ecs-resource ~]# ip -6 route show table 10
      2407:c080:1200:1dd8::/64 dev eth0 metric 1024 pref medium
      default via 2407:c080:1200:1dd8::1 dev eth0 metric 1024 pref medium
      [root@ecs-resource ~]# ip -6 route show table 20
      2407:c080:1200:1a9c::/64 dev eth1 metric 1024 pref medium
      default via 2407:c080:1200:1a9c::1 dev eth1 metric 1024 pref medium
    3. 执行以下命令,验证源端云服务器和目的端云服务器是否可以正常通信。

      ping -6 -I 源端云服务器主网卡地址 目的端云服务器地址

      ping -6 -I 源端云服务器扩展网卡地址 目的端云服务器地址

      命令示例:

      ping -6 -I 2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044

      ping -6 -I 2407:c080:1200:1a9c:7cc0:63b5:8e65:4dd8 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044

      回显类似如下信息,两个网卡均可以和目的端正常通信,表示策略路由配置成功。
      [root@ecs-resource ~]# ping -6 -I 2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044
      PING 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044(2407:c080:1200:1dd9:16a7:fe7a:8f71:7044) from 2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9 : 56 data bytes
      64 bytes from 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044: icmp_seq=1 ttl=64 time=0.770 ms
      64 bytes from 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044: icmp_seq=2 ttl=64 time=0.295 ms
      64 bytes from 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044: icmp_seq=3 ttl=64 time=0.245 ms
      ^C
      --- 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044 ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 2080ms
      rtt min/avg/max/mdev = 0.245/0.436/0.770/0.237 ms
      [root@ecs-resource ~]# ping -6 -I 2407:c080:1200:1a9c:7cc0:63b5:8e65:4dd8 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044
      PING 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044(2407:c080:1200:1dd9:16a7:fe7a:8f71:7044) from 2407:c080:1200:1a9c:7cc0:63b5:8e65:4dd8 : 56 data bytes
      64 bytes from 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044: icmp_seq=1 ttl=64 time=0.922 ms
      64 bytes from 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044: icmp_seq=2 ttl=64 time=0.307 ms
      64 bytes from 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044: icmp_seq=3 ttl=64 time=0.174 ms
      ^C
      --- 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044 ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 2059ms
      rtt min/avg/max/mdev = 0.174/0.467/0.922/0.326 ms
  6. 执行以下步骤,为云服务器配置永久路由。
    1. 执行以下命令,打开“/etc/rc.local”文件。

      vi /etc/rc.local

    2. i进入编辑模式。
    3. 在文件末尾添加以下配置。
      # check eth0 
      for ((x=0; x<30; x++)); do
        if (ping6 -I eth0 2407:c080:1200:1dd8::1 -c 1 -W 1 >/dev/null 2>&1); then
          break
        fi
      done
      
      # Add v6 routes for eth0
      ip -6 route flush table 10
      ip -6 route add default via 2407:c080:1200:1dd8::1 dev eth0 table 10
      ip -6 route add 2407:c080:1200:1dd8::/64 dev eth0 table 10
      ip -6 rule add from 2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9 table 10
      
      # check eth1
      for ((x=0; x<30; x++)); do
        if (ping6 -I eth1 2407:c080:1200:1a9c::1 -c 1 -W 1 >/dev/null 2>&1); then
          break
        fi
      done
      
      # Add v6 routes for eth1
      ip -6 route flush table 20
      ip -6 route add default via 2407:c080:1200:1a9c::1 dev eth1 table 20
      ip -6 route add 2407:c080:1200:1a9c::/64 dev eth1 table 20
      ip -6 rule add from 2407:c080:1200:1a9c:7cc0:63b5:8e65:4dd8 table 20

      其中,参数说明如下:

      • check eth0:检查主网卡是否启动,通过ping主网卡eth0所在子网的IPv6网关来检查,此处2407:c080:1200:1dd8::1为eth0所在子网的IPv6网关,-c 1表示一次发送一个数据包,-W 1表示超时时间为1s,重试次数为30次。
      • Add v6 routes for eth0:主网卡的策略路由,和5.a配置保持一致。
      • check eth1:检查扩展网卡是否启动,通过ping扩展网卡eth1所在子网的IPv6网关来检查,此处2407:c080:1200:1a9c::1为eth1所在子网的IPv6网关,-c 1表示一次发送一个数据包,-W 1表示超时时间为1s,重试次数为30次。
      • Add v6 routes for eth1:扩展网卡的策略路由,和5.a配置保持一致。
    4. ESC退出,并输入:wq!保存配置。
    5. 执行以下命令,为“/etc/rc.local”文件添加执行权限。

      chmod +x /etc/rc.local

      如果您的操作系统为Redhat、EulerOS,执行完6.e后,还需要执行以下命令,权限才会添加成功。

      chmod +x /etc/rc.d/rc.local

    6. 执行以下命令,重启云服务器。

      reboot

      “/etc/rc.local”文件添加中添加的策略路由,需要重启云服务器后才会生效,此处请确保不影响业务再重启云服务器操作。

    7. 参考5.b~5.c,检查策略路由添加情况,并验证源端和目的通信是否正常。