一台 Linux 云主机挂有两块网卡:ens3 连接管理网络,ens4 连接业务网络。若请求从 ens4 到达,回复却从 ens3 发出,就可能出现连接失败或返回路径不符合预期。配置云主机多网卡路由策略配置前,先把入站、出站和回程方向分开看,再决定使用静态路由还是策略路由。
先画清流量经过的方向
为每块网卡记录本机地址、子网、网关和用途。再分别检查三类流量:主机主动访问外部时从哪张卡发出;访问某个网段时应走哪张卡;外部访问某个本机地址后,响应应从哪里返回。
云平台的路由表、安全组或网络 ACL 决定数据包能否到达网卡;Linux 主机内的路由表决定收到或产生的数据包如何转发。主机上的静态路由不能替代云网络侧配置,两边都要核对。以下命令以 Linux 的 iproute2 为例,接口名、地址和网关须替换为实际值。
静态路由:按目标网段选出口
静态路由适合目标明确、出口固定的情况,例如只有访问 10.20.0.0/16 时才需要经过 ens4 的网关。可在主路由表添加一条目标路由:
先查看地址、链路与现有路由:ip -br addr、ip route。
添加路由,例如:ip route add 10.20.0.0/16 via 10.10.0.1 dev ens4。其中网关必须在 ens4 可达的网络内。
用ip route get 10.20.1.5检查系统选择的出口与下一跳;确认无误后,再按所用网络管理方式写入持久配置。
它的优点是规则直观、维护成本较低;缺点是主要依据目标地址选路。若两张网卡都配置默认网关,出站默认路由可能因优先级或配置管理方式而不符合预期。不要仅为“多一条备用出口”就盲目添加第二条默认路由,应先明确主用、备用及故障切换机制。
策略路由:按来源或标记选择路由表
当不同本机地址需要各走各的出口,或需要按防火墙标记分流时,策略路由更合适。它通过ip rule选择路由表,再由该表决定下一跳;这与静态路由按目的网段匹配的思路不同。
按源地址让回包走对应网卡
假设 ens4 的本机地址是 10.10.0.10,网关是 10.10.0.1。可建立独立路由表并增加规则:
添加表内路由:ip route add 10.10.0.0/24 dev ens4 src 10.10.0.10 table 100。
添加该表的默认路由:ip route add default via 10.10.0.1 dev ens4 table 100。
让源地址为 10.10.0.10 的流量查询表 100:ip rule add from 10.10.0.10/32 table 100 priority 100。
检查规则和表:ip rule show、ip route show table 100;再用ip route get 1.1.1.1 from 10.10.0.10验证该来源地址对应的出口。
这里的地址只用于说明命令结构,部署时应替换成主机实际地址和网关。临时命令通常不会自动跨重启保留;持久化方式取决于系统使用的 NetworkManager、Netplan 或 systemd-networkd,修改前应确认配置归属,避免多套工具同时管理接口。
容易忽略的回程与验证问题
检查云主机多网卡路由策略配置时,不能只看出站路由。若请求从一张网卡进入、响应从另一张网卡返回,路径不对称可能触发上游设备的源地址检查,也可能与 Linux 的反向路径过滤(rp_filter)设置冲突。不要直接关闭过滤作为通用修复;先确认业务是否确实需要非对称路径,再检查内核参数、云网络路由和安全规则。
上线前从目标地址、源地址两个角度测试。除 ip route get 外,可在对应接口用tcpdump -ni ens4观察报文是否进出;测试不同来源的连接,并检查应用监听地址是否覆盖预期网卡。完成后将规则写入持久配置,并安排重启或网络服务重载验证。
如何选择
| 需求 | 更适合 | 主要注意点 |
|---|---|---|
| 某些目标网段固定走某接口 | 静态路由 | 核对目标前缀、网关可达性及默认路由优先级 |
| 不同源地址分别使用不同出口 | 策略路由 | 维护规则优先级、独立路由表和回程路径 |
| 按业务标记、端口等条件分流 | 策略路由配合防火墙标记 | 保证标记规则与路由规则一致,并覆盖重启配置 |
简单拓扑优先采用容易审计的静态路由;确有按来源或标记分流需求,再引入策略路由。把流量方向、主机路由和云网络侧规则逐项对应,才是可靠的云主机多网卡路由策略配置方法。
常见问题
两张网卡能否各配置一个默认网关?
可以配置,但不代表系统会按业务意图自动分流。需明确默认路由优先级,或使用策略路由分别指定出口,并验证回程。
静态路由可以解决回包走错网卡吗?
若回包目的地址稳定且能用目标网段区分,静态路由可能足够;若需按本机源地址决定出口,通常应考虑策略路由。
命令生效后重启失效怎么办?
ip 命令添加的路由和规则常用于即时调整,持久化需写入当前系统采用的网络配置工具,并在重启后重新检查。
策略路由后仍无法连接,先查什么?
依次核对云侧路由与安全规则、主机 ip rule 和对应路由表、源地址选择、rp_filter,以及接口上的实际报文。