Windows route 命令详解 --- 多网络环境下,指定特定地址

在 Windows 网络环境中,route 命令用于查看、添加、删除和修改本机路由表。它常用于多网卡、VPN、内网访问、专线网络、虚拟机网络、调试网络连通性等场景。

本文重点讲解下面这条命令的含义和用法:

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> -p
rust 复制代码
<主机掩码> -> 255.255.255.255 为本机   
<主机掩码> -> 255.255.255.0  会匹配整个 `<A.B.C.0/24>` 网段内的地址  

这条命令的作用是:在 Windows 系统中添加一条永久静态路由,让访问 <目标主机IP> 这个单独 IP 地址的流量,通过网关 <下一跳网关IP> 转发。

一、命令逐段解释

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> -p

各部分含义如下:

部分 含义
route Windows 路由管理命令
add 添加一条新路由
<目标主机IP> 目标地址,也就是要访问的目的 IP
mask <主机掩码> 子网掩码,表示这条路由只匹配一个 IP
<下一跳网关IP> 下一跳网关,数据包会先发给这个地址
-p persistent,表示永久路由,重启后仍然保留

换句话说,只要本机访问 <目标主机IP>,系统就会按照这条路由,把数据包交给 <下一跳网关IP>

二、为什么掩码是 <主机掩码>

<主机掩码> 是主机路由掩码,也叫 /32 掩码。

它表示只匹配一个具体的 IP 地址,而不是一个网段。

例如:

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> -p

只匹配:

text 复制代码
<目标主机IP>

不会匹配该网段内的其他主机,例如:

text 复制代码
<同网段其他主机IP-A>
<同网段其他主机IP-B>
<同网段其他主机IP-C>

如果你想让整个 <目标网段>/24 网段都走同一个网关,则应写成:

bat 复制代码
route add <目标网段> mask <网段掩码> <下一跳网关IP> -p

这表示访问 <目标网段>/24 内主机的流量都通过 <下一跳网关IP>

三、-p 参数的作用

-p 表示添加永久路由。

如果不加 -p

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP>

这条路由只在当前系统运行期间有效,重启电脑后会消失。

加上 -p

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> -p

这条路由会写入系统的永久路由表,电脑重启后仍然存在。

注意:添加永久路由通常需要使用管理员权限打开命令提示符或 PowerShell。

四、route 命令的基本语法

Windows 中 route 命令常见语法如下:

bat 复制代码
route print
route add 目标地址 mask 子网掩码 网关地址
route delete 目标地址
route change 目标地址 mask 子网掩码 网关地址

更完整的形式:

bat 复制代码
route [-f] [-p] command [destination] [mask netmask] [gateway] [metric metric] [if interface]

常见参数说明:

参数 说明
print 显示当前路由表
add 添加路由
delete 删除路由
change 修改已有路由
-p 添加永久路由
-f 清除网关相关路由
mask 指定子网掩码
metric 指定跃点数,值越小优先级越高
if 指定网卡接口编号

五、查看当前路由表

查看完整路由表:

bat 复制代码
route print

只查看 IPv4 路由:

bat 复制代码
route print -4

只查看 IPv6 路由:

bat 复制代码
route print -6

查看指定目标相关路由:

bat 复制代码
route print <目标主机IP>

在输出中,常见字段如下:

字段 含义
Network Destination 目标网络
Netmask 子网掩码
Gateway 网关
Interface 本机出接口地址
Metric 路由跃点数

示例:

text 复制代码
Network Destination        Netmask          Gateway       Interface  Metric
       <目标主机IP>  <主机掩码>  <下一跳网关IP>  <本机接口IP>     26

这表示访问 <目标主机IP> 时,会通过本机接口 <本机接口IP>,发往网关 <下一跳网关IP>

六、添加静态路由

1. 添加单个 IP 的路由

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP>

表示访问 <目标主机IP> 时,通过 <下一跳网关IP>

如果需要重启后仍然保留:

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> -p

2. 添加一个网段的路由

bat 复制代码
route add <目标网段> mask <网段掩码> <下一跳网关IP> -p

表示访问 <目标网段>/24 网段时,通过 <下一跳网关IP>

3. 添加默认路由

默认路由的目标地址是 <默认路由目标>,掩码是 <默认路由掩码>

bat 复制代码
route add <默认路由目标> mask <默认路由掩码> <下一跳网关IP>

