thumbnail
远程桌面(RDP)的迷思

0x00说在前面

新学期,在社团活动室组了一台主机。打算开个远程桌面,这样我在宿舍的话,也可以访问我的主机了。

0x01方案选择

无非就以下几个方案:

  1. 第三方远程桌面软件/穿透软件来突破内网限制。这个的话属实没有必要,因为我就在学校里有这个需求,否定。
  2. IPv4+端口映射。想啥呢,暴露在校园网下,这是要给x1c的大哥们冲业绩吗?否定。
  3. IPv4+proxifier代理。这个方案是我一开始最认可的,当我搭好socks5隧道时发现,我确实可以访问192.*.*.*下的内网设备,包括我的网页服务器,pt下载机,以及别人乱七八糟的服务端API数据库接口Nas啥的,结果轮到我的主机的rdp端口,他就不行了。初步猜测可能和Windows的防火墙策略有关,但是我在网上找了半天没找到和我一样情况的人,少部分人思路和我一样,但是他们似乎没出现这么神奇的现象,否定。
  4. IPv6。这个方案是肯定可以的——我现在用的就是。学校里有自己的校园网和运营商网络,运营商网络是没法通过DHCP分配IPv6的,但是校园网是可以的。另外,社团的网也是可以的。

IPv6的方案好就好在,我校的校园网虽然晚上会断网,但是校园网可以在未登录的情况下分配一个教育网段的地址。就算这个不行,也可以通过连接手机热点的方式,获取IPv6。注意,我校校园网不支持SLACC,安卓设备无法通过连接校园网WiFi来获取v6地址。

至于客户端,我在Windows端选择的是mstsc(就是专业版自带的那个)。安卓用的是谷歌商店的RD客户端(同样微软出品)。注意,这个软件微软商店也有,但是不推荐,因为延迟远不如原生的mstsc。

0x02实测表现

总的来说还是非常不错的,44ms。其实这是最高延迟了,测到过26ms的。

0x03优化

1.突破30fps限制

打开Windows注册表编辑器 (regedit.exe),找到以下子项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations

右击新建一个DWORD(32-bit)值的项,改名为DWMFRAMEINTERVAL,修改为十进制下的15。

为什么?因为这个时候的帧率限制为1000/15,也就是66FPS。

结束后保存重启,可以远程桌面登录后,通过一些测试fps的网站来测试,你会发现fps不是之前30而是60或者更高了。

2.显卡加速

打开远程主机上的组策略(Win+R打开运行,输入gpedit.msc

依次找到计算机配置->管理模板->Windows组件->远程桌面服务->远程桌面会话主机->远程会话环境

在右边选择将硬件图形适配器应用于所有远程桌面服务会话

同时也可以打开配置远程桌面连接的H.264/AVC硬件编码

其实这没啥太大用处,具体原因接着说。

0x04游戏玩家的十字路口

首先我们要明白:微软RDP是不支持独显的。有需要远程玩游戏的话,需要第三方的远程桌面、远程遥控软件才行。

在我们连接到远程桌面时,打开任务管理器,会发现独显是可以正常显示的。但是这并不代表你可以打游戏或者开blender啥的。那么这是怎么回事呢?

如果你在这时打开游戏,你会发现一些游戏确实可以打开。比如我打开文明6,帧率只有30+,cpu频率暴增到3.99GHz,占用暴增40%,显卡摆烂在3%一动不动,这和在本机打开后的表现天差地别。而像apex,那就根本打不开了。注意,这和有无集显没有关系,我是12400F,照样可以显示,说明是有个虚拟显卡的。

当然,NVidia也注意到了这一点,于是推出了nvidia-opengl-rdp——恕我直言,这个驱动几乎没什么作用……都什么年代了,还在用传统OpenGL。DirectX有人说是原生支持了,我觉得他在放屁,要是真的原生支持我怎么可能出现以上情况?

官网下载需要登陆注册developer账号,我找到个第三方的百度网盘下载,不大就0.3M大小。

链接:https://pan.baidu.com/s/1HKy\_Q\_rZx1oy3kq4XO0AuA  
提取码:pntw

至于想玩游戏嘛……可以试试其他的软件,可能在延迟方面不如微软原生的mstsc,也有是游戏识别的限制。这些东西,等我以后试到了再做反馈吧。

上一篇
下一篇