# 手动为多网卡Linux云服务器配置IPv4和IPv6策略路由（Ubuntu）
#### 操作场景
本文档以Ubuntu 22.04 server 64bit为例，为指导您为多网卡的云服务器配置策略路由。
- IPv4：若需实现多网卡云服务器间的IPv4通信，需要配置IPv4路由，请执行[Linux IPv4操作步骤 (Ubuntu)]。
- IPv6：若需实现多网卡云服务器间的IPv6通信，需要配置IPv6路由，请执行[Linux IPv6操作步骤 (Ubuntu)]。
- IPv4/IPv6双栈：若需实现多网卡间的IPv4和IPv6通信，需要同时配置IPv4和IPv6路由，请依次执行[Linux IPv4操作步骤 (Ubuntu)]和[Linux IPv6操作步骤 (Ubuntu)]。
关于云服务器双网卡的背景知识及组网说明，请参见[方案概述](https://support.huaweicloud.com/usermanual-vpc/vpc_nic_0014.html#vpc_nic_0014)。
 #### Linux IPv4操作步骤 (Ubuntu)
1. 收集配置策略路由需要的云服务器网卡地址等信息。
   具体操作请参见[收集云服务器网络信息](https://support.huaweicloud.com/usermanual-vpc/vpc_nic_0015.html#vpc_nic_0015)。
   本示例中，云服务器的网络信息如[表1]所示。
    表1Linux IPv4信息说明（Ubuntu） 
   | 类型   | 主网卡                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 扩展网卡                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   |:---|:---|:---|
   | 源端  | - 网卡IPv4地址：10.0.0.138  - 子网IPv4网段：10.0.0.0/24  - 子网IPv4网关：10.0.0.1   | - 网卡IPv4地址：10.0.1.25  - 子网IPv4网段：10.0.1.0/24  - 子网IPv4网关：10.0.1.1   |
   | 目的端 | 网卡IPv4地址：10.0.2.146                                                                                                                                                                                                                                                                                                                                                                                                                                  | 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      
   
2. 登录源端云服务器。 ECS有多种登录方法，具体请参见[登录弹性云服务器](https://support.huaweicloud.com/ecs_faq/ecs_faq_0632.html)。
   
3. 执行以下命令，检查源端云服务器主网卡和目的端云服务器通信情况。 **配置多网卡策略路由前，请务必确保源端主网卡和目的端通信正常。**
   **ping -I** *源端云服务器主网卡地址* *目的端云服务器地址*
   命令示例：
   **ping -I 10.0.0.138 10.0.2.146**
   回显类似如下信息，表示可以正常通信。
   ```
   root@ecs-s:~# ping -I 10.0.0.138 10.0.2.146
   PING 10.0.2.146 (10.0.2.146) from 10.0.0.138 : 56(84) bytes of data.
   64 bytes from 10.0.2.146: icmp_seq=1 ttl=64 time=0.247 ms
   64 bytes from 10.0.2.146: icmp_seq=2 ttl=64 time=0.194 ms
   64 bytes from 10.0.2.146: icmp_seq=3 ttl=64 time=0.190 ms
   ^C
   --- 10.0.2.146 ping statistics ---
   3 packets transmitted, 3 received, 0% packet loss, time 2049ms
   rtt min/avg/max/mdev = 0.190/0.210/0.247/0.025 ms
   ```
   
4. 执行以下命令，查看云服务器网卡名称。
   **ip addr**
   回显类似如下信息，通过网卡地址查找对应的网卡名称，本示例中：
   - 10.0.0.138为主网卡地址，对应的名称为eth0。
   
   - 10.0.1.25为扩展网卡地址，对应的名称为eth1。
   
   
   ```
   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:22:22:ac brd ff:ff:ff:ff:ff:ff
       altname enp0s3
       altname ens3
       inet 10.0.0.138/24 brd 10.0.0.255 scope global dynamic noprefixroute eth0
          valid_lft 107999167sec preferred_lft 107999167sec
       inet6 fe80::f816:3eff:fe22:22ac/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:22:23:3b brd ff:ff:ff:ff:ff:ff
       altname enp4s1
       inet 10.0.1.25/24 brd 10.0.1.255 scope global dynamic noprefixroute eth1
          valid_lft 107999167sec preferred_lft 107999167sec
       inet6 fe80::f816:3eff:fe22:233b/64 scope link 
          valid_lft forever preferred_lft forever
   ```
   
5. 执行以下步骤，为云服务器配置临时路由。
   ![](https://support.huaweicloud.com/usermanual-vpc/public_sys-resources/caution_3.0-zh-cn.png)
   临时路由配置完后立即生效，当云服务器重启后临时路由会丢失，请执行[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.138 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.25 table 20**
        
      
      
      ![](https://support.huaweicloud.com/usermanual-vpc/public_sys-resources/note_3.0-zh-cn.png)
      如果云服务器有多张网卡，请依次为所有网卡添加策略路由。
      
   
   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.25 lookup 20
      32765:  from 10.0.0.138 lookup 10
      32766:  from all lookup main
      32767:  from all lookup default
      root@ecs-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.138 10.0.2.146**
      **ping -I 10.0.1.25 10.0.2.146**
      回显类似如下信息，两个网卡均可以和目的端正常通信，表示策略路由配置成功。
      ```
      root@ecs-s:~# ping -I 10.0.0.138 10.0.2.146
      PING 10.0.2.146 (10.0.2.146) from 10.0.0.138 : 56(84) bytes of data.
      64 bytes from 10.0.2.146: icmp_seq=1 ttl=64 time=0.258 ms
      64 bytes from 10.0.2.146: icmp_seq=2 ttl=64 time=0.242 ms
      64 bytes from 10.0.2.146: icmp_seq=3 ttl=64 time=0.165 ms
      ^C
      --- 10.0.2.146 ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 2039ms
      rtt min/avg/max/mdev = 0.165/0.221/0.258/0.040 ms
      root@ecs-s:~# ping -I 10.0.1.25 10.0.2.146
      PING 10.0.2.146 (10.0.2.146) from 10.0.1.25 : 56(84) bytes of data.
      64 bytes from 10.0.2.146: icmp_seq=1 ttl=64 time=0.498 ms
      64 bytes from 10.0.2.146: icmp_seq=2 ttl=64 time=0.427 ms
      64 bytes from 10.0.2.146: icmp_seq=3 ttl=64 time=0.185 ms
      ^C
      --- 10.0.2.146 ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 2031ms
      rtt min/avg/max/mdev = 0.185/0.370/0.498/0.133 ms
      ```
      
    
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.138 >/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.138 table 10; for((x=0; x<10; x++)); do [[ $(ip addr show eth1 | grep -w 10.0.1.25 >/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.25 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.138，eth1网卡地址为10.0.1.25），每秒检查一次，重试次数为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
      ![](https://support.huaweicloud.com/usermanual-vpc/public_sys-resources/caution_3.0-zh-cn.png)
      "network-routes.service"文件中添加的策略路由，需要重启云服务器后才会生效，此处请确保不影响业务再重启云服务器操作。
      
   
   7. 参考[5.b]\~[5.c]，检查策略路由添加情况，并验证源端和目的通信是否正常。
    
 
 #### Linux IPv6操作步骤 (Ubuntu)
1. 收集配置策略路由需要的云服务器网卡地址等信息。
   具体操作请参见[收集云服务器网络信息](https://support.huaweicloud.com/usermanual-vpc/vpc_nic_0015.html#vpc_nic_0015)。
   本示例中，云服务器的网络信息如[表2]所示。
    表2Linux IPv6信息说明（Ubuntu） 
   | 类型 | 主网卡                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 扩展网卡                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   |:---|:---|:---|
   | 源端   | - 网卡IPv4地址：10.0.0.138  - 网卡IPv6地址：2407:c080:1200:1dd8:1473:49db:22d7:13c7  - 子网IPv6网段：2407:c080:1200:1dd8::/64  - 子网IPv6网关：2407:c080:1200:1dd8::1   | - 网卡IPv4地址：10.0.1.25  - 网卡IPv6地址：2407:c080:1200:1a9c:691e:fffe:7e22:12c4  - 子网IPv6网段：2407:c080:1200:1a9c::/64  - 子网IPv6网关：2407:c080:1200:1a9c::1   |
   | 目的端   | - 网卡IPv4地址：10.0.2.146  - 网卡IPv6地址：2407:c080:1200:1dd9:f5e1:94d1:2822:dede                                                                                                                                                                                                                                                                                                                         | 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
      
   
2. 登录源端云服务器。 ECS有多种登录方法，具体请参见[登录弹性云服务器](https://support.huaweicloud.com/ecs_faq/ecs_faq_0632.html)。
   
3. 执行以下步骤，确保云服务器已开启IPv6协议栈，并且正常获取到IPv6地址。
   ![](https://support.huaweicloud.com/usermanual-vpc/public_sys-resources/caution_3.0-zh-cn.png)
   对于源端和目的端的IPv6云服务器，均需要执行该操作，确保云服务器已获取到IPv6地址，否则云服务器无法通过IPv6地址进行通信。
   本章节云服务器使用的操作系统为Ubuntu 22.04 server 64bit公共镜像，以下针对该操作系统举例，更多操作系统配置指导，请参见[动态获取IPv6地址](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0508.html#ecs_03_0508__zh-cn_topic_0129883696_section7426172116710)的"Linux操作系统（手动配置启用IPv6）" 小节。
   1. 执行以下命令，检查云服务器是否可以获取到IPv6地址。
      ip addr
      回显类似如下信息，eth0和eth1为云服务器的网卡，只有一行inet6地址，为fe80开头，表示该云服务器已开启IPv6协议栈，但是未获取到IPv6地址，需要继续执行[3.b]\~[3.h]，获取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:22:22:ac brd ff:ff:ff:ff:ff:ff
          altname enp0s3
          altname ens3
          inet 10.0.0.138/24 brd 10.0.0.255 scope global dynamic noprefixroute eth0
             valid_lft 107999781sec preferred_lft 107999781sec
          inet6 fe80::f816:3eff:fe22:22ac/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:22:23:3b brd ff:ff:ff:ff:ff:ff
          altname enp4s1
          inet 10.0.1.25/24 brd 10.0.1.255 scope global dynamic noprefixroute eth1
             valid_lft 107999781sec preferred_lft 107999781sec
          inet6 fe80::f816:3eff:fe22:233b/64 scope link 
             valid_lft forever preferred_lft forever
      ```
      
   
   2. 执行以下命令，查看云服务器网卡名称。
      ifconfig
      回显类似如下信息，通过网卡地址查找对应的网卡名称，本示例中：
      - 10.0.0.138为主网卡地址，对应的名称为eth0。
      
      - 10.0.1.25为扩展网卡地址，对应的名称为eth1。
      
      
      ```
      root@ecs-s:~# ifconfig
      eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 10.0.0.138  netmask 255.255.255.0  broadcast 10.0.0.255
              inet6 fe80::f816:3eff:fe22:22ac  prefixlen 64  scopeid 0x20<link>
              ether fa:16:3e:22:22:ac  txqueuelen 1000  (Ethernet)
              RX packets 863  bytes 269089 (269.0 KB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 1117  bytes 359807 (359.8 KB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 10.0.1.25  netmask 255.255.255.0  broadcast 10.0.1.255
              inet6 fe80::f816:3eff:fe22:233b  prefixlen 64  scopeid 0x20<link>
              ether fa:16:3e:22:23:3b  txqueuelen 1000  (Ethernet)
              RX packets 10  bytes 1358 (1.3 KB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 10  bytes 973 (973.0 B)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      ...
      ```
      
   
   3. 执行以下步骤，配置"01-netcfg.yaml"文件。
      1. 执行以下命令，进入"/etc/netplan/"目录。 **cd /etc/netplan**
         
      
      2. 执行以下命令，打开"01-netcfg.yaml"文件。 **vi 01-netcfg.yaml**
         
      
      3. 按i进入编辑模式。
      
      4. 按照以下示例，分别在待配置的网卡下添加内容**dhcp6: true** ，注意新添加内容和已有内容格式保持统一。
         本示例中，[3.b]中查询到的主网卡名称为eth0、扩展网卡名称为eth1。
         ```
         network:
             version: 2
             renderer: NetworkManager
             ethernets:
                 eth0:
                     dhcp4: true
                     dhcp6: true
                 eth1:
                     dhcp4: true
                     dhcp6: true
                 eth2:
                     dhcp4: true
                 eth3:
                     dhcp4: true
                 eth4:
                     dhcp4: true
         ```
         
      
      5. 按ESC退出，并输入:wq!保存配置。
       
   
   4. 执行以下命令，修改"01-netcfg.yaml"文件权限，确保只有文件所有者拥有读写的权限。 **chmod 600 /etc/netplan/01-netcfg.yaml**
      **chown root:root /etc/netplan/01-netcfg.yaml**
      
   
   5. 执行以下命令，使配置修改生效。 **netplan apply**
      
   
   6. 执行以下步骤，配置"NetworkManager.conf"文件。
      1. 执行以下命令，打开"NetworkManager.conf"文件。 **vi /etc/NetworkManager/NetworkManager.conf**
         
      
      2. 按i进入编辑模式。
      
      3. 按照以下示例，在文件中添加内容**dhcp=dhclient** ，注意新添加内容和已有内容格式保持统一。
         ```
         [main]
         plugins=ifupdown,keyfile
         dhcp=dhclient
         [ifupdown]
         managed=true
         [device]
         wifi.scan-rand-mac-address=no
         ```
         
      
      4. 按ESC退出，并输入:wq!保存配置。
       
   
   7. 执行以下命令，重启网络服务使配置生效。 systemctl restart NetworkManager
      
   
   8. 执行以下命令，检查云服务器是否可以获取到IPv6地址。
      ip addr
      回显类似如下信息，eth0和eth1网卡有两行inet6地址，新增一行2407开头的地址，表示配置成功。
      ```
      root@ecs-s:/etc/netplan# ip addr
      ...
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
          link/ether fa:16:3e:22:22:ac brd ff:ff:ff:ff:ff:ff
          altname enp0s3
          altname ens3
          inet 10.0.0.138/24 brd 10.0.0.255 scope global dynamic noprefixroute eth0
             valid_lft 107999982sec preferred_lft 107999982sec
          inet6 2407:c080:1200:1dd8:1473:49db:22d7:13c7/128 scope global dynamic noprefixroute 
             valid_lft 7182sec preferred_lft 7182sec
          inet6 fe80::f816:3eff:fe22:22ac/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:22:23:3b brd ff:ff:ff:ff:ff:ff
          altname enp4s1
          inet 10.0.1.25/24 brd 10.0.1.255 scope global dynamic noprefixroute eth1
             valid_lft 107999982sec preferred_lft 107999982sec
          inet6 2407:c080:1200:1a9c:691e:fffe:7e22:12c4/128 scope global dynamic noprefixroute 
             valid_lft 7182sec preferred_lft 7182sec
          inet6 fe80::f816:3eff:fe22:233b/64 scope link noprefixroute 
             valid_lft forever preferred_lft forever
      ```
      
   
   9. 登录目的端云服务器，参考[3.a]\~[3.h]，配置目的云服务器获取IPv6地址。
      回显类似如下信息，eth0有两行inet6地址，新增一行2407开头的地址，表示目的云服务器已成功获取IPv6地址。
      ```
      root@ecs-d:/etc/netplan# ip addr
      ...
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
          link/ether fa:16:3e:22:24:b4 brd ff:ff:ff:ff:ff:ff
          altname enp0s3
          altname ens3
          inet 10.0.2.146/24 brd 10.0.2.255 scope global dynamic noprefixroute eth0
             valid_lft 107999994sec preferred_lft 107999994sec
          inet6 2407:c080:1200:1dd9:f5e1:94d1:2822:dede/128 scope global dynamic noprefixroute 
             valid_lft 7195sec preferred_lft 7195sec
          inet6 fe80::f816:3eff:fe22:24b4/64 scope link noprefixroute 
             valid_lft forever preferred_lft forever
      ```
      
    
4. 登录源端云服务器，执行以下命令，检查源端云服务器主网卡和目的端云服务器通信情况。 **配置多网卡策略路由前，请务必确保源端主网卡和目的端通信正常。**
   **ping6 -I** *源端云服务器主网卡地址* *目的端云服务器地址*
   命令示例：
   **ping6 -I 2407:c080:1200:1dd8:1473:49db:22d7:13c7 2407:c080:1200:1dd9:f5e1:94d1:2822:dede**
   回显类似如下信息，表示可以正常通信。
   ```
   root@ecs-s:/etc/netplan# ping6 -I 2407:c080:1200:1dd8:1473:49db:22d7:13c7 2407:c080:1200:1dd9:f5e1:94d1:2822:dede
   PING 2407:c080:1200:1dd9:f5e1:94d1:2822:dede(2407:c080:1200:1dd9:f5e1:94d1:2822:dede) from 2407:c080:1200:1dd8:1473:49db:22d7:13c7 : 56 data bytes
   64 bytes from 2407:c080:1200:1dd9:f5e1:94d1:2822:dede: icmp_seq=1 ttl=64 time=0.244 ms
   64 bytes from 2407:c080:1200:1dd9:f5e1:94d1:2822:dede: icmp_seq=2 ttl=64 time=0.212 ms
   64 bytes from 2407:c080:1200:1dd9:f5e1:94d1:2822:dede: icmp_seq=3 ttl=64 time=0.169 ms
   ^C
   --- 2407:c080:1200:1dd9:f5e1:94d1:2822:dede ping statistics ---
   3 packets transmitted, 3 received, 0% packet loss, time 2033ms
   rtt min/avg/max/mdev = 0.169/0.208/0.244/0.030 ms
   ```
   
5. 登录源端云服务器，执行以下步骤，为云服务器配置临时路由。
   ![](https://support.huaweicloud.com/usermanual-vpc/public_sys-resources/caution_3.0-zh-cn.png)
   临时路由配置完后立即生效，当云服务器重启后临时路由会丢失，请执行[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:1473:49db:22d7:13c7 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:691e:fffe:7e22:12c4 table 20**
        
      
      
      ![](https://support.huaweicloud.com/usermanual-vpc/public_sys-resources/note_3.0-zh-cn.png)
      如果云服务器有多张网卡，请依次为所有网卡添加策略路由。
      
   
   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:/etc/netplan# ip -6 rule
      0:      from all lookup local
      32764:  from 2407:c080:1200:1a9c:691e:fffe:7e22:12c4 lookup 20
      32765:  from 2407:c080:1200:1dd8:1473:49db:22d7:13c7 lookup 10
      32766:  from all lookup main
      root@ecs-s:/etc/netplan# 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-s:/etc/netplan# 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** *源端云服务器扩展网卡地址 目的端云服务器地址*
      命令示例：
      **ping6 -I 2407:c080:1200:1dd8:1473:49db:22d7:13c7 2407:c080:1200:1dd9:f5e1:94d1:2822:dede**
      **ping6 -I 2407:c080:1200:1a9c:691e:fffe:7e22:12c4 2407:c080:1200:1dd9:f5e1:94d1:2822:dede**
      回显类似如下信息，两个网卡均可以和目的端正常通信，表示策略路由配置成功。
      ```
      root@ecs-s:/etc/netplan# ping6 -I 2407:c080:1200:1dd8:1473:49db:22d7:13c7 2407:c080:1200:1dd9:f5e1:94d1:2822:dede
      PING 2407:c080:1200:1dd9:f5e1:94d1:2822:dede(2407:c080:1200:1dd9:f5e1:94d1:2822:dede) from 2407:c080:1200:1dd8:1473:49db:22d7:13c7 : 56 data bytes
      64 bytes from 2407:c080:1200:1dd9:f5e1:94d1:2822:dede: icmp_seq=1 ttl=64 time=0.260 ms
      64 bytes from 2407:c080:1200:1dd9:f5e1:94d1:2822:dede: icmp_seq=2 ttl=64 time=0.248 ms
      64 bytes from 2407:c080:1200:1dd9:f5e1:94d1:2822:dede: icmp_seq=3 ttl=64 time=0.165 ms
      ^C
      --- 2407:c080:1200:1dd9:f5e1:94d1:2822:dede ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 2043ms
      rtt min/avg/max/mdev = 0.165/0.224/0.260/0.042 ms
      root@ecs-s:/etc/netplan# ping6 -I 2407:c080:1200:1a9c:691e:fffe:7e22:12c4 2407:c080:1200:1dd9:f5e1:94d1:2822:dede
      PING 2407:c080:1200:1dd9:f5e1:94d1:2822:dede(2407:c080:1200:1dd9:f5e1:94d1:2822:dede) from 2407:c080:1200:1a9c:691e:fffe:7e22:12c4 : 56 data bytes
      64 bytes from 2407:c080:1200:1dd9:f5e1:94d1:2822:dede: icmp_seq=1 ttl=64 time=0.592 ms
      64 bytes from 2407:c080:1200:1dd9:f5e1:94d1:2822:dede: icmp_seq=2 ttl=64 time=0.208 ms
      64 bytes from 2407:c080:1200:1dd9:f5e1:94d1:2822:dede: icmp_seq=3 ttl=64 time=0.162 ms
      ^C
      --- 2407:c080:1200:1dd9:f5e1:94d1:2822:dede ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 2031ms
      rtt min/avg/max/mdev = 0.162/0.320/0.592/0.192 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:1200:1dd8:1473:49db:22d7:13c7 >/dev/null 2>&1 && echo 1) ]] && break; sleep 1; done; ip 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:1473:49db:22d7:13c7 table 10; for((x=0; x<10; x++)); do [[ $(ip addr show eth1 | grep -w 2407:c080:1200:1a9c:691e:fffe:7e22:12c4 >/dev/null 2>&1 && echo 1) ]] && break; sleep 1; done; ip 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:691e:fffe:7e22:12c4 table 20'
      [Install]
      WantedBy=multi-user.target
      ```
      其中，参数说明如下：
      - for循环：检查主网卡eth0或者扩展网卡eth1是否获取到IPv6地址（eth0网卡IPv6地址为2407:c080:1200:1dd8:1473:49db:22d7:13c7，eth1网卡IPv6地址为2407:c080:1200:1a9c:691e:fffe:7e22:12c4），间隔时间为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:/etc/netplan# systemctl daemon-reload
      root@ecs-s:/etc/netplan# 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
      ![](https://support.huaweicloud.com/usermanual-vpc/public_sys-resources/caution_3.0-zh-cn.png)
      "network-routes6.service"文件中添加的策略路由，需要重启云服务器后才会生效，此处请确保不影响业务再重启云服务器操作。
      
   
   7. 参考[5.b]\~[5.c]，检查策略路由添加情况，并验证源端和目的通信是否正常。
    
 
