原因:

  • mstsc远程桌面协议(RDP)是长连接类型,它跟HTTP不一样,需要服务器一直保持连接。

  • frp的心跳认证(authenticate_heartbeats=true)会检查客户端(frpc)是否按时发送心跳包。

  • 如果心跳丢失或超时,frps服务器会主动断开连接,包括TCP会话也一并断掉。

  • mstsc这种长时间没数据变化的远程桌面连接,就很容易在心跳检测阶段被判定为"连接失效" → 直接踢掉!

  • 所以:

  • 开启心跳认证(authenticate_heartbeats = true)之后

  • ➔ mstsc、sftp、ssh、vnc这类长连接应用,容易掉线或者无法连接!

解决方法:

    1. 心跳认证关闭(最简单) authenticate_heartbeats = false
    1. 单独给mstsc开一条不受心跳控制的frpc通道 配置不同分组(复杂)