当前位置: 首页 > news >正文

无网络时自动切换备用网络环境

目录

  • 背景
    • 目标
    • 为什么需要做自动网络切换
    • 网络切换手段
  • 网络环境
  • 实现思路和代码
  • 部署脚本开机自动执行
  • 附录
    • 连接两个网络时的路由问题

背景

目标

学校实验室有两个网络环境,我电脑使用网线连接稳定但低速的网络A,使用WiFi连接高速但不稳定的网络B。因此,我希望平时使用网络B,当网络B不稳定时自动切换到网络A。

为什么需要做自动网络切换

由于网络B需要使用帐号登录,其不稳定主要是由于间歇性登录过期导致的。被退出登录时虽然网络有连接,但无互联网访问,这导致Windows不会自动切换到另一个网络中。

而且由于我经常需要远程连接到该电脑,因此必须寻找一种自动的方法解决该问题。

我也考虑过使用自动登录脚本,但问题有概率是网络B本身的故障,这时候自动登录就也会失效,因此切换到网络A是更加稳妥的方案。

网络切换手段

可选的手段很多,例如:关闭WiFi适配器、断开当前WiFi、路由表删掉到WiFi接口的路由、控制路由跃点等,我选择使用控制路由跃点的方式。

选择该方式主要是为了远程连接时能够更方便地重新登录和使用网络B。

网络环境

连上有线网络A和无线网络B并登录后,通过ipconfig指令看到网络配置情况如下:

以太网适配器 Ethernet:连接特定的 DNS 后缀 . . . . . . . :本地链接 IPv6 地址. . . . . . . . : IPv4 地址 . . . . . . . . . . . . : 192.168.183.62子网掩码  . . . . . . . . . . . . : 255.255.255.0默认网关. . . . . . . . . . . . . : 192.168.183.254无线局域网适配器 WiFi6:连接特定的 DNS 后缀 . . . . . . . :本地链接 IPv6 地址. . . . . . . . : IPv4 地址 . . . . . . . . . . . . : 172.27.60.26子网掩码  . . . . . . . . . . . . : 255.255.0.0默认网关. . . . . . . . . . . . . : 172.27.255.254

route print指令查看路由表,呈现如下关键信息:

IPv4 路由表
===========================================================================
活动路由:
网络目标   网络掩码    网关       		接口   			  跃点数
0.0.0.0    0.0.0.0    192.168.183.254   192.168.183.62    25
0.0.0.0    0.0.0.0    172.27.255.254    172.27.60.26      50

默认情况下,有线网络A(192.168)的跃点数相较于无线网络B(172.27)更低,因此Windows会优先使用有线网络A。

要优先使用无线网络B,但保持有线网络A的连接,最方便的方法是减少无线网络B的跃点数。
我们将无线网络B的跃点数设置为小于25,即可优先使用无线网络B:

# 需要管理员权限
Get-NetIPInterface -InterfaceAlias WiFi6 | Set-NetIPInterface 21

或者在控制面板中修改:
在这里插入图片描述

实现思路和代码

通过跃点数可以轻松控制多个网络的优先级,因此当无线网络B连接异常时,我们通过调整跃点数使得优先使用网络A。

以下为通过Powershell脚本的实现:

# auto_swich.ps1
# 定义WiFi和以太网的接口名称
$wifiInterface = "WiFi6"
$ethernetInterface = "Ethernet"# 定义网络异常时WiFi的跃点值(Metric)
$wifiMetricHigh = 10000# 定义检查的目标地址 (阿里云DNS)
$testAddress = "223.6.6.6"# 定义检查间隔(秒)
$checkInterval = 60 * 3# 循环检查
while ($true) {Write-Host "正在检查网络连接状态..." -ForegroundColor Cyan$wifiConnected = Test-Connection -ComputerName $testAddress -Count 1 -Quiet -ErrorAction Stopif (!$wifiConnected) {Write-Host "无网络访问,设置WiFi高跃点..." -ForegroundColor YellowGet-NetIPInterface -InterfaceAlias $wifiInterface | Set-NetIPInterface -InterfaceMetric $wifiMetricHigh}Write-Host "等待 $checkInterval 秒后重新检查..." -ForegroundColor CyanStart-Sleep -Seconds $checkInterval
}

部署脚本开机自动执行

由于脚本需要使用管理员权限,因此使用任务计划程序部署。
Win+R打开运行,输入taskschd.msc确定,打开任务计划程序窗口,按照下图将该脚本添加为开机启动的计划任务。
在这里插入图片描述
在这里插入图片描述

附录

连接两个网络时的路由问题

连接两个网络时,通过设置路由控制访问网络资源时使用的网络出口,例如:

# 需要管理员权限
route add 192.168.0.0 mask 255.255.0.0 192.168.183.254 -p  # 访问内网设备走192.168.*
route add 192.168.167.115 mask 255.255.255.255 172.27.255.254 -p  # 172.27校园网登录页面
route add 18.0.0.0 mask 255.0.0.0 192.168.183.254 -p  # 访问ieeexplore.ieee.org走192.168教育网认证
http://www.lryc.cn/news/517807.html

相关文章:

  • 电脑32位和64位之区别(Difference between 32-Bit and 64 Bit Computers)
  • 系统思考—结构影响行为
  • 【算法不挂科】算法期末考试【选择题专项练习】<多单元汇总>
  • 2025.1.8(c++对c语言的扩充——堆区空间,引用,函数)
  • 如何将Yum源修改为本地挂载的ISO镜像
  • salesforce如何在系统里保存密码
  • 函数提升+上下文+内存清理及释放
  • 计算机网络之---计算机网络的性能评估
  • Unity学习之UGUI进阶
  • 深度学习领域创新黑马!频域特征融合新突破
  • 路由器的转发表
  • 用Cline打造你的智能搜索助手:Tavily Search MCP集成指南
  • HTML+CSS+JS制作中华传统美食主题网站(内附源码,含5个页面)
  • 黄仁勋CES 2025演讲重点内容
  • TVbox 手机、智能电视节目一网打尽
  • sys.dm_exec_connections:查询与 SQL Server 实例建立的连接有关的信息以及每个连接的详细信息(客户端ip)
  • kubesphere前端源码运行
  • 分布式主键ID生成方式-snowflake雪花算法
  • 深入理解感知机(Perceptron)算法
  • 操作系统——死锁与饥饿
  • 【算法】字符串算法技巧系列
  • Vue中el-tree结合vuedraggable实现跨组件元素拖拽
  • 湘潭大学人机交互复习
  • 基于ADAS 与关键点特征金字塔网络融合的3D LiDAR目标检测原理与算法实现
  • Kivy App开发之UX控件DropDown下拉列表
  • 机器学习模型评估指标
  • C# 特性
  • Reactor测试框架之StepVerifier
  • k8s helm部署kafka集群(KRaft模式)——筑梦之路
  • unity action委托举例