linux云服务器vpc多网卡路由核心是策略路由:需为每网卡创建独立路由表并绑定源ip,显式添加直连子网和默认路由,按优先级配置ip rule,关闭rp_filter防响应包丢弃,并通过rc.local或网卡配置实现持久化。

Linux云服务器在专有网络(VPC)环境中,路由配置的核心是确保多网卡、多子网间通信正确,同时避免默认路由冲突。关键不在于“添加一条路由”,而在于按源地址区分路径——也就是策略路由(Policy-Based Routing)。
确认网卡与子网信息
先明确当前环境的网络拓扑:
- 用 ip a 或 ifconfig 查出主网卡(如 eth0)和扩展网卡(如 eth1)的 IP 地址及对应子网
- 确认每个子网的网关地址(通常是子网段首个可用 IP,如 10.0.0.1)
- 验证连通性:ping -I 10.0.0.115 10.0.2.12(指定源地址 ping 目标),确认单向可达
配置策略路由表
系统默认只有一张路由表(main),多网卡需自定义独立路由表,并绑定源地址:
- 为 eth0 添加路由表(如 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 - 为 eth1 添加另一张表(如 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
执行后用 ip rule show 和 ip route show table 10 验证规则是否生效。
让策略路由持久化
重启后策略路由会丢失,需写入启动脚本:
- 编辑 /etc/rc.local(确保有执行权限),在 exit 0 前加入:
- sleep 3(防网卡未就绪)
- 重复上述 ip route 和 ip rule 命令,并加 ip route flush table 10 等清理旧条目
- 或更规范的做法:在网卡配置文件中添加 up 指令(如 CentOS 的 /etc/sysconfig/network-scripts/ifcfg-eth0 中追加 POSTUP="ip rule add from 10.0.0.115 table 10")
检查与排错要点
常见问题往往出在细节:
- ip rule 顺序很重要:规则按序匹配,高优先级 rule 应放在前面(数字越小优先级越高)
- 不能只配 default 路由:必须显式添加直连子网路由(如 10.0.0.0/24),否则同子网通信走不了策略表
-
禁用反向路径过滤:若响应包从非预期网卡返回,可能被内核丢弃,临时关闭:
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
永久设置可写入 /etc/sysctl.conf:net.ipv4.conf.all.rp_filter = 0