默认路由表示:当没有更精确的路由匹配时,流量走这个网关。

一般不建议随意添加默认路由,因为它可能影响整台电脑的上网路径。

七、删除静态路由

删除指定目标路由:

bat 复制代码
route delete <目标主机IP>

删除指定网段路由:

bat 复制代码
route delete <目标网段>

如果之前添加的是永久路由,使用 route delete 删除后,永久路由表中的记录也会被删除。

如果同一个目标存在多条路由,可以指定掩码:

bat 复制代码
route delete <目标主机IP> mask <主机掩码>

八、修改已有路由

如果要把访问 <目标主机IP> 的网关从 <下一跳网关IP> 改成 <新网关IP>

bat 复制代码
route change <目标主机IP> mask <主机掩码> <新网关IP>

如果修改不生效,通常可以先删除再重新添加:

bat 复制代码
route delete <目标主机IP>
route add <目标主机IP> mask <主机掩码> <新网关IP> -p

九、指定 metric 优先级

metric 表示路由优先级。一般情况下,值越小优先级越高。

例如:

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> metric 5 -p

当存在多条可匹配路由时,Windows 会优先选择更精确的路由;如果精确度相同,再比较 metric

例如:

text 复制代码
<目标主机IP>/32     metric 20
<目标网段>/24       metric 5

虽然 /24metric 更小,但访问 <目标主机IP> 时,系统仍会优先选择 /32,因为 /32 更精确。

十、指定网卡接口

如果电脑有多个网卡,比如有线网卡、无线网卡、VPN 网卡同时存在,Windows 有时无法自动选择你期望的出口接口。

这时可以通过 if 参数指定接口编号。

先查看接口编号:

bat 复制代码
route print

输出中会有类似内容:

text 复制代码
Interface List
 12...00 11 22 33 44 55 ......Intel(R) Ethernet
 18...aa bb cc dd ee ff ......Wi-Fi
 35...00 ff aa bb cc dd ......VPN Adapter

假设要使用接口编号 18,可以这样添加路由:

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> if 18 -p

如果没有特殊需求,一般可以不写 if,让系统自动选择。

十一、常见使用场景

场景 1:只有某个内网 IP 需要走指定网关

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> -p

适合只访问某一台服务器,例如内网数据库、接口服务器、摄像头、工控设备等。

场景 2:某个内网网段需要走指定网关

bat 复制代码
route add <目标网段> mask <网段掩码> <下一跳网关IP> -p

适合整个内网网段都在某个网关后面。

场景 3:VPN 连接后,指定业务网段走 VPN

bat 复制代码
route add <VPN目标网段> mask <VPN网段掩码> <VPN网关IP> -p

适合 VPN 不接管默认网关,但需要访问公司内网的情况。

场景 4:多网卡环境下指定访问路径

假设电脑同时连接 Wi-Fi 和有线网络,某个目标地址必须走 Wi-Fi 网关:

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> -p

如果系统选错接口,再配合 if 指定接口编号:

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> if 18 -p

十二、验证路由是否生效

1. 查看路由表

bat 复制代码
route print <目标主机IP>

确认是否存在类似记录:

text 复制代码
<目标主机IP>    <主机掩码>    <下一跳网关IP>

2. 使用 ping 测试连通性

bat 复制代码
ping <目标主机IP>

如果目标禁用了 ICMP,ping 不通不一定代表业务不通。

3. 使用 tracert 查看路径

bat 复制代码
tracert <目标主机IP>

第一跳如果是 <下一跳网关IP>,说明路由路径符合预期。

4. 测试具体端口

例如测试 TCP 端口 80

powershell 复制代码
Test-NetConnection <目标主机IP> -Port 80

测试远程桌面端口:

powershell 复制代码
Test-NetConnection <目标主机IP> -Port 3389

这种方式比单纯 ping 更适合判断业务服务是否可达。

十三、常见问题和排查方法

1. 提示权限不足

现象:

text 复制代码
The requested operation requires elevation.

原因是没有管理员权限。

解决方法:右键点击"命令提示符"或"PowerShell",选择"以管理员身份运行",然后重新执行命令。

2. 提示对象已存在

现象:

text 复制代码
The route addition failed: The object already exists.

说明已经存在相同目标的路由。

可以先删除:

bat 复制代码
route delete <目标主机IP>

再重新添加:

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> -p

3. 添加成功但访问不通

