Windows中route add必须带mask关键字及匹配子网掩码,否则默认为32位主机路由;Linux中用route add -net目标/掩码 gw网关或dev接口,-p仅Windows有效,Linux需写配置文件实现持久化。

在Windows或Linux命令行中添加静态路由时,必须严格遵循route add的参数顺序与语法结构,否则系统会报错“参数格式不正确”或直接忽略指令。
Windows下route add完整语法格式
打开CMD(需管理员权限),输入:
route add <目标网络> mask <子网掩码> <下一跳IP> [metric <跃点数>] [if <接口索引>]
其中mask关键字不可省略,子网掩码必须与目标网络位数匹配;若省略mask和子网掩码,系统默认当作主机路由处理,仅对单个IP生效。
例如添加到192.168.50.0/24网段、经192.168.1.1转发的路由:route add 192.168.50.0 mask 255.255.255.0 192.168.1.1
【不加mask会导致路由被识别为32位主机路由,无法匹配该网段内其他地址】
Linux下route add常用写法(传统net-tools)
方法一:指定网关(最常用)sudo route add -net 10.20.30.0/24 gw 172.16.1.254
方法二:指定出口网卡(无网关,直连网络)sudo route add -net 192.168.100.0/24 dev eth1
方法三:添加主机路由sudo route add -host 10.0.0.5 gw 10.0.0.1
注意:Linux中/24可替代netmask 255.255.255.0,但二者不可混用;若用netmask,必须写全称且紧跟在目标后——route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.1.1.1。
让新增路由重启后仍生效(Windows持久化)
第一步:在原始route add命令末尾追加-p参数
第二步:确认当前命令已含mask和合法下一跳
第三步:执行route add -p 172.20.0.0 mask 255.255.0.0 10.1.1.253
这一步必须以管理员身份运行CMD,否则-p会被静默忽略,且不会提示错误。
【-p参数只对Windows有效,Linux中需写入/etc/rc.local或使用network-manager配置】
验证与排错关键操作
执行完route add后,立即运行route print(Windows)或route -n(Linux)查看是否出现在路由表中。
若目标网络已存在更精确的路由(如已有192.168.1.100/32),新添加的192.168.1.0/24可能不会生效——系统按最长前缀匹配优先转发。
删除误加的路由用route delete <目标>(Windows)或route del -net <目标>(Linux)。

















