Ubuntu静态路由配置关键在于匹配网络管理器:netplan与/etc/network/interfaces不可混用;routes必须为YAML列表,每条路由独立成行且to值为CIDR格式;默认网关优先用gateway4字段;多网卡需显式设置metric避免冲突;策略路由需配合ip rule;永久路由唯一可靠方式是写入netplan并apply。

Ubuntu配置静态路由,关键不是“加不加得上”,而是你用的配置机制是否匹配系统当前网络管理器——netplan 和 /etc/network/interfaces 不能混用,否则路由根本不会进内核路由表。
netplan 中 routes 必须是 YAML 列表,不是逗号分隔字符串
很多人在 routes: 下写成一行、用逗号分隔多个目标网络,比如:
routes: - to: 10.10.0.0/24, 192.168.5.0/24 via: 192.168.1.1
这会导致 netplan apply 直接失败,报 Invalid YAML 或静默忽略该字段。YAML 不支持这种语法。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
-
routes必须是带缩进的列表,每条路由独立占一个-行 -
to值必须是 CIDR 格式(如10.10.0.0/24),写10.10.0.0或10.10.0.0/255.255.255.0都无效 - 默认网关优先用
gateway4字段,它比routes: [{to: default, via: ...}]更可靠,尤其在 DHCP fallback 场景下
多网卡时必须显式设 metric,否则默认路由冲突
两块网卡都配了 gateway4,ip route show 会看到两条 default via ...,但系统只选一条——谁的 metric 小谁生效。netplan 默认给所有接口设 metric: 100,结果取决于内核加载顺序,不可预测。
- 只在一个接口上设
gateway4,其他接口的默认路由用routes显式添加并带metric - 若需策略路由(比如某源 IP 走特定出口),
routes支持table和from字段,但需配合ip rule才生效 - 验证命令:
ip route show table main | grep default,确认输出里只有一条带metric的默认路由
临时路由用 ip route add,但重启就丢
ip route add 10.20.0.0/24 via 192.168.1.2 立刻生效,适合调试,但任何网络服务重载(systemctl restart systemd-networkd)、netplan apply 或重启都会清空。
- 不要把
ip route add写进/etc/rc.local—— Ubuntu 22.04+ 默认不执行它,且时机太晚,可能被 netplan 覆盖 - 若必须临时加,加完立刻用
ip route show确认是否出现在main表里;若没出现,大概率是下一跳不可达或接口未 up - 永久路由唯一可靠方式:写进 netplan YAML 并
sudo netplan apply
最易被忽略的点:netplan 配置文件的 renderer 字段必须和实际后端一致(networkd 或 NetworkManager),写错会导致整个配置被忽略——比如用 renderer: NetworkManager 却没装 NM,routes 就完全不生效。


















