Windows 操作系统添加路由完整教程 - 命令行 + 图形界面多种方法详解

前言

在 Windows 操作系统中,路由表决定了网络数据包的转发路径。当需要访问特定网段、配置多网卡环境、搭建 VPN 或解决网络连通性问题时,经常需要手动添加路由。本文详细介绍 Windows 系统添加路由的多种方法,包括命令行(route 命令、netsh 命令、PowerShell)和图形界面操作,适用于 Windows 10/11、Windows Server 2016/2019/2022 等版本。

适用系统:Windows 10/11、Windows Server 2016/2019/2022

权限要求:管理员权限

一、路由基础概念

1.1 什么是路由表

路由表是操作系统中存储的网络路径信息表,当计算机需要发送数据包时,会根据目标 IP 地址查询路由表,确定从哪个网卡发出、通过哪个网关转发。

1.2 路由表关键参数

参数 说明 示例
目标网络 要访问的目标网段 192.168.10.0
子网掩码 定义网络范围 255.255.255.0
网关 下一跳路由器 IP 192.168.1.1
接口 本地网卡接口 192.168.1.100
跃点数 路由优先级(值越小优先级越高) 10

1.3 常见应用场景

  • 多网卡环境 - 内网和外网同时访问
  • VPN 连接 - 指定流量通过 VPN 隧道
  • 网络隔离 - 不同部门访问不同网段
  • 故障排查 - 解决网络连通性问题
  • 负载均衡 - 多出口路由选择

---

二、查看当前路由表

2.1 使用 route print 命令

# 以管理员身份打开命令提示符(CMD)
# 方法 1:Win+X → Windows PowerShell(管理员)
# 方法 2:搜索"cmd" → 右键"以管理员身份运行"

# 查看完整路由表
route print

# 查看 IPv4 路由表
route print -4

# 查看 IPv6 路由表
route print -6

# 示例输出:
# ===========================================================================
# 接口列表
#  15...00 0c 29 1a 2b 3c ......Intel(R) Ethernet Connection
#  12...00 0c 29 1a 2b 3d ......VMware Virtual Ethernet Adapter
# ===========================================================================
# IPv4 路由表
# ===========================================================================
# 活动路由:
# 网络目标        网络掩码          网关       接口   跃点数
#           0.0.0.0          0.0.0.0      192.168.1.1    192.168.1.100     25
#         10.0.0.0    255.0.0.0        192.168.1.2    192.168.1.100     10
#       192.168.1.0    255.255.255.0  在链路上         192.168.1.100    281

2.2 使用 netsh 命令

# 查看 IPv4 路由表
netsh interface ipv4 show route

# 查看 IPv6 路由表
netsh interface ipv6 show route

# 示例输出:
# 发布  类型    跃点数  预  前缀              索引  下一个跃点
# 否    手动    256    否  0.0.0.0/0          15    192.168.1.1
# 否    手动    256    否  10.0.0.0/8         15    192.168.1.2

2.3 使用 PowerShell

# 查看 IPv4 路由表
Get-NetRoute -AddressFamily IPv4

# 查看 IPv6 路由表
Get-NetRoute -AddressFamily IPv6

# 查看特定接口的路由
Get-NetRoute -InterfaceIndex 15

# 查看详细信息
Get-NetRoute | Format-Table -AutoSize

# 示例输出:
# ifIndex DestinationPrefix  NextHop         RouteMetric PolicyStore
# ------- -----------------  -------         ----------- -----------
# 15      0.0.0.0/0          192.168.1.1     25          ActiveStore
# 15      10.0.0.0/8         192.168.1.2     10          ActiveStore

2.4 路由表字段说明

字段 说明
网络目标 目标网络地址或主机地址
网络掩码 子网掩码,定义网络范围
网关 下一跳地址,"在链路上"表示直连
接口 本地网卡 IP 地址
跃点数 路由优先级,数值越小优先级越高
ifIndex 接口索引号

---

三、使用 route 命令添加路由

3.1 添加临时路由(重启后消失)

# 基本语法
route add 目标网络 mask 子网掩码 网关

# 示例 1:添加到达 10.0.0.0/8 网段的路由
route add 10.0.0.0 mask 255.0.0.0 192.168.1.2

# 示例 2:添加到达特定主机的路由(/32)
route add 172.16.1.100 mask 255.255.255.255 192.168.1.1

# 示例 3:添加路由并指定跃点数
route add 192.168.10.0 mask 255.255.255.0 192.168.1.3 metric 10

# 示例 4:添加默认路由(所有流量通过此网关)
route add 0.0.0.0 mask 0.0.0.0 192.168.1.1

# 验证添加结果
route print | findstr "10.0.0.0"
route print | findstr "192.168.10.0"

3.2 添加永久路由(重启后保留)

