窗口打开了,要求输入凭据,随后一片空白或直接断开,用户便报告 VPN 破坏了远程访问。有时隧道本身正常,会话却从未开始。知道应用究竟在哪里运行,正是区分这些情况的关键,因为隧道和桌面会话提供的东西不同,出问题的地方也不同。

隧道为你的设备提供一条进入网络的路径。桌面会话则给你一块接在另一台机器上的屏幕和键盘。

症状取决于应用在哪里运行

通过隧道直接访问时,应用运行在你自己的设备上,它的请求经允许的私有路由到达文件共享或内部站点。如果该应用失败,你看到的是名称解析或路由问题,本地程序在其他方面则一切正常。

在远程会话中,应用运行在远端机器上,你的设备只收到它的画面。这彻底改变了故障清单:会话主机必须可用,接受连接的服务必须在监听,你的账号必须同时在隧道和主机上获得授权。隧道登录成功之后窗口仍然空白,通常意味着第二次身份验证从未通过。

两种设计可以为同一个用户共存。常见的安排是先建立隧道,再在其中运行桌面会话,所以部分成功很容易被误读成某一个功能坏掉了。

性能取决于工作负载,而不是名称

直接经隧道打开大文件时,文件要在网络上传输,看得见的延迟来自传输而不是点击。在远程会话中,文件可能根本不会离开数据中心,传输被取消,取而代之的是屏幕刷新和输入延迟。两种设计无所谓谁更快,因为它们搬运的东西不同。在挑选指标之前,先问用户真正在等的是什么量。

当有人报告卡顿时,这个差别很关键。打字时觉得迟钝的远程会话对往返延迟敏感,而经同一条隧道直接打开文件则对吞吐量敏感。要测量具体任务,而不是一个笼统的速度数字,并且测试用户抱怨的那项操作。

在高延迟路径上做交互式工作,屏幕变化越多就越糟,所以滚动文档和盯着静止窗口的感觉并不一样。如果抱怨的是响应性而不是完成时间,那么值得改动的变量就是工作负载所在的位置。

出故障时,逐层分别检查

从内向外逐层推进,并记录每一步返回什么,因为一次性重启所有东西会毁掉证据。先确认隧道已建立,再确认私有路由可以解析,再确认会话主机接受连接,最后确认你的账号在该主机上被允许。

Test-NetConnection -ComputerName 172.20.8.30 -Port 3389
Resolve-DnsName workstation-14.corp.example
qwinsta /server:172.20.8.30

路由有回应和端口被拒绝是两种不同的结果,而端口有回应但凭据被拒绝则是第三种。如果部署使用的是受管访问网关而不是通向办公室的隧道,就遵循那套架构,不要因为私有路由失败就把桌面服务暴露到公网。

加密和授权也是两件不同的事。隧道加密的是通路,会话协议负责在主机上验证你的身份,应用还可能再验证一次。通过第一项检查并不能说明第三项,而 从网络外部访问远程电脑的指南 描述了可用部署所需的各个部分。

决定哪些东西必须留在组织内部

认定远程会话会把每份文档都留在数据中心并不安全。剪贴板共享、重定向驱动器和打印在策略允许时都能在两个环境之间搬运信息,隧道也不限制已授权用户从可达的共享中复制哪些文件。如果要求是隔离,就去核查会话实际的传输控制,而不是相信架构图。在替对方做出承诺之前,先问会话所有者启用了哪些重定向。

会话的生命周期是另一个意外。关闭窗口可能让会话继续在主机上运行,所以失去隧道也许只是让它暂时不可达。学会在共享机器上结束工作的正规做法,事后去检查主机,而不是假定已经注销。

记录哪一层失败了、你改了什么、用户应该重新测试什么。这份记录比一个谁也复现不了的解决方案更有价值。

相关文章