操作场景
本文档以CentOS 8.0 64bit为例,指导用户为双网卡Linux云主机配置策略路由。
IPv4:若需实现多网卡云主机间的IPv4通信,需要配置IPv4路由,请执行Linux IPv4操作步骤 (CentOS)。
IPv6:若需实现多网卡云主机间的IPv6通信,需要配置IPv6路由,请执行Linux IPv6操作步骤 (CentOS)。
IPv4/IPv6双栈:若需实现多网卡间的IPv4和IPv6通信,需要同时配置IPv4和IPv6路由,请依次执行Linux IPv4操作步骤 (CentOS)和Linux IPv6操作步骤 (CentOS)。
Linux IPv4操作步骤 (CentOS)
收集配置策略路由需要的云主机网卡地址等信息。
登录源端云主机。
执行以下命令,检查源端云主机主网卡和目的端云主机通信情况。
配置多网卡策略路由前,请务必确保源端主网卡和目的端通信正常。ping -I 源端云主机主网卡地址 目的端云主机地址
命令示例:
ping -I 10.0.0.115 10.0.2.12
执行以下命令,查看云主机网卡名称。
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配置完临时路由后,继续执行6配置永久路由,避免云主机重启后网络中断。
依次执行以下命令,添加主网卡和扩展网卡的策略路由。
主网卡
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
说明
如果云主机有多张网卡,请依次为所有网卡添加策略路由。
依次执行以下命令,确认策略路由是否添加成功。
ip ruleip route show table 主网卡路由表名称
ip route show table 扩展网卡路由表名称
其中,路由表名称为5.a中自定义的名称。
命令示例:
ip rule
ip route show table 10
ip route show table 20
执行以下命令,验证源端云主机和目的端云主机是否可以正常通信。
ping -I 源端云主机主网卡地址 目的端云主机地址ping -I 源端云主机扩展网卡地址 目的端云主机地址
命令示例:
ping -I 10.0.0.115 10.0.2.12
ping -I 10.0.1.183 10.0.2.12
继续执行以下步骤,为云主机配置永久路由。
执行以下命令,打开“/etc/rc.local”文件。
vi /etc/rc.local按i进入编辑模式。
在文件末尾添加以下配置。
# check eth0 for ((x=0; x<10; x++)); do if (ip addr show eth0 | grep -w 10.0.0.115 >/dev/null 2>&1); then break fi sleep 1 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<10; x++)); do if (ip addr show eth1 | grep -w 10.0.1.183 >/dev/null 2>&1); then break fi sleep 1 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按ESC退出,并输入:wq!保存配置。
执行以下命令,为“/etc/rc.local”文件添加执行权限。
chmod +x /etc/rc.local说明
如果您的操作系统为Redhat、EulerOS,执行完6.e后,还需要执行以下命令,权限才会添加成功。
chmod +x /etc/rc.d/rc.local
执行以下命令,重启云主机。
reboot注意
“/etc/rc.local”文件中添加的策略路由,需要重启云主机后才会生效,此处请确保不影响业务再重启云主机。
参考5.b~5.c,检查策略路由添加情况,并验证源端和目的通信是否正常。
Linux IPv6操作步骤 (CentOS)
收集配置策略路由需要的云主机网卡地址等信息。
登录源端云主机。
执行以下步骤,确保云主机已开启IPv6协议栈,并且正常获取到IPv6地址。
登录源端云主机,执行以下命令,检查源端云主机主网卡和目的端云主机通信情况。
配置多网卡策略路由前,请务必确保源端主网卡和目的端通信正常。
ping6 -I 源端云主机主网卡地址 目的端云主机地址
命令示例:
ping6 -I 2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9 2407:c080:1200:1dd9:16a7:fe7a:8f71:7044
登录源端云主机,执行以下步骤,为云主机配置临时路由。
注意
- 临时路由配置完后立即生效,当云主机重启后临时路由会丢失,请执行5配置完临时路由后,继续执行6配置永久路由,避免云主机重启后网络中断。
依次执行以下命令,添加主网卡和扩展网卡的策略路由。
主网卡
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 路由表名称
命令示例:
主网卡
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
依次执行以下命令,确认策略路由是否添加成功。
ip -6 ruleip -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
执行以下命令,验证源端云主机和目的端云主机是否可以正常通信。
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
执行以下步骤,为云主机配置永久路由。
执行以下命令,打开“/etc/rc.local”文件。
vi /etc/rc.local按i进入编辑模式。
在文件末尾添加以下配置。
# check eth0 for ((x=0; x<10; x++)); do if (ip addr show eth0 | grep -w 2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9 >/dev/null 2>&1); then break fi sleep 1 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<10; x++)); do if (ip addr show eth1 | grep -w 2407:c080:1200:1a9c:7cc0:63b5:8e65:4dd8 >/dev/null 2>&1); then break fi sleep 1 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按ESC退出,并输入:wq!保存配置。
执行以下命令,为“/etc/rc.local”文件添加执行权限。
chmod +x /etc/rc.local说明
如果您的操作系统为Redhat、EulerOS,执行完6.e后,还需要执行以下命令,权限才会添加成功。
chmod +x /etc/rc.d/rc.local
执行以下命令,重启云主机。
reboot注意
“/etc/rc.local”文件中添加的策略路由,需要重启云主机后才会生效,此处请确保不影响业务再重启云主机。
参考5.b~5.c,检查策略路由添加情况,并验证源端和目的通信是否正常。