啊,时隔几个月又和大家见面,晚间闲来无事想和大家聊聊 ipv6 的事情。今年初,我搞了一套软路由玩,性能好,功能也非常不错。但是,由于一些特殊需求,比如搭建 Minecraft 服务器等,运营商在家庭宽带中不再提供公网 IPv4 地址,因此我开始使用 IPv6 来提供一些远程访问服务。可以说,我是一个常用 IPv6 的用户了。
然而,自从我开始使用软路由 (其实之前也用硬路由) 后,我一直遇到一个问题:每隔几天,IPv6 就会自动失效。具体表现为:虽然有前缀,但后缀变成了 “::1″,完全无法通信。我查看了 Windows 网络适配器的详细信息,没有发现任何问题。我尝试过各种方法,比如打开 SLAAC 等,但始终无济于事。很明显,我认为这是 Windows 的问题。
久病成医后,我找到了解决这个问题的好办法——关闭 IPv6 协议然后重新开启。
这样就能手动刷新 IPv6 的 IP 地址,操作后就能正常使用 IPv6 了。但是,如果一直采用这种方法,那么在无人值守等情况下,设备就会在茫茫的互联网中消失不见。于是,我开始思考如何自动化处理 IPv6 失效的问题。
基本原理很简单:每隔一段时间自动 ping 一个可靠的 IPv6 地址,如果无法 ping 通,则关闭网卡再重新开启,实现自动刷新的目的。如果可以 ping 通,则自动循环保持连接。
这样就能保证 IPv6 的持续连接。我动手写了一个批处理脚本,利用 Windows 最底层的批处理功能实现了自动重启网卡的功能。如果你也遇到了类似的问题,欢迎访问我的网站,了解脚本原理并下载体验。
嗨欢迎来到我的网站,那么正如前面所说,我们来介绍下我们编写的脚本的原理并在此分享给需要的您:
首先我的代码基于:利用 bat 定时检查网关是否 ping 通,判断断开就重启网络
这位老哥的脚本非常奈斯,因此我只需要把脚本略微调整即可:对于他原本的脚本我将时间调整为每五分钟重复检测三次,ping 地址改为中国科技大学的 ipv6 测速网站达到稳定访问的目的,同时网卡变量设置为 「WINNET 」因此你只需要更改脚本中涉及到”WINNET” 的字段改为你自己的网卡↓

随后使用管理员权限打开即可自动运行 (当然如果出现卡住不动的情况,鼠标右键点击窗口内最小化到后台即可) 以下为整个文件的源代码↓
@echo off
:open
echo 开始 ping ipv6 线路
ping test6.ustc.edu.cn
if %ERRORLEVEL%==0 goto Ok
if %ERRORLEVEL%==1 goto No
exit
:No
COLOR 74
cls&echo V6 状态异常 %date%_%time%
:: 失败后输出日志
echo V6 连接失败 %date%_%time%>>netconnect.txt
echo 禁用指定网络
netsh interface set interface "WINNET" admin= DISABLED
ping 127.0.1 /n 5 >nul
:: 开放指定网络
netsh interface set interface "WINNET" admin= enabled
ping 127.0.1 /n 20 >nul
goto open
:Ok
COLOR E2
cls&echo V6 状态正常 %date%_%time%
ping 127.0.1 /n 300 >nul
goto open
::ver1.5 由空耀软件部门制作的很好用的小工具,喜欢请多多点赞~
值得一提的是,为了方便查询连接失败日志,本人修改了文件名,在该文件的同目录下如果连接失败会生成一个,名叫 「netconnect.txt 」的日志记录,标注了时间和状态的信息以方便后期维护~
以下是编译好的文件 (改过文本格式以兼容中文命令显示) 推荐下载:
神秘代码:l2o2mi
发表回复