更新时间:2025-12-30 GMT+08:00
分享

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

操作场景

本文档以Huawei Cloud EulerOS 2.0 标准版 64位为例,指导用户为双网卡Linux云服务器配置策略路由。

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

Linux IPv4操作步骤 (HCE)

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

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

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

    表1 Linux IPv4信息说明(HCE)

    类型

    主网卡

    扩展网卡

    源端

    • 网卡地址:10.0.0.125
    • 子网网段:10.0.0.0/24
    • 子网网关:10.0.0.1
    • 网卡地址:10.0.1.16
    • 子网网段:10.0.1.0/24
    • 子网网关:10.0.1.1

    目的端

    网卡地址:10.0.2.180

    不涉及

  2. 登录源端云服务器。

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

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

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

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

    命令示例:

    ping -I 10.0.0.125 10.0.2.180

    回显类似如下信息,表示可以正常通信。
    [root@ecs-s ~]# ping -I 10.0.1.125 10.0.3.180
    PING 10.0.3.180 (10.0.3.180) from 10.0.1.125 : 56(84) bytes of data.
    64 bytes from 10.0.3.180: icmp_seq=1 ttl=64 time=1.11 ms
    64 bytes from 10.0.3.180: icmp_seq=2 ttl=64 time=0.542 ms
    64 bytes from 10.0.3.180: icmp_seq=3 ttl=64 time=0.262 ms
    64 bytes from 10.0.3.188: icmp_seq=4 ttl=64 time=0.225 ms
    ^C
    -- 10.0.3.180 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3049ms
    rtt min/avg/max/mdev = 0.225/0.533/1.106/0.352 ms
  4. 执行以下命令,查看云服务器网卡名称。

    ip addr

    回显类似如下信息,通过网卡地址查找对应的网卡名称,本示例中:
    • 10.0.0.125为主网卡地址,对应的名称为eth0。
    • 10.0.1.16为扩展网卡地址,对应的名称为eth1。
    [root@ecs-s "l# ip addr
    ...
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether fa:16:3e:07:07:84 brd ff :ff :ff :ff :ff :ff
        altname enp0s3
        altname ens3
        inet 10.0.0.125/24 brd 10.0.0.255 scope global dynamic noprefixroute eth0
           valid 1ft 315359965sec preferred_lft 315359965sec
        inet6 fe80::f816:3eff:fe07:784/64 scope link
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER UP> mtu 1500 qdisc mq state UP group default qlen 1000
       link/ether fa:16:3e:07:08:17 brd ff :ff :ff :ff :ff :ff
       altname enp4s1
       inet 10.0.1.16/24 brd 10.0.1.255 scope global dynamic noprefixroute eth1
          valid_lft 315359965sec preferred_lft 315359965sec
       inet6 fe80::f816:3eff:fe07:817/64 scope link
          valid_lft forever preferred_lft forever
  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.125 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.16 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-s ~]# ip rule
      0:     from all lookup local
      32764: from 10.0.1.16 lookup 20
      32765: from 10.0.0.125 lookup 10
      32766: from all lookup main
      32767: from all lookup default
      [rootlecs-s ~# ip route show table 10
      default via 10.0.0.1 dev eth0
      10.0.0.0/24 dev eth0 scope link
      [root@ecs-s ~]# 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.125 10.0.2.180

      ping -I 10.0.1.16 10.0.2.180

      回显类似如下信息,两个网卡均可以和目的端正常通信,表示策略路由配置成功。
      [root@ecs-s ~1# ping -I 10.0.0.125 10.0.2.180
      PING 10.0.2.180 (10.0.2.180) from 10.0.0.125 : 56(84) bytes 0f data.
      64 bytes from 10.0.2.180: icmp_seq=1 ttl=64 time=1.12ms
      64 bytes from 10.0.2.180: icmp_seq=2 ttl=64 time=0.309ms
      64 bytes from 10.0.2.180: icmp_seq=3 ttl=64 time=0.342 ms
      ^C
      --10.0.2.180 ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 2039ms
      rtt min/avg/max/mdeu = 0.309/0.588/1.115/0.372ms
      [root@ecs-s ~]# ping -I 10.0.1.16 10.0.2.180
      PING 10.0.2.180 (10.0.2.180) from 10.0.1.16 : 56(84) bytes 0f data.
      64 bytes from 10.0.2.180: icmp_seq=1 ttl=64 time=1.50 ms
      64 bytes from 10.0.2.180: icmp_seq=2 ttl=64 time=0.384 ms
      64 bytes from 10.0.2.180: icmp_seq=3 ttl=64 time=0.369 ms
      ^C
      -- 10.0.2.180 ping statistics ---
      3 packets transmitted,3 received, 0% packet loss, time 2005ms
      rtt min/avg/max/mdeu = 0.369/0.749/1.495/0.522ms
  6. 执行以下步骤,为云服务器配置永久路由。
    1. 执行以下命令,为systemd服务创建一个新的“network-routes.service”文件。

      vi /etc/systemd/system/network-routes.service

    2. i进入编辑模式。
    3. 在文件末尾添加以下配置。
      [Unit]
      Description=Network Routes Configuration
      After=network.target
      
      [Service]
      Type=oneshot
      RemainAfterExit=yes
      ExecStart=/bin/bash -c 'for((x=0; x<10; x++)); do [[ $(ip addr show eth0 | grep -w 10.0.0.125 >/dev/null 2>&1 && echo 1) ]] && break; sleep 1; done; 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.125 table 10; for((x=0; x<10; x++)); do [[ $(ip addr show eth1 | grep -w 10.0.1.16 >/dev/null 2>&1 && echo 1) ]] && break; sleep 1; done; 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.16 table 20; ip rule add to 169.254.169.254 table main'
      
      [Install]
      WantedBy=multi-user.target

      其中,参数说明如下:

      • for循环:循环检查主网卡eth0或者扩展网卡eth1是否获取到IPv4地址(eth0网卡地址为10.0.0.125,eth1网卡地址为10.0.1.16),每秒检查一次,重试次数为10次。
      • ip route flush table 路由表名称:假如路由表有残留路由,使用该命令会清空指定路由表中残留的路由,避免影响本次配置新的路由。
      • 主网卡的策略路由,和5.a配置保持一致。
      • 扩展网卡的策略路由,和5.a配置保持一致。
      • ip rule add to 169.254.169.254 table main:配置cloud-init地址,请和本示例中的配置保持一致,不要修改。
    4. ESC退出,并输入:wq!保存配置。
    5. 执行以下命令,重新加载systemd配置,并启动服务。

      systemctl daemon-reload

      systemctl enable network-routes.service

      回显类似如下信息,表示启动成功。
      [root@ecs-s ~]# systemctl daemon-reload 
      [root@ecs-s ~]# systemctl enable network-routes.service
      Created symlink /etc/systemd/system/multi-user.target.wants/network-routes.service → /etc/systemd/system/network-routes.service.
    6. 执行以下命令,重启云服务器。

      reboot

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

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

Linux IPv6操作步骤 (HCE)

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

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

    表2 Linux IPv6信息说明(HCE)

    类型

    主网卡

    扩展网卡

    源端

    • 网卡IPv4地址:10.0.0.125
    • 网卡IPv6地址:2407:c080:802:221c:5e76:7761:8d54:4ebc
    • 子网IPv6网段:2407:c080:802:221c::/64
    • 子网IPv6网关:2407:c080:802:221c::1
    • 网卡IPv4地址:10.0.1.16
    • 网卡IPv6地址:2407:c080:802:221d:3be1:c05a:345c:4802
    • 子网IPv6网段:2407:c080:802:221d::/64
    • 子网IPv6网关:2407:c080:802:221d::1

    目的端

    • 网卡IPv4地址:10.0.2.180
    • 网卡IPv6地址:2407:c080:802:1744:5df4:f1d3:cb97:2eb3

    不涉及

  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-s ~]# ip addr
      ...
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
          link/ether fa:16:3e:c0:c0:3d brd ff:ff:ff:ff:ff:ff
          inet 10.0.0.125/24 brd 10.0.0.255 scope global dynamic noprefixroute eth0
             valid_lft 315359743sec preferred_lft 315359743sec
          inet6 fe80::f816:3eff:fec0:c03d/64 scope link 
             valid_lft forever preferred_lft forever
      3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
          link/ether fa:16:3e:c0:c1:d0 brd ff:ff:ff:ff:ff:ff
          inet 10.0.1.16/24 brd 10.0.1.255 scope global dynamic noprefixroute eth1
             valid_lft 315359743sec preferred_lft 315359743sec
          inet6 fe80::f816:3eff:fec0:c1d0/64 scope link 
             valid_lft forever preferred_lft forever
    2. 执行以下命令,查看云服务器网卡名称。

      ifconfig

      回显类似如下信息,通过网卡地址查找对应的网卡名称,本示例中:
      • 10.0.0.125为主网卡地址,对应的名称为eth0。
      • 10.0.1.16为扩展网卡地址,对应的名称为eth1。
      [root@ecs-s ~]# ifconfig
      eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 10.0.0.125  netmask 255.255.255.0  broadcast 10.0.0.255
              inet6 fe80::f816:3eff:fec0:c03d  prefixlen 64  scopeid 0x20<link>
              ether fa:16:3e:c0:c0:3d  txqueuelen 1000  (Ethernet)
              RX packets 94157  bytes 135947002 (129.6 MiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 9283  bytes 837900 (818.2 KiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      
      eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 10.0.1.16  netmask 255.255.255.0  broadcast 10.0.1.255
              inet6 fe80::f816:3eff:fec0:c1d0  prefixlen 64  scopeid 0x20<link>
              ether fa:16:3e:c0:c1:d0  txqueuelen 1000  (Ethernet)
              RX packets 6  bytes 1176 (1.1 KiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 6  bytes 768 (768.0 B)
              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-s ~]# ip addr
      ...
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
          link/ether fa:16:3e:c0:c0:3d brd ff:ff:ff:ff:ff:ff
          inet 10.0.0.125/24 brd 10.0.0.255 scope global dynamic noprefixroute eth0
             valid_lft 315359992sec preferred_lft 315359992sec
          inet6 2407:c080:802:221c:5e76:7761:8d54:4ebc/128 scope global dynamic noprefixroute 
             valid_lft 7192sec preferred_lft 7192sec
          inet6 fe80::f816:3eff:fec0:c03d/64 scope link noprefixroute 
             valid_lft forever preferred_lft forever
      3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
          link/ether fa:16:3e:c0:c1:d0 brd ff:ff:ff:ff:ff:ff
          inet 10.0.1.16/24 brd 10.0.1.255 scope global dynamic noprefixroute eth1
             valid_lft 315359992sec preferred_lft 315359992sec
          inet6 2407:c080:802:221d:3be1:c05a:345c:4802/128 scope global dynamic noprefixroute 
             valid_lft 7192sec preferred_lft 7192sec
          inet6 fe80::f816:3eff:fec0:c1d0/64 scope link noprefixroute 
             valid_lft forever preferred_lft forever
    8. 登录目的端云服务器,参考3.a~3.g,配置目的云服务器获取IPv6地址。
  4. 登录源端云服务器,执行以下命令,检查源端云服务器主网卡和目的端云服务器通信情况。

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

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

    命令示例:

    ping6 -I 2407:c080:802:221c:5e76:7761:8d54:4ebc 2407:c080:802:1744:5df4:f1d3:cb97:2eb3

    回显类似如下信息,表示可以正常通信。
    [root@ecs-s ~]# ping6 -I 2407:c080:802:221c:5e76:7761:8d54:4ebc 2407:c080:802:1744:5df4:f1d3:cb97:2eb3
    PING 2407:c080:802:1744:5df4:f1d3:cb97:2eb3(2407:c080:802:1744:5df4:f1d3:cb97:2eb3) from 2407:c080:802:221c:5e76:7761:8d54:4ebc : 56 data bytes
    64 bytes from 2407:c080:802:1744:5df4:f1d3:cb97:2eb3: icmp_seq=1 ttl=64 time=0.264 ms
    64 bytes from 2407:c080:802:1744:5df4:f1d3:cb97:2eb3: icmp_seq=2 ttl=64 time=0.180 ms
    64 bytes from 2407:c080:802:1744:5df4:f1d3:cb97:2eb3: icmp_seq=3 ttl=64 time=0.107 ms
    ^C
    --- 2407:c080:802:1744:5df4:f1d3:cb97:2eb3 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2038ms
    rtt min/avg/max/mdev = 0.107/0.183/0.264/0.064 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:802:221c::1 dev eth0 table 10

        ip -6 route add 2407:c080:802:221c::/64 dev eth0 table 10

        ip -6 rule add from 2407:c080:802:221c:5e76:7761:8d54:4ebc table 10

      • 扩展网卡

        ip -6 route add default via 2407:c080:802:221d::1 dev eth1 table 20

        ip -6 route add 2407:c080:802:221d::/64 dev eth1 table 20

        ip -6 rule add from 2407:c080:802:221d:3be1:c05a:345c:4802 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-s ~]# ip -6 rule
      0:      from all lookup local
      32764:  from 2407:c080:802:221d:3be1:c05a:345c:4802 lookup 20
      32765:  from 2407:c080:802:221c:5e76:7761:8d54:4ebc lookup 10
      32766:  from all lookup main
      [root@ecs-s ~]# ip -6 route show table 10
      2407:c080:802:221c::/64 dev eth0 metric 1024 pref medium
      default via 2407:c080:802:221c::1 dev eth0 metric 1024 pref medium
      [root@ecs-s ~]# ip -6 route show table 20
      2407:c080:802:221d::/64 dev eth1 metric 1024 pref medium
      default via 2407:c080:802:221d::1 dev eth1 metric 1024 pref medium
    3. 执行以下命令,验证源端云服务器和目的端云服务器是否可以正常通信。

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

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

      命令示例:

      ping6 -I 2407:c080:802:221c:5e76:7761:8d54:4ebc 2407:c080:802:1744:5df4:f1d3:cb97:2eb3

      ping6 -I 2407:c080:802:221d:3be1:c05a:345c:4802 2407:c080:802:1744:5df4:f1d3:cb97:2eb3

      回显类似如下信息,两个网卡均可以和目的端正常通信,表示策略路由配置成功。
      [root@ecs-s ~]# ping6 -I 2407:c080:802:221c:5e76:7761:8d54:4ebc 2407:c080:802:1744:5df4:f1d3:cb97:2eb3
      PING 2407:c080:802:1744:5df4:f1d3:cb97:2eb3(2407:c080:802:1744:5df4:f1d3:cb97:2eb3) from 2407:c080:802:221c:5e76:7761:8d54:4ebc : 56 data bytes
      64 bytes from 2407:c080:802:1744:5df4:f1d3:cb97:2eb3: icmp_seq=1 ttl=64 time=0.316 ms
      64 bytes from 2407:c080:802:1744:5df4:f1d3:cb97:2eb3: icmp_seq=2 ttl=64 time=0.190 ms
      64 bytes from 2407:c080:802:1744:5df4:f1d3:cb97:2eb3: icmp_seq=3 ttl=64 time=0.114 ms
      ^C
      --- 2407:c080:802:1744:5df4:f1d3:cb97:2eb3 ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 2082ms
      rtt min/avg/max/mdev = 0.114/0.206/0.316/0.083 ms
      [root@ecs-s ~]# ping6 -I 2407:c080:802:221d:3be1:c05a:345c:4802 2407:c080:802:1744:5df4:f1d3:cb97:2eb3
      PING 2407:c080:802:1744:5df4:f1d3:cb97:2eb3(2407:c080:802:1744:5df4:f1d3:cb97:2eb3) from 2407:c080:802:221d:3be1:c05a:345c:4802 : 56 data bytes
      64 bytes from 2407:c080:802:1744:5df4:f1d3:cb97:2eb3: icmp_seq=1 ttl=64 time=1.00 ms
      64 bytes from 2407:c080:802:1744:5df4:f1d3:cb97:2eb3: icmp_seq=2 ttl=64 time=0.161 ms
      64 bytes from 2407:c080:802:1744:5df4:f1d3:cb97:2eb3: icmp_seq=3 ttl=64 time=0.092 ms
      ^C
      --- 2407:c080:802:1744:5df4:f1d3:cb97:2eb3 ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 2032ms
      rtt min/avg/max/mdev = 0.092/0.417/1.000/0.412 ms
  6. 执行以下步骤,为云服务器配置永久路由。
    1. 执行以下命令,为systemd服务创建一个新的文件“network-routes6.service”。

      vi /etc/systemd/system/network-routes6.service

    2. i进入编辑模式。
    3. 在文件末尾添加以下配置。
      [Unit]
      Description=Network Routes Configuration
      After=network.target
      
      [Service]
      Type=oneshot
      RemainAfterExit=yes
      
      ExecStart=/bin/bash -c 'for((x=0; x<10; x++)); do [[ $(ip addr show eth0 | grep -w 2407:c080:802:221c:5e76:7761:8d54:4ebc >/dev/null 2>&1 && echo 1) ]] && break; sleep 1; done; ip route flush table 10; ip -6 route add default via 2407:c080:802:221c::1 dev eth0 table 10; ip -6 route add 2407:c080:802:221c::/64 dev eth0 table 10; ip -6 rule add from 2407:c080:802:221c:5e76:7761:8d54:4ebc table 10; for((x=0; x<10; x++)); do [[ $(ip addr show eth1 | grep -w 2407:c080:802:221d:3be1:c05a:345c:4802 >/dev/null 2>&1 && echo 1) ]] && break; sleep 1; done; ip route flush table 20; ip -6 route add default via 2407:c080:802:221d::1 dev eth1 table 20; ip -6 route add 2407:c080:802:221d::/64 dev eth1 table 20; ip -6 rule add from 2407:c080:802:221d:3be1:c05a:345c:4802 table 20'
      
      [Install]
      WantedBy=multi-user.target

      其中,参数说明如下:

      • for循环:检查主网卡eth0或者扩展网卡eth1是否获取到IPv6地址(eth0网卡IPv6地址为2407:c080:802:221c:5e76:7761:8d54:4ebc,eth1网卡IPv6地址为2407:c080:802:221d:3be1:c05a:345c:4802),间隔时间为1s,重试次数为10次。
      • ip route flush table 路由表名称:假如路由表有残留路由,使用该命令会清空指定路由表中残留的路由,避免影响本次配置新的路由。
      • 主网卡的策略路由,和5.a配置保持一致。
      • 扩展网卡的策略路由,和5.a配置保持一致。
    4. ESC退出,并输入:wq!保存配置。
    5. 执行以下命令,重新加载systemd配置,并启动服务。

      systemctl daemon-reload

      systemctl enable network-routes6.service

      回显类似如下信息,表示启动成功。
      [root@ecs-s ~]# systemctl daemon-reload
      [root@ecs-s ~]# systemctl enable network-routes6.service
      Created symlink /etc/systemd/system/multi-user.target.wants/network-routes6.service → /etc/systemd/system/network-routes6.service.
    6. 执行以下命令,重启云服务器。

      reboot

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

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

相关文档