# 使用 -p 参数创建永久路由
route -p add 目标网络 mask 子网掩码 网关

# 示例 1:永久路由到 10.0.0.0/8
route -p add 10.0.0.0 mask 255.0.0.0 192.168.1.2

# 示例 2:永久路由并指定跃点数
route -p add 192.168.10.0 mask 255.255.255.0 192.168.1.3 metric 10

# 示例 3:永久路由到多个网段
route -p add 172.16.0.0 mask 255.255.0.0 192.168.1.2
route -p add 172.17.0.0 mask 255.255.0.0 192.168.1.2
route -p add 172.18.0.0 mask 255.255.0.0 192.168.1.2

# 验证永久路由
route print
# 永久路由会在路由表中显示为"永久路由"部分

3.3 指定网络接口

# 先查看接口索引号
route print
# 或使用
netsh interface ipv4 show interfaces

# 示例输出:
# Idx     Met         MTU          状态                名称
# ---  ----------  ----------  ------------  ---------------------------
#  15          25        1500  connected     Ethernet
#  12          25        1500  connected     VMware Network Adapter

# 使用 if 参数指定接口
route add 10.0.0.0 mask 255.0.0.0 192.168.1.2 if 15

# 永久路由指定接口
route -p add 10.0.0.0 mask 255.0.0.0 192.168.1.2 if 15

3.4 修改现有路由

# 修改路由的网关
route change 10.0.0.0 mask 255.0.0.0 192.168.1.5

# 修改路由的跃点数
route change 10.0.0.0 mask 255.0.0.0 192.168.1.2 metric 20

# 同时修改网关和跃点数
route change 10.0.0.0 mask 255.0.0.0 192.168.1.5 metric 15

3.5 删除路由

# 删除特定路由
route delete 10.0.0.0

# 删除后验证
route print | findstr "10.0.0.0"

# 删除所有路由(谨慎使用)
route -f

# 删除默认路由
route delete 0.0.0.0

---

四、使用 netsh 命令添加路由

4.1 添加临时路由

# 基本语法
netsh interface ipv4 add route 目标网络/掩码长度 接口名称 网关

# 示例 1:添加路由
netsh interface ipv4 add route 10.0.0.0/8 "Ethernet" 192.168.1.2

# 示例 2:指定跃点数
netsh interface ipv4 add route 192.168.10.0/24 "Ethernet" 192.168.1.3 metric=10

# 示例 3:使用接口索引号
netsh interface ipv4 add route 10.0.0.0/8 15 192.168.1.2

# 验证
netsh interface ipv4 show route

4.2 添加永久路由

# netsh 添加的路由默认是永久的
# 使用 store=persistent 参数明确指定

netsh interface ipv4 add route 10.0.0.0/8 "Ethernet" 192.168.1.2 store=persistent

# 查看持久化路由
netsh interface ipv4 show route

4.3 删除路由

# 删除路由
netsh interface ipv4 delete route 10.0.0.0/8 "Ethernet"

# 或删除所有到特定网络的路由
netsh interface ipv4 delete route 10.0.0.0/8

---

五、使用 PowerShell 添加路由

5.1 添加临时路由

# 基本语法
New-NetRoute -DestinationPrefix 目标网络/掩码长度 -NextHop 网关 -InterfaceIndex 接口索引

# 示例 1:添加路由
New-NetRoute -DestinationPrefix "10.0.0.0/8" -NextHop "192.168.1.2" -InterfaceIndex 15

# 示例 2:指定跃点数
New-NetRoute -DestinationPrefix "192.168.10.0/24" -NextHop "192.168.1.3" -RouteMetric 10 -InterfaceIndex 15

# 示例 3:添加默认路由
New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.1.1" -InterfaceIndex 15

# 验证
Get-NetRoute -AddressFamily IPv4 | Where-Object {$_.DestinationPrefix -like "10.0.0.0*"}

5.2 添加永久路由

# PowerShell 添加的路由默认是永久的
# 使用-PolicyStore ActiveStore 参数

New-NetRoute -DestinationPrefix "10.0.0.0/8" -NextHop "192.168.1.2" -InterfaceIndex 15 -PolicyStore ActiveStore

# 永久保存
New-NetRoute -DestinationPrefix "10.0.0.0/8" -NextHop "192.168.1.2" -InterfaceIndex 15 -PolicyStore PersistentStore,ActiveStore

5.3 修改路由

# 修改路由的跃点数
Set-NetRoute -DestinationPrefix "10.0.0.0/8" -NextHop "192.168.1.2" -RouteMetric 20

# 修改路由的网关
Set-NetRoute -DestinationPrefix "10.0.0.0/8" -InterfaceIndex 15 -NextHop "192.168.1.5"

5.4 删除路由

