RasMan 与 RemoteAccess 不是同一个服务
前者管理客户端连接,后者是服务器路由器角色。在启用一个它从来不需要的功能之前,先比对该客户端的第一条错误。
RasMan 与 RemoteAccess 在服务列表里紧挨着出现,二者都提到远程访问,但职责不同。前者管理客户端连接,后者是路由和远程访问的服务器角色。把它们当作可以互换,正是笔记本为了修一个客户端问题却被启用服务器功能的由来。一个服务可能名字相关而功能无关,因此在工单里,名字是最没有用的证据。
两个名字,两份不同的工作
RasMan 是处理客户端侧远程访问的连接管理器,包括电话簿和内置 VPN 客户端所用的连接机制。RemoteAccess 是路由和远程访问服务,在充当路由器的机器上提供路由、NAT 和服务器侧远程访问。Microsoft 的 RAS 概述 描述的就是这种客户端模型,而拨号 VPN 的工作站只需要两者中的前者。安装或启动后者并不会让前者变得更好。
只读盘点不花任何代价,几秒钟就能回答第一个问题。两项读取都跑一遍,并把输出放在客户端错误旁边,因为服务不存在和服务已停止是两个不同的起点。
Get-Service -Name RasMan,RemoteAccess -ErrorAction SilentlyContinue | Select-Object Name,Status,StartType
Get-VpnConnection | Select-Object Name,ConnectionStatus,ServerAddress
手动启动类型的已停止 RasMan,是被策略关掉的服务,这是管理问题而不是缺失的功能。缺少 RemoteAccess 是工作站的正常状态,完全说明不了客户端的问题。连接列表之所以重要,是因为它显示在任何服务被归咎之前,Windows 是否相信某个配置文件存在。
客户端真正依赖什么
要确认失败客户端真正的依赖和它的第一条错误,而不是最后一条。被策略停止的服务只是若干可能之一。两个客户端争抢默认路由、把专用 DNS 施加到错误的适配器、旧产品残留的过滤驱动,以及本不该共存的安全策略,各自都会产生自己的错误。这些都不是靠启动类型修复的。这份清单也说明了启动类型为什么是糟糕的第一步,因为一个对话框可以掩盖五种不同的原因。
第一条错误比最后一条更重要,因为其后的一切都是后果。要在改动之前记录它,否则证据会随症状一起消失。
在这里启用 RRAS 为什么什么也修不了
打开路由角色会增加一个服务、一组注册表配置,在某些版本上还会弹出初始配置提示。这些都不提供客户端依赖,而且在受管笔记本上可能违反基线。某个人发帖说某个服务碰巧修好了一台机器,这不能成为在整个机群中启用路由功能的政策。改动服务需要角色和部署文档达成一致,然后才有人去动它。
保留那份配置的是系统所有者,而不是碰巧读到帖子的人。机群范围内的基线漂移很难收回,每启用一个角色,都是下一次审计必须交代的一件事。如果这个角色确实属于这台机器,那个决定早在几个月前就该做了。
和一台正常工作的机器比较
要和运行相同客户端版本、相同预期配置文件的正常机器比较,而不是与桌面快捷方式同名的机器比较。两个已连接的指示并不代表一套一致网络策略,检查受支持的共存也是比较的一部分。把两台机器上的客户端版本、错误、存在的服务和路由记录下来。然后再判断差异是服务、路由、策略还是版本。
相似的名字只是该往哪里看的线索,价值仅此而已。诊断需要第一条错误、一台对照机器,以及一份早于改动的记录。