当弹性云主机拥有多张网卡时,主网卡默认可以和外部正常通信,辅助网卡无法和外部正常通信,当需要辅助网卡与外部通信时,需要在云主机内部为辅助网卡配置策略路由。
本文档以配置双网卡弹性云主机的策略路由为例,具体说明如下:
源端弹性云主机主网卡和辅助网卡位于同一个VPC内的不同子网。
源端弹性云主机和目的端弹性云主机位于同一个VPC内的不同子网,因此网络互通,即配置策略路由前,源端弹性云主机的主网卡可以和目的端云弹性主机正常通信。
为源端弹性云主机双网卡配置策略路由后,主网卡和辅助网卡都可以作为独立网卡和目的端弹性云主机正常通信。
为多网卡弹性云主机配置策略路由之前,您需要收集云主机的网络信息,请根据云主机操作系统及IP类型参考对应的指导,具体说明如下,表格中的云主机信息仅为示例:
对于Linux IPv4场景,您需要收集的信息如下。
|
类型 |
主网卡 |
辅助网卡 |
|
源端 |
网卡地址:172.16.0.55 子网网段:172.16.0.0/20 子网网关:172.16.0.1 |
网卡地址:172.25.0.3 子网网段:172.25.0.0/25 子网网关:172.25.0.1 |
|
目的端 |
网卡地址:172.18.0.16 |
不涉及 |
对于Windows IPv4场景,您需要收集的信息如下。
|
类型 |
主网卡 |
辅助网卡 |
|
源端 |
网卡地址:172.16.0.55 子网网关:172.16.0.1 |
网卡地址:172.25.0.3 子网网关:172.25.0.1 |
|
目的端 |
网卡地址:172.18.0.16 |
不涉及 |
对于Linux IPv6场景,您需要收集的信息如下。
|
类型 |
主网卡 |
辅助网卡 |
|
源端 |
IPV4网卡地址:172.25.0.2 IPV6网卡地址:2408:80e0:4100:51:99:0061::2 |
IPV4网卡地址:172.18.0.2 IPV6网卡地址:2408:80e0:4100:51:99:0062::2 |
|
目的端 |
IPV6网卡地址:2408:80e0:4100:51:99:0056::2 |
不涉及 |
对于Windows IPv6场景,您需要收集的信息如下。
|
类型 |
主网卡 |
辅助网卡 |
|
源端 |
网卡地址:2408:80e0:4100:51:99:0061::2 |
网卡地址:2408:80e0:4100:51:99:0062::2 |
|
目的端 |
网卡地址:2408:80e0:4100:51:99:0056::2 |
不涉及 |
登录用户控制台。
在用户控制台左上角单击 ,选择区域。
依次选择左侧导航栏中的“产品与服务 > 计算 > 弹性云主机”。
在弹性云主机列表中,选择目标弹性云主机,并单击名称对应的超链接。进入弹性云主机“基本配置”页签。
选择“弹性网卡”页签,查看云主机主网卡和辅助网卡对应IP地址。支持查看IPv4及IPv6地址。
登录用户控制台。
在用户控制台左上角单击 ,选择区域。
依次选择左侧导航栏中的“产品与服务 > 网络 > 虚拟专有云”。
在虚拟专有云列表中,选择目标弹性云主机所在虚拟专有云,并单击名称对应的超链接。
进入虚拟机专有云“基本信息”页签,选择子网页签,在子网列表中,查看目标子网对应的网段及网关地址。支持查看IPv4和IPv6地址。
本文档以CentOS 8.0 64bit为例,指导用户为双网卡Linux弹性云主机配置策略路由。
|
登录弹性云主机。
执行以下命令,检查源端云主机主网卡和目的端云主机通信情况。
ping –I 源端云主机主网卡地址 目的端云主机地址
执行以下命令,查看云主机网卡名称。
ifconfig
为云主机配置临时路由。
依次执行以下命令,添加主网卡和辅助网卡的策略路由。
主网卡
ip route add default via 子网网关 dev 网卡名称 table 路由表名称 //网卡名称请填写步骤3中查询出的名称。
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 路由表名称
示例:
# 主网卡
ip route add default via 172.16.0.1 dev eth0 table 10
ip route add 172.16.0.0/20 dev eth0 table 10
ip rule add from 172.16.0.55 table 10
# 辅助网卡
ip route add default via 172.25.0.1 dev eth1 table 20
ip route add 172.25.0.0/25 dev eth1 table 20
ip rule add from 172.25.0.3 table 20
依次执行以下命令,确认策略路由是否添加成功。
ip rule
ip route show table 主网卡路由表名称 //路由表名称为自定义的名称
ip route show table 辅助网卡路由表名称
示例:
ip rule
ip route show table 10
ip route show table 20
# 回显显示类似如下信息,表示策略路由添加成功。
[root@ecs1 ~]# ip rule
0: from all lookup local
32764: from 172.25.0.3 lookup 20
32765: from 172.16.0.55 lookup 10
32766: from all lookup main
32767: from all lookup default
[root@ecs1 ~]# ip route show table 10
default via 172.16.0.1 dev eth0
1172.16.0.0/20 dev eth0 scope link
[root@ecs1 ~]# ip route show table 20
default via 172.25.0.1 dev eth1
172.25.0.0/25 dev eth1 scope link
执行以下命令,验证源端云主机和目的端云主机是否可以正常通信。
ping –I 源端云主机主网卡地址 目的端云主机地址
ping –I 源端云主机辅助网卡地址 目的端云主机地址
示例:
ping -I 172.16.0.55 172.18.0.16
ping -I 172.25.0.3 172.18.0.16
# 回显显示类似如下信息,两个网卡均可以和目的端正常通信,表示策略路由配置成功。
[root@ecs1 ~]# ping -I 172.16.0.55 172.18.0.16
PING 172.18.0.16 (172.18.0.16) from 172.16.0.55 : 56(84) bytes of data.
64 bytes from 172.18.0.16: icmp_seq=1 ttl=64 time=0.775 ms
64 bytes from 172.18.0.16: icmp_seq=2 ttl=64 time=0.268 ms
64 bytes from 172.18.0.16: icmp_seq=3 ttl=64 time=0.220 ms
64 bytes from 172.18.0.16: icmp_seq=4 ttl=64 time=0.167 ms
^C
--- 172.18.0.16 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 172.25.0.3 172.18.0.16
PING 172.18.0.16 (172.18.0.16) from 172.25.0.3 : 56(84) bytes of data.
64 bytes from 172.18.0.16: icmp_seq=1 ttl=64 time=2.84 ms
64 bytes from 172.18.0.16: icmp_seq=2 ttl=64 time=0.258 ms
64 bytes from 172.18.0.16: icmp_seq=3 ttl=64 time=0.234 ms
64 bytes from 172.18.0.16: icmp_seq=4 ttl=64 time=0.153 ms
^C
--- 172.18.0.16 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
为云主机配置永久路由。
执行以下命令,打开“/etc/rc.local”文件。
vi /etc/rc.local
按i进入编辑模式。
在文件末尾添加以下配置。
# wait for nics up
sleep 5
# Add v4 routes for eth0
ip route flush table 10
ip route add default via 172.16.0.1 dev eth0 table 10
ip route add 172.16.0.0/20 dev eth0 table 10
ip rule add from 172.16.0.55 table 10
# Add v4 routes for eth1
ip route flush table 20
ip route add default via 172.25.0.1 dev eth1 table 20
ip route add 172.25.0.0/25 dev eth1 table 20
ip rule add from 172.25.0.3 table 20
# Add v4 routes for cloud-init
ip rule add to 169.254.169.254 table main
参数说明如下:
wait for nics up:文件启动时间,建议和本示例中的配置保持一致。
Add v4 routes for eth0:主网卡的策略路由。
Add v4 routes for eth1:辅助网卡的策略路由。
Add v4 routes for cloud-init:配置cloud-init地址,请和本示例中的配置保持一致,不要修改。
按ESC退出,并输入:wq!保存配置。
执行以下命令,为“/etc/rc.local”文件添加执行权限。
chmod +x /etc/rc.local
执行以下命令,重启云主机。
reboot
请参考步骤4,检查永久策略路由添加情况,并验证源端和目的通信是否正常。
配置IPv6策略路由前,先确认做过IPv6相关的配置只需要确保ECS可以正常获取动态IPv6地址即可。
|
登录弹性云服务器。
执行以下步骤,确保云服务器已开启IPv6协议栈,并且正常获取到IPv6地址。
执行以下命令,检查云服务器是否可以获取到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:4f:92:d2 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.226/24 brd 192.168.0.255 scope global dynamic noprefixroute eth0
valid_lft 31535994sec preferred_lft 31535994sec
inet6 fe80::f816:3eff:fe4f:92d2/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:d2:61:ef brd ff:ff:ff:ff:ff:ff
inet 192.168.1.6/24 brd 192.168.1.255 scope global dynamic noprefixroute eth1
valid_lft 31535994sec preferred_lft 31535994sec
inet6 fe80::f816:3eff:fed2:61ef/64 scope link noprefixroute
valid_lft forever preferred_lft forever
执行以下命令,查看云服务器网卡名称。
ifconfig
回显类似如下信息,通过网卡地址查找对应的网卡名称,本示例中:
192.168.0.58为主网卡地址,对应的名称为eth0。
192.168.1.237为扩展网卡地址,对应的名称为eth1。
[root@ecs-resource ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.58 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::f816:3eff:feca:2330 prefixlen 64 scopeid 0x20<link>
ether fa:16:3e:ca:23:30 txqueuelen 1000 (Ethernet)
RX packets 528 bytes 119212 (116.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 623 bytes 98235 (95.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.237 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::f816:3eff:feee:2d00 prefixlen 64 scopeid 0x20<link>
ether fa:16:3e:ee:2d:00 txqueuelen 1000 (Ethernet)
RX packets 16 bytes 2066 (2.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12 bytes 1332 (1.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
执行以下步骤,编辑主网卡的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!保存配置。
执行以下步骤,编辑扩展网卡的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!保存配置。
执行以下步骤,编辑“/etc/sysconfig/network”文件。
1.执行以下命令,打开“/etc/sysconfig/network”文件。
vi /etc/sysconfig/network
2.按i进入编辑模式。
3.在文件末尾添加以下配置。
NETWORKING_IPV6="yes"
4.按ESC退出,并输入:wq!保存配置。
执行以下命令,重启网络服务使配置生效。
systemctl restart NetworkManager
执行以下命令,检查云服务器是否可以获取到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:4f:92:d2 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.226/24 brd 192.168.0.255 scope global dynamic noprefixroute eth0
valid_lft 31535994sec preferred_lft 31535994sec
inet6 2407:c080:802:aba:fe7f:f7fb:b3d1:ed68/128 scope global dynamic noprefixroute
valid_lft 31535994sec preferred_lft 31535994sec
inet6 fe80::f816:3eff:fe4f:92d2/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:d2:61:ef brd ff:ff:ff:ff:ff:ff
inet 192.168.1.6/24 brd 192.168.1.255 scope global dynamic noprefixroute eth1
valid_lft 31535994sec preferred_lft 31535994sec
inet6 2407:c080:802:be6:235a:7186:c7b5:6191/128 scope global dynamic noprefixroute
valid_lft 31535994sec preferred_lft 31535994sec
inet6 fe80::f816:3eff:fed2:61ef/64 scope link noprefixroute
valid_lft forever preferred_lft forever
执行以下命令,检查源端云服务器主网卡和目的端云服务器通信情况。
ping6 -I 源端云服务器主网卡地址 目的端云服务器地址
命令示例:
ping6 -I 2407:c080:802:aba:ac57:214e:125d:ab3e 2407:c080:802:be7:60ab:e557:c60c:6b7d
回显类似如下信息,表示可以正常通信。
[root@ecs-resource ~]# ping6 -I 2407:c080:802:aba:ac57:214e:125d:ab3e 2407:c080:802:be7:60ab:e557:c60c:6b7d
PING 2407:c080:802:be7:60ab:e557:c60c:6b7d(2407:c080:802:be7:60ab:e557:c60c:6b7d) from 2407:c080:802:aba:ac57:214e:125d:ab3e : 56 data bytes
64 bytes from 2407:c080:802:be7:60ab:e557:c60c:6b7d: icmp_seq=1 ttl=64 time=0.656 ms
64 bytes from 2407:c080:802:be7:60ab:e557:c60c:6b7d: icmp_seq=2 ttl=64 time=0.246 ms
64 bytes from 2407:c080:802:be7:60ab:e557:c60c:6b7d: icmp_seq=3 ttl=64 time=0.231 ms
64 bytes from 2407:c080:802:be7:60ab:e557:c60c:6b7d: icmp_seq=4 ttl=64 time=0.168 ms
^C
--- 2407:c080:802:be7:60ab:e557:c60c:6b7d ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 67ms
rtt min/avg/max/mdev = 0.168/0.325/0.656/0.193 ms
执行以下命令,验证源端云服务器和目的端云服务器是否可以正常通信。
ping6 -I 源端云服务器主网卡地址 目的端云服务器地址
ping6 -I 源端云服务器扩展网卡地址 目的端云服务器地址
命令示例:
ping6 -I 2407:c080:802:aba:ac57:214e:125d:ab3e 2407:c080:802:be7:60ab:e557:c60c:6b7d
ping6 -I 2407:c080:802:be6:c741:db0f:4dbb:21db 2407:c080:802:be7:60ab:e557:c60c:6b7d
回显类似如下信息,两个网卡均可以和目的端正常通信,表示策略路由配置成功。
[root@ecs-resource ~]# ping6 -I 2407:c080:802:aba:ac57:214e:125d:ab3e 2407:c080:802:be7:60ab:e557:c60c:6b7d
PING 2407:c080:802:be7:60ab:e557:c60c:6b7d(2407:c080:802:be7:60ab:e557:c60c:6b7d) from 2407:c080:802:aba:ac57:214e:125d:ab3e : 56 data bytes
64 bytes from 2407:c080:802:be7:60ab:e557:c60c:6b7d: icmp_seq=1 ttl=64 time=0.656 ms
64 bytes from 2407:c080:802:be7:60ab:e557:c60c:6b7d: icmp_seq=2 ttl=64 time=0.246 ms
64 bytes from 2407:c080:802:be7:60ab:e557:c60c:6b7d: icmp_seq=3 ttl=64 time=0.231 ms
64 bytes from 2407:c080:802:be7:60ab:e557:c60c:6b7d: icmp_seq=4 ttl=64 time=0.168 ms
^C
--- 2407:c080:802:be7:60ab:e557:c60c:6b7d ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 67ms
rtt min/avg/max/mdev = 0.168/0.325/0.656/0.193 ms
[root@ecs-resource ~]# ping6 -I 2407:c080:802:be6:c741:db0f:4dbb:21db 2407:c080:802:be7:60ab:e557:c60c:6b7d
PING 2407:c080:802:be7:60ab:e557:c60c:6b7d(2407:c080:802:be7:60ab:e557:c60c:6b7d) from 2407:c080:802:be6:c741:db0f:4dbb:21db : 56 data bytes
64 bytes from 2407:c080:802:be7:60ab:e557:c60c:6b7d: icmp_seq=1 ttl=64 time=0.630 ms
64 bytes from 2407:c080:802:be7:60ab:e557:c60c:6b7d: icmp_seq=2 ttl=64 time=0.237 ms
64 bytes from 2407:c080:802:be7:60ab:e557:c60c:6b7d: icmp_seq=3 ttl=64 time=0.238 ms
64 bytes from 2407:c080:802:be7:60ab:e557:c60c:6b7d: icmp_seq=4 ttl=64 time=0.207 ms
^C
--- 2407:c080:802:be7:60ab:e557:c60c:6b7d ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 105ms
rtt min/avg/max/mdev = 0.207/0.328/0.630/0.174 ms
本文档以Windows 2012 64bit为例,指导用户为双网卡Windows云主机配置策略路由。
|
登录弹性云主机。
执行以下命令,检查源端云主机主网卡和目的端云主机通信情况。
ping –S 源端云主机主网卡地址 目的端云主机地址
执行以下命令,添加辅助网卡的策略路由。
route add -p 0.0.0.0 mask 0.0.0.0 辅助网卡子网网关 metric 路由优先级
参数说明如下:
# 0.0.0.0/0:默认路由,请不要修改。
# 辅助网卡子网网关:填写“收集弹性云主机网络信息”章节收集的地址。
# 路由优先级:辅助网卡优先级必须小于主网卡,数字越大优先级越低。
执行以下命令,确认策略路由是否添加成功。
route print
执行以下命令,验证源端云主机和目的端云主机是否可以正常通信。
ping –S 源端云主机主网卡地址 目的端云主机地址
ping –S 源端云主机辅助网卡地址 目的端云主机地址
|
登录弹性云服务器。
执行以下命令,确保云服务器已开启IPv6协议栈,并且正常获取到IPv6地址。
ipconfig
回显类似如下信息,每个网卡可以查看到IPv6地址,为2407开头的地址,表示可以自动获取到IPv6地址,不用进行配置。
执行以下命令,验证源端云服务器和目的端云服务器是否可以正常通信。
ping -6 -S 源端云服务器主网卡地址 目的端云服务器地址
ping -6 -S 源端云服务器扩展网卡地址 目的端云服务器地址
命令示例:
ping -6 -S 2407:c080:802:aba:8999:5e61:e19:cf7e 2407:c080:802:be7:c2e6:d99c:b685:c6c8
ping -6 -S 2407:c080:802:be6:ec23:ec4:c886:cc1 2407:c080:802:be7:c2e6:d99c:b685:c6c8