背景描述
静态路由是根据报文的目的地址查找路由表,然后进行转发,不能满足用户自定义的策略进行报文转发和选路。如图所示拓扑,VPC内网段10.0.0.0/24
访问8.8.8.8
的流量需要通过ECMP引流到云主机A,B,C上进行处理。
本实践方案通过配置策略路由完成上述需求。
前提条件
路由器绑定了上述网段子网,子网间的云主机可以互通。
操作步骤
分别进入云主机A,B,C的VNC,执行如下步骤。
网卡开启路由转发功能:
sudo sysctl -w net.ipv4.ip_forward=1
进入安全组列表,创建一个
无状态
安全组,配置出入方向0.0.0.0/0
全放通的规则。分别为云主机A,B,C的网卡配置
无状态
安全组和关闭源/目的检查
。虚拟网卡列表
选择云主机的网卡,点击进入详情。- 点击
更多操作
-编辑安全组
,选择上述无状态
安全组,点击保存。 - 点击关闭
源/目的检查
按钮。
说明:由于
10.0.0.0/24
虚机访问8.8.8.8
的流量来回路径不一致,为了避免conntrack对云主机A,B,C网卡的影响,需要配置无状态
的安全组。进入路由器,配置策略路由。
优先级 | IP类型 | 协议和端口 | 策略 | 下一跳 | 源CIDR | 目的CIDR | 源接口 | 目的接口 |
---|---|---|---|---|---|---|---|---|
10 | IPv4 | 全部 | 重路由 | 10.0.2.3,10.0.2.4,10.0.2.5 | 10.0.0.0/24 | 8.8.8.8/32 | 10.0.0.1 | - |
说明:源接口
10.0.0.1
必须配置,因为引流到云主机A,B,C的流量出来时源IP、目的IP都没有变化,再次路由后源接口变为了10.0.2.1
,所以流量不会匹配这条策略路由,会正常访问到目的IP地址;重路由
多个下一跳地址表示 ECMP 路由,地址间用逗号隔开。
结果验证
进入网段10.0.0.0/24
的云主机,能正常访问8.8.8.8
;
进入云主机A,B,C的VNC,通过tcpdump能够正常抓到10.0.0.0/24
访问8.8.8.8
的报文。