“路由已存在”提示表明目标网段或默认网关条目已在内核路由表中,linux拒绝重复添加;应先用ip route show确认冲突条目,再用ip route replace强制覆盖或先删后加。

当执行 route add 时提示“路由已存在”,说明目标网段或默认网关条目已在内核路由表中,Linux 拒绝重复添加——它不会报错覆盖,而是静默失败,导致你以为命令成功、实际路由未生效。
先确认冲突路由的具体内容
运行 ip route show 查看完整路由表,重点找与你要添加的目标完全一致的条目:比如你要加 10.20.0.0/16 via 192.168.1.100,就搜 10.20.0.0;要加默认网关,就搜 default via 或 0.0.0.0/0。
注意:不要只看 route -n,它的输出可能滞后或格式不统一;ip route show 才是内核当前真实 FIB 表。
【关键前提】 必须确认冲突条目的 via、dev、metric 和你打算添加的是否真的一致——若仅 metric 不同,仍属“已存在”,但可能需保留旧条目;若 via 错误,则必须替换。
方法一:用 ip route replace 强制覆盖
这是最直接安全的更新方式,无需先删后加,一步完成:
执行 sudo ip route replace 10.20.0.0/16 via 192.168.1.100 dev enp0s3(将网段、网关、接口替换为你的真实值)。
这命令会自动删除旧条目并插入新条目,即使旧条目 metric 不同、dev 不同,也强制生效。适用于你明确知道新路由参数正确、旧路由必须作废的场景。
如果提示 Network is unreachable,说明 via 地址不可达——请先验证该网关是否在本地子网内,且对应接口已 UP 并配了 IP。
方法二:先删再 add(适合需精细控制 metric 或 dev 的情况)
第一步:精准删除旧路由
当代理已经知道网站路由或内容URL,并且在启动前需要有效的sitemap XML、sitemap索引或robots.txt引用时,请使用sitemap。这是一个发布构件技能,而不是爬虫或SEO平台。
用完整匹配语法删,避免误删其他条目:sudo ip route del 10.20.0.0/16 via 192.168.1.1 dev enp0s3。务必把旧路由的 via 和 dev 写全,否则可能删错或报错 No such process。
第二步:重新添加新路由
执行 sudo ip route add 10.20.0.0/16 via 192.168.1.100 dev enp0s3 metric 50(metric 可选,不加则用默认值)。
这一步操作起来很简单,直接把文件拖进去就行。
方法三:用 route del + route add 组合(仅限传统环境)
方法一和方法二推荐优先使用 ip route,但若系统老旧或脚本依赖 route 命令,可用此法:
先删:执行 sudo route del -net 10.20.0.0 netmask 255.255.0.0 gw 192.168.1.1(注意 netmask 必须与原条目完全一致,否则删不掉)。
再加:执行 sudo route add -net 10.20.0.0 netmask 255.255.0.0 gw 192.168.1.100 dev enp0s3。
【易错点】 route del 不支持 metric 参数,也无法区分同目标不同 metric 的条目——若存在两条 10.20.0.0/16 路由,它只会删第一条,第二条残留,后续 add 仍会失败。










