在 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
虽然 /24 的 metric 更小,但访问 <目标主机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 选择路由时,主要遵循两个原则:
- 最长前缀匹配优先
- 前缀长度相同,再比较
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 命令非常实用。配置时重点关注三件事:目标地址是否正确、网关是否可达、路由是否需要永久保留。只要这三点确认无误,大多数静态路由问题都可以快速定位和解决。