原因:
-
mstsc远程桌面协议(RDP)是长连接类型,它跟HTTP不一样,需要服务器一直保持连接。
-
frp的心跳认证(authenticate_heartbeats=true)会检查客户端(frpc)是否按时发送心跳包。
-
如果心跳丢失或超时,frps服务器会主动断开连接,包括TCP会话也一并断掉。
-
mstsc这种长时间没数据变化的远程桌面连接,就很容易在心跳检测阶段被判定为"连接失效" → 直接踢掉!
-
所以:
-
开启心跳认证(authenticate_heartbeats = true)之后
-
➔ mstsc、sftp、ssh、vnc这类长连接应用,容易掉线或者无法连接!
解决方法:
-
- 心跳认证关闭(最简单) authenticate_heartbeats = false
-
- 单独给mstsc开一条不受心跳控制的frpc通道 配置不同分组(复杂)