# 删除路由
Remove-NetRoute -DestinationPrefix "10.0.0.0/8" -NextHop "192.168.1.2" -Confirm:$false

# 删除所有到特定网络的路由
Get-NetRoute -DestinationPrefix "10.0.0.0/*" | Remove-NetRoute -Confirm:$false

# 删除默认路由
Remove-NetRoute -DestinationPrefix "0.0.0.0/0" -Confirm:$false

---

六、图形界面添加路由

6.1 通过"路由和远程访问"添加(服务器版)

# 仅适用于 Windows Server 版本

# 步骤 1:打开路由和远程访问
1. 打开"服务器管理器"
2. 工具 → 路由和远程访问

# 步骤 2:配置路由
1. 展开服务器名称
2. 展开"IPv4"
3. 右键点击"静态路由"
4. 选择"新建静态路由"

# 步骤 3:填写路由信息
- 接口:选择网卡
- 目标:10.0.0.0
- 网络掩码:255.0.0.0
- 网关:192.168.1.2
- 跃点数:10

# 步骤 4:确认添加
点击"确定"保存

6.2 通过注册表添加永久路由

# 警告:修改注册表有风险,请先备份!

# 步骤 1:打开注册表编辑器
Win+R → 输入 regedit → 回车

# 步骤 2:导航到路由配置项
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes

# 步骤 3:添加字符串值
1. 右键 → 新建 → 字符串值
2. 名称:自定义名称(如 Route1)
3. 值数据:目标网络,掩码,网关,跃点数,接口
   示例:10.0.0.0,255.0.0.0,192.168.1.2,10,15

# 步骤 4:重启计算机生效

6.3 通过批处理脚本添加

# 创建批处理文件 add_routes.bat
@echo off
echo 正在添加路由...

route -p add 10.0.0.0 mask 255.0.0.0 192.168.1.2 metric 10
route -p add 172.16.0.0 mask 255.255.0.0 192.168.1.2 metric 10
route -p add 192.168.10.0 mask 255.255.255.0 192.168.1.3 metric 20

echo 路由添加完成!
pause

# 以管理员身份运行批处理文件
# 右键 → 以管理员身份运行

---

七、实战场景示例

7.1 场景 1:双网卡同时访问内网和外网

环境说明:

  • 网卡 1(Ethernet):192.168.1.100/24,网关 192.168.1.1(外网)
  • 网卡 2(Ethernet 2):10.1.1.100/24,网关 10.1.1.1(内网)
  • 需求:默认走外网,内网网段(10.x.x.x、172.16.x.x)走内网
# 以管理员身份打开 CMD

# 1. 查看当前路由表
route print

# 2. 删除默认路由(如果有冲突)
route delete 0.0.0.0

# 3. 添加默认路由(外网)
route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 25

# 4. 添加内网路由
route -p add 10.0.0.0 mask 255.0.0.0 10.1.1.1 metric 10
route -p add 172.16.0.0 mask 255.255.0.0 10.1.1.1 metric 10
route -p add 172.17.0.0 mask 255.255.0.0 10.1.1.1 metric 10

# 5. 验证
route print
ping www.baidu.com  # 测试外网
ping 10.1.1.50      # 测试内网

7.2 场景 2:VPN 流量分流

环境说明:

  • 本地网络:192.168.1.0/24
  • VPN 网络:10.8.0.0/24,网关 10.8.0.1
  • 需求:访问公司内网(192.168.100.0/24)走 VPN,其他走本地
# 连接 VPN 后执行

# 1. 查看 VPN 接口索引
route print | findstr "10.8"

# 2. 添加公司内网路由(通过 VPN)
route -p add 192.168.100.0 mask 255.255.255.0 10.8.0.1 metric 1

# 3. 添加其他需要通过 VPN 访问的网段
route -p add 192.168.101.0 mask 255.255.255.0 10.8.0.1 metric 1
route -p add 192.168.102.0 mask 255.255.255.0 10.8.0.1 metric 1

# 4. 验证
tracert 192.168.100.50  # 应该通过 VPN

7.3 场景 3:多出口负载均衡

# 两条宽带出口,根据目标网段选择出口

# 出口 1:电信,网关 192.168.1.1
# 出口 2:联通,网关 192.168.2.1

# 电信路由(访问电信资源)
route -p add 61.135.0.0 mask 255.255.0.0 192.168.1.1 metric 10
route -p add 61.136.0.0 mask 255.255.0.0 192.168.1.1 metric 10

# 联通路由(访问联通资源)
route -p add 123.125.0.0 mask 255.255.0.0 192.168.2.1 metric 10
route -p add 123.126.0.0 mask 255.255.0.0 192.168.2.1 metric 10

# 默认路由(主出口)
route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 25

7.4 场景 4:访问特定服务器

# 需要访问特定服务器,通过指定网关