可能原因包括:

  • 网关 <下一跳网关IP> 不可达
  • 本机没有连接到 <本地网段>/24 网络
  • 目标服务器 <目标主机IP> 本身不通
  • 目标服务器没有回程路由
  • 防火墙拦截了访问
  • 路由添加到了错误的接口
  • VPN 或安全软件改写了路由表

建议按顺序检查:

bat 复制代码
ipconfig
ping <下一跳网关IP>
route print <目标主机IP>
tracert <目标主机IP>

如果目标服务是 TCP 服务,再测试端口:

powershell 复制代码
Test-NetConnection <目标主机IP> -Port 目标端口

4. 重启后路由丢失

确认添加时是否使用了 -p

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> -p

同时确认命令是在管理员权限下执行的。

5. 网关必须和本机在同一二层可达网络吗

通常情况下,下一跳网关必须是本机能够直接到达的地址。

例如本机 IP 是:

text 复制代码
<本机接口IP>/24

那么网关:

text 复制代码
<下一跳网关IP>

是合理的,因为它和本机处在同一个 <本地网段>/24 网段。

如果本机没有任何网卡能直接到达 <下一跳网关IP>,这条路由通常不会正常工作。

十四、路由匹配原则

Windows 选择路由时,主要遵循两个原则:

  1. 最长前缀匹配优先
  2. 前缀长度相同,再比较 metric

最长前缀匹配就是"越具体越优先"。

例如同时存在:

text 复制代码
<默认路由目标>/0
<上级目标网段>/8
<目标网段>/24
<目标主机IP>/32

当访问 <目标主机IP> 时,优先匹配:

text 复制代码
<目标主机IP>/32

因为它最精确。

这也是为什么:

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> -p

适合用来精确控制某一个目标 IP 的访问路径。

十五、实用命令汇总

查看路由表:

bat 复制代码
route print

查看 IPv4 路由:

bat 复制代码
route print -4

添加单 IP 临时路由:

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP>

添加单 IP 永久路由:

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> -p

添加网段永久路由:

bat 复制代码
route add <目标网段> mask <网段掩码> <下一跳网关IP> -p

指定 metric:

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> metric 5 -p

指定接口:

bat 复制代码
route add <目标主机IP> mask <主机掩码> <下一跳网关IP> if 18 -p

删除路由:

bat 复制代码
route delete <目标主机IP>

修改路由:

bat 复制代码
route change <目标主机IP> mask <主机掩码> <新网关IP>

追踪路径:

bat 复制代码
tracert <目标主机IP>

测试端口:

powershell 复制代码
Test-NetConnection <目标主机IP> -Port 80

十六、总结

route add <目标主机IP> mask <主机掩码> <下一跳网关IP> -p 是一条典型的 Windows 永久静态主机路由命令。

它的核心含义是:

text 复制代码
访问 <目标主机IP> 时,通过 <下一跳网关IP> 这个网关转发,并且重启后仍然保留。

其中:

  • <目标主机IP> 是目标主机
  • <主机掩码> 表示只匹配这个单独 IP
  • <下一跳网关IP> 是下一跳网关
  • -p 表示永久保存

在多网卡、VPN、内网专线、跨网段访问等场景中,route 命令非常实用。配置时重点关注三件事:目标地址是否正确、网关是否可达、路由是否需要永久保留。只要这三点确认无误,大多数静态路由问题都可以快速定位和解决。

相关推荐
qo_tn1 小时前
Windows PowerShell Test-NetConnection 使用详解
操作系统
CoovallyAIHub1 天前
Coco 在病房:一个企业级 AI Agent,如何帮住院医师省下每天三小时的文书时间
操作系统·agent·产品
纵有疾風起1 天前
文件共享与保护:从硬链接到访问控制矩阵
操作系统·文件管理·408·文件共享·硬链接·软链接
噜~噜~噜~2 天前
操作系统笔记-1.1.3 操作系统的特征
笔记·操作系统
我命由我123452 天前
Java 开发 - List subList 方法
java·windows·操作系统·list·intellij-idea·idea·intellij idea
charlie1145141915 天前
Cinux —— 给物理内存建账本:bitmap 物理内存管理器
开发语言·c++·操作系统·开源项目
牢姐与蒯5 天前
Linux基本指令及知识点(一)
linux·操作系统
我命由我123456 天前
Windows 操作系统 - 符号链接
linux·运维·windows·系统架构·操作系统·运维开发·系统