为什么 VPN 适配器总是被归入工作配置文件
Windows 把防火墙配置文件绑定到 VPN 适配器上一个很弱的签名。先用策略固定位置,再确认实际生效的是哪个配置文件。
连上公司隧道后,笔记本会悄悄改变性格。文件共享停止,按名称浏览失败,原本监听的程序不再监听,设置里显示该连接为工作或未识别网络。固定这一分类有三种做法,选哪种取决于设备是否受管、标签是否反复回退,以及该适配器上是否真有东西需要被发现。
标签实际控制的是什么
Windows 把每个网络归入一个类别,并据此选择防火墙配置文件。公用配置文件会在考虑你添加的任何规则之前,就拒绝入站共享、发现以及文件和打印机端口,而专用配置文件允许更多。在公开服务之前检查类别的应用,看到的是同一个值。
这是策略选择,不是路由决策。地址可能完全可达,却因为生效的配置文件里没有匹配的规则而被拒绝,任何路由修复都改变不了这点。两个不同的问题,两套不同的工具。把二者混为一谈,就是修复看似有效随后又失效的最常见原因。
类别按网络分别存储,网络则通过签名来识别。在普通局域网里,该签名包含默认网关的硬件地址和连接的 DNS 后缀,而 VPN 适配器通常两者都没有。签名太弱意味着,客户端升级后同一条隧道可能看起来像新网络。
所以标签看起来会自己变化。Windows 并非任性,它只是没能把这条隧道认成上周归类过的那个网络。
决定做法的三个条件
第一个条件是归属。在受管笔记本上,该设置往往被锁定,本地修改会在下次策略刷新时被覆盖。与之对抗只是浪费一个下午;策略才是受支持的通道,也是唯一能守住的通道。
| Approach | Choose it when | What it costs |
|---|---|---|
| Policy via Local Security Policy | The device is managed, or the label must survive reconnects | Requires administrator rights and a policy you can document |
| Editing the profile registry values | You need a one-off on a machine you control | Reverts when the signature changes, and can conflict with policy |
| Leaving it automatic | Nothing on that adapter needs sharing or discovery | A firewall profile that may not match your rule scoping |
第二个条件是复发。如果标签回退过不止一次,说明按网络存储的值正在根据已变化的签名重建,再改一次也维持不住。策略值位于单独的分支,优先级高于 Windows 在适配器每次重连时重建的按用户值。
第三个条件是需要。有些环境确实需要跨隧道做名称解析和发现,这类环境应针对具体地址写窄规则,而不是把整个适配器改成专用。为了一个服务能用而切换类别,正是隧道最终暴露过多东西的原因。
回答这三个条件,选择自然清晰。两条指向策略就是策略,一条指向一次性测试,就是一次你打算丢弃的本地修改。
先固定,再读回实际生效的配置文件
本地安全策略在「网络列表管理器策略」下提供该设置。打开 secpol.msc,展开该节点,打开这条隧道网络的条目,把位置类型设为公用,并设置用户权限使位置不可更改。这些设置进入同一棵树的「策略」分支,所以优先级高于重连会重写的按用户值。
对 VPN 适配器来说公用通常是正确的,因为默认就阻止入站共享和发现。对可能落在不可信网段的隧道,这是保守选择;以后可以用具体规则放宽,而不必改动类别。为了修好一个服务而扩大类别,是一笔不容易反悔的交易。规则几秒就能删掉。
Get-NetConnectionProfile | Select-Object Name, NetworkCategory, IPv4Connectivity
Get-NetFirewallProfile -Name Public | Select-Object Name, Enabled
第一条命令报告的是实际生效的类别,而不是对话框里的那个,决定防火墙行为的就是这个值。第二条确认所应用的配置文件已启用,以及你真正依赖的是哪一个。
注意这对命令证明不了什么。两条命令都不显示某条具体的入站规则是否存在,所以仍然没有响应的服务需要检查规则,而不是再改一次类别。
当症状不是类别时
网络指示器可能滞后于连接,较早的 Windows 版本有一个已记录的缺陷:强制隧道 VPN 显示为受限,但流量仍在流动,而打包的应用拒绝使用它。指示器错了,隧道是通的。
所以要测用户真正在意的东西,而不是图标。先按地址到达服务,再按名称,最后通过应用。每一步都把路由、解析和应用策略分开,类别只在防火墙这一步参与。
如果类别正确而服务仍然失败,就检查规则的作用范围。为专用配置文件写的规则,在适配器变成公用的那一刻就不再匹配,这与从未创建过的规则是两种不同的故障。
记下预期的类别、是否由策略强制,以及需要例外的地址。这条记录能让下一次关于共享消失的报告得到一个关于配置文件和范围的事实,而不是又一个关于隧道的猜测。
决定很小,后果并不小。类别是防火墙的选择器,把它当成装饰,正是让能用的服务变成谜团的方式。