# 访问数据库服务器
route -p add 192.168.50.100 mask 255.255.255.255 192.168.1.254 metric 1

# 访问文件服务器
route -p add 192.168.50.101 mask 255.255.255.255 192.168.1.254 metric 1

# 访问备份服务器
route -p add 192.168.50.102 mask 255.255.255.255 192.168.1.254 metric 1

---

八、路由持久化方法

8.1 不同方法的持久性对比

方法 默认持久性 永久保存参数
route add 临时(重启消失) -p
netsh add route 永久 store=persistent
PowerShell New-NetRoute 临时 -PolicyStore PersistentStore

8.2 开机自动添加路由脚本

# 创建 PowerShell 脚本 C:\Scripts\Add-Routes.ps1

# 等待网络初始化
Start-Sleep -Seconds 10

# 添加路由
New-NetRoute -DestinationPrefix "10.0.0.0/8" -NextHop "192.168.1.2" -InterfaceIndex 15 -PolicyStore ActiveStore
New-NetRoute -DestinationPrefix "172.16.0.0/12" -NextHop "192.168.1.2" -InterfaceIndex 15 -PolicyStore ActiveStore

# 记录日志
Add-Content -Path "C:\Logs
outes.log" -Value "$(Get-Date): Routes added successfully"

# 创建任务计划
# 1. 打开任务计划程序(taskschd.msc)
# 2. 创建基本任务
# 3. 触发器:启动时
# 4. 操作:启动程序
#    程序:powershell.exe
#    参数:-ExecutionPolicy Bypass -File "C:\Scripts\Add-Routes.ps1"
# 5. 勾选"使用最高权限运行"

---

九、故障排查

9.1 路由不生效

# 1. 检查路由表
route print
netsh interface ipv4 show route

# 2. 检查路由优先级(跃点数)
# 跃点数小的路由优先
route print | findstr "10.0.0.0"

# 3. 检查网关是否可达
ping 192.168.1.2

# 4. 检查防火墙
netsh advfirewall show allprofiles

# 5. 测试路由
tracert -d 10.1.1.50
pathping 10.1.1.50

9.2 路由冲突

# 查看是否有重复路由
route print | findstr "10.0.0.0"

# 删除冲突路由
route delete 10.0.0.0

# 重新添加(指定不同跃点数)
route -p add 10.0.0.0 mask 255.0.0.0 192.168.1.2 metric 10

9.3 重启后路由丢失

# 确保使用了 -p 参数
route -p add 10.0.0.0 mask 255.0.0.0 192.168.1.2

# 检查注册表
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes

# 或使用 PowerShell 永久保存
New-NetRoute -DestinationPrefix "10.0.0.0/8" -NextHop "192.168.1.2" -PolicyStore PersistentStore

9.4 常见错误代码

错误信息 原因 解决方法
The route addition failed: 5 权限不足 以管理员身份运行
The parameter is incorrect 参数格式错误 检查 IP、掩码格式
The route already exists 路由已存在 先删除再添加
The system cannot find the file specified 接口不存在 检查接口名称/索引

---

十、最佳实践建议

10.1 路由规划

  • 提前规划好网段和网关,避免冲突
  • 使用合理的跃点数,确保优先级正确
  • 记录所有路由配置,便于维护和故障排查

10.2 安全建议

  • 谨慎添加默认路由(0.0.0.0/0)
  • 定期审查路由表,删除无用路由
  • 生产环境变更前在测试环境验证

10.3 文档管理

  • 保存路由配置脚本
  • 记录变更时间和原因
  • 建立路由配置文档

10.4 监控告警

  • 监控关键路由状态
  • 配置路由变更告警
  • 定期检查路由可达性

---

总结

Windows 系统添加路由有多种方法,每种方法都有其适用场景:

方法 优点 缺点 推荐场景
route 命令 简单直观
兼容性好
功能相对基础 快速配置
临时测试
netsh 命令 功能丰富
支持持久化
语法稍复杂 服务器配置
批量管理
PowerShell 功能强大
易于自动化
需要 PowerShell 环境 自动化脚本
批量部署
图形界面 直观易用
无需记命令
效率低
不适合批量
初次配置
不熟悉命令行

推荐做法:

  • ✅ 临时测试使用 route add
  • ✅ 永久配置使用 route -p add 或 PowerShell
  • ✅ 批量部署使用 PowerShell 脚本
  • ✅ 重要变更先备份路由表
  • ✅ 生产环境在维护窗口操作

掌握这些方法后,你可以灵活应对各种网络路由配置需求!🚀


注:本文基于 Windows 10/11 和 Windows Server 2019/2022 编写。不同版本可能在命令和界面上略有差异,请根据实际情况调整。生产环境操作前建议在测试环境验证。

发表回复

后才能评论