用途与实际影响
这项功能怎样使用
为什么需要它
IPv6 与 IPv4(第四版互联网协议)有独立默认路由。只接管 IPv4 的代理可能无法解释 IPv6 路径,而一刀切禁用所有网卡又会破坏 Tailscale、WSL(Windows 的 Linux 子系统) 或 natpierce。这个入口把只读判断和显式切换分开,并限定真实硬件接口。
举个实际例子
“先看看IPv6是不是另一条出口;确需调整时,只关闭我点名的物理网卡,别碰Tailscale和WSL(Windows 的 Linux 子系统)。”先查状态,再选择Disable、Enable或Toggle及目标;实际修改需要管理员权限,完成后看每块网卡回读。Toggle是整组开关,不是撤销键。
最后我会得到什么
拿到接口绑定、默认路由与实际变更数量。写入失败时,工具尝试按本轮逐网卡原值恢复并核对;有残留就明确待恢复。成功后再次Toggle不能保证回到原先混合状态,常规代理设置Undo也不是IPv6的长期回滚。
正常时
明确目标和操作后,实际修改逐项核对身份、原值与写后结果;最终还要看真实绑定状态,不能仅凭目标值或一句成功文本推定所有网卡都变了。
发现问题时
默认路由存在不等于已证明应用绕过代理。改动失败会尝试恢复本轮已动字段;恢复失败或期间有并发变化时,应先核对现场,不靠再点Toggle掩盖。
入口不可用或证据不足时
没有合格活动物理接口、目标身份或原值变化、缺少实际变更所需管理员权限时,停止对应动作,保留虚拟网卡;未知绑定不当作已关闭。
从哪里开始
在 ProxyClean 的“维护工具”窗口先查看 IPv6 绑定与路由,再明确选择物理网卡和开启、关闭或切换。
需要准备什么
- 要处理的物理网卡(不确定可先查看)
- 只查还是明确开启、关闭或切换 IPv6
- 需验证的应用出口
从开始到拿到结果
- 1
先只读看当前路径
检查选定物理网卡的 IPv6 开关与路线;配置存在不等于浏览器一定从这条路上网。
- 2
明确选网卡和目标状态
本人选只查、开启、关闭或整组切换;Tailscale 等虚拟网卡不随之改变。整组切换不记得原先每块网卡的不同状态。
- 3
动手前再核对
工具保存原设置,执行前确认仍是同一块网卡;身份或原设置变了就停。
- 4
读回并处理失败
逐项读回结果;中途失败尝试按本轮原设置恢复,无法恢复的地方单列。
- 5
再看实际应用出口
在需要的浏览器或终端里验证结果;再次点击切换或用代理撤销,不能保证回到原先状态。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
源项目 2737328 已发布并通过双 PowerShell 版本测试;网页未执行真实 IPv6 切换关键规则与设计选择
只读IPv6-Status与显式IPv6-Toggle分开,普通代理清理不自动改IPv6。
Mode支持Toggle、Enable、Disable,InterfaceAlias可限定明确候选;目标仍须Up、HardwareInterface=true并排除已知虚拟/隧道接口。
每块网卡记录name、index和enabled前像;Toggle按anyOn=>全关、全关=>全开,Enable/Disable使用明确目标值。
实际写入前检查管理员、接口索引/硬件身份与绑定原值;写后逐项验证。ShouldProcess拒绝或无需改变可使changed=0,返回的enabled是目标值,不能单凭它当实际全部状态。
catch只恢复本轮已尝试的绑定并回读,失败列为仍需恢复。该回退没有完整的并发新值CAS保护,也不是持久Undo;不承诺保住所有外来变化。
配置绑定、IPv6默认路由、代理覆盖和应用出口分别验证。
本模块用到的名词
- IPv6 Default Route(IPv6 默认路由)
- 目的前缀为 ::/0 的路由;它与 IPv4 的 0.0.0.0/0 独立,可能形成另一条出站路径。
- HardwareInterface(硬件接口标记)
- Windows 网卡属性,用来把真实硬件上网网卡和 Tailscale、WSL(Windows 的 Linux 子系统)、natpierce 等虚拟接口分开。
专业定义
保留 natpierce、Tailscale、WSL(Windows 的 Linux 子系统) 和其他虚拟网卡;网页刷新绝不自动切换
解决什么
避免把 IPv6 绕行问题误当成代理端口故障,也避免为了排查而把私有组网和虚拟化网络一起关掉。
当前怎样实现
- Get-PCIPv6Snapshot读取Up接口的绑定与::/0;无法读取保留unknown(未验证),internet_reachability与proxy_routing均not_tested。
- Invoke-PCIPv6Change筛选Up且HardwareInterface=true,排除VMware/vEthernet/Loopback/Tailscale/WSL/FlyingBird/natpierce,并按可选InterfaceAlias缩小范围。
- 变更前为每项保存name/index/enabled。Mode显式选择目标,逐项ShouldProcess后才检查管理员并复核接口身份与当前绑定是否仍等于前像。
- 写入前将项加入changed列表,Enable/Disable-NetAdapterBinding后立即回读。失败时按changed列表恢复各自enabled前像并回读;无法恢复抛出明确残留,不再按整组状态反向Toggle。
- 回退分支未为并发改动建立完整CAS/持久撤销;普通代理配置Undo不能替代本次IPv6失败回退或以后明确的恢复动作。
- WhatIf(只读预演)返回preview;其余返回binding_verified、changed与目标enabled,取消项和零变化须结合实际状态解释,外网与代理路线始终not_tested。
执行流程
- 1
先只读查看IPv6绑定和默认路由,明确需要回答的应用出口问题。
- 2
选择Mode和可选InterfaceAlias,枚举合格活动物理接口并保存逐项前像。
- 3
每个实际变更经过ShouldProcess、管理员、接口身份和绑定原值复核。
- 4
写入并立即回读;途中失败恢复本次已尝试字段,回读失败保留恢复缺口。
- 5
报告实际changed数量与逐项结果;目标enabled、默认路由和应用出口不互相代证。
边界
- 不在网页、普通代理清理或只读状态中自动切换IPv6。
- 仅合格活动物理候选参与,虚拟网卡排除;显式别名不绕过硬件与活动条件。
- 本轮失败恢复按逐项原值,不等于持久Undo或完整并发保护;断电、驱动失败和外来修改仍可能留下需要现场处理的状态。
- 改变IPv6绑定不证明代理泄漏消失、DNS正确或公网稳定。
失败与恢复
- 确需变更但不是管理员
- 修改前失败,不靠cmdlet权限报错后继续;无变更或预览不等于已完成修改。
- 没有合格活动物理网卡,或选择后身份/原值变化
- 停止,不换成虚拟接口;重新读取准确目标后再判断。
- 中途写入或回读失败
- 按本轮已尝试项恢复原绑定并核对;有恢复残留则报告,不能用再次整组切换替代。
- 期间出现其他修改或进程/电脑中断
- 当前回退不保证完整保留并发新值或跨进程恢复;先查实际接口及原记录,只做明确的后续恢复。
- 切换后应用仍走意外出口
- 单独检查应用、代理、DNS与路由;不能从一次配置切换推出业务结果。
真实入口
IPv6-Status.ps1只读 IPv6 绑定与默认路由状态
IPv6-Toggle.ps1物理上网网卡 IPv6 整组开关与逐项结果
旧版入口/IPv6状态.bat / 旧版入口/IPv6切换.bat保留兼容的旧双击入口;日常图形维护窗口也提供 IPv6 查看与明确切换
如何验证
- 2026-09-18 网站只读检查过 Mode/InterfaceAlias、前像、管理员、身份/原值复核与恢复代码;2026-09-22 更新的是图形入口语义,仍未执行真实 IPv6 变化。
- 历史证据:源项目已经把该能力发布到 PUBLIC(公开) master 2737328 并远端读回;双测试脚本在 Windows PowerShell 5.1 与 PowerShell 7 通过。
- 历史证据:网站未执行真实 IPv6 切换,也没有用当前应用出口证明切换后的用户结果。
- 历史证据:源857b110移除由IPv6关闭推导代理路径或公网稳定的结论,缺失绑定显示UNKNOWN(未验证);仅源码/隔离验证,没有切换真实网卡。
与其他模块的关系
从 Scripts 吸收进 ProxyClean 的网络路径能力,独立于默认代理残留清理和 WiFi 恢复。
