我有一个运行 Hyper-V 虚拟机的远程 Windows 主机,我正在使用流行的服务“Tailscale”充当 VPN 来访问远程网络。出于合规性考虑,我必须每晚让计算机进入睡眠状态(计算机必须处于不可视状态)。我所做的是在该网络的路由器中编写一个 LAN 唤醒 bash 脚本,我将每天早上手动运行它来唤醒计算机。对于上下文来说,这一直很顺利,但下面我将描述问题。
我将通过 RDP 进入主计算机操作系统执行一些管理任务,例如检查 Hyper-V 设置等,然后断开与 RDP 会话的连接。我继续ssh
进入由该 PC 托管的客户 VM,但不到一分钟,我的ssh
会话就断开了。当我尝试通过 RDP 进入计算机时,它也不起作用。我唯一能解决这个问题的方法是返回路由器并运行该 LAN 唤醒脚本,然后一切又恢复正常。这非常烦人,因为我无法在会话上完成任何工作,ssh
否则我会花时间重新配置一切,结果却让它中断。
我研究了 RDP 锁定会话和超时,但我在组策略编辑器中做了所有修改,但仍然不起作用,并且我的虚拟机都断开了连接。
编辑:我还应该提到,我的电源计划设置为永不睡眠、永不关闭显示、链路状态电源管理关闭、选择性 USB 暂停关闭。
答案1
来自 Tailscale 的故障排除指南:
无法在两个节点之间建立 TCP 连接
如果您的节点在管理控制台中可见,并且没有访问规则阻止节点之间的连接,请使用 Tailscale 的三种 ping 类型检查连接级别:
ping 100.x.x.x
告诉操作系统通过 tailnet 发送 ICMP ping
tailscale ping 100.x.x.x
测试两个尾部缩放进程是否可以通信,以及如何通信(直接或中继)
tailscale ping --tsmp 100.x.x.x
发送一个比 更进一步的数据包tailscale ping
,也会经过 WireGuard 级别,但不涉及主机的网络堆栈数据包大小限制也可能导致某些类型的网络连接问题。Tailscale 使用的 MTU 为 1280。如果其他接口可能发送大于此大小的数据包,则这些数据包可能会被悄悄丢弃。可以使用 tcpdump 进行验证。
为了解决这个问题,我们可以将 LAN 级别的 MTU 设置为较低的值,或者使用 MSS(最大段大小)限制。
请注意,Hyper-V VM 接口可能各自有自己的 MTU,具体取决于网络设置