受欢迎的博客标签

国外的远程桌面卡顿原因分析及解决方案

Published

环境

Client:Windows 远程登录Ubuntu系统

Server:Ubuntu Server 有公网固定IP

买的云服务器带宽只有1M,使用frp远程连接windows有卡顿

连接国外VPS远程桌面时会卡顿原因分析

首先分析卡顿是什么因素导致的,总结的原因。

step 1:首先得排除网络原因。

网络延迟: >80ms会导致卡顿。

网络带宽:如果网络本身就比较慢,那么没啥好办法。由于带宽只有1Mbps,实际只有130KB/s,不可能不卡。提升带宽无疑是最佳解决方案;

排除这种情况可以参考下面方法。具体如下:
1、组合键“Win+R”调出运行窗口,输入“mstsc”并回车或确定;
2、在远程桌面连接中输入计算机名称IP并连接;
3、虽然能够正常连接,但是在使用操控中显得特别缓慢;
4、出现这种现象主要是系统设置所致,我们可以通过快捷组合键“Win+R”调出运行窗口并输入“CMD”回车或确定;
5、在弹出CMD命令提示符窗口后并输入“netsh interface tcp set global autotuninglevel=disabled”回车;
6、在输入以上命令后如果提示“命令失败请求的操作需要提升(作为管理员运行)”,此时需要以管理员身份运行,
输入快捷键“Win+X”→“命令提示符(管理员)”以此启动CMD,然后再次运行即可。
其实很简单

不用加钱去升级宽带,如果是阿里云的ECS,那么直接把带宽改成按量付费即可,然后带宽拉倒10M,甚至50M都可以,
而且不用多掏钱,这个是关键,如果你VPS流量不大的话,甚至可能比你原来的1M带宽包月还便宜哦
frp有xtcp模式(点对点内网穿透代理,但是流量不需要经过服务器中转),只要本地有frpc客户端即可,两端使用点对点直连,云服务器只用来做握手链接使用。

这样直连的带宽取决于你和远程windows的带宽,通常来说家庭宽带足够了。

国际出口带宽不足:目前(2019年)大陆总带宽约8700Gbps,均分到8亿网民头上,每人0.01Mbps。当然,现实情况是不可能平分的,大企业等有带宽优先使用权。剩下的普通网民使用更少的带宽份额,自然会卡顿。

网络延迟高:一些国外VPS因地理遥远,延迟高等因素,使用windows 访问3389卡慢。网络延迟 <80m会导致卡顿。

RDP 协议是给 Windows 平台用的.

Step 2:远程服务器的性能太差。1G Ubuntu Server,图形化后非常缓慢。国内 国外都是如此。

 

如果不是通过局域网连接,Linux服务端用rdp应该难以避免卡顿。

 

使用Windows 10 默认的远程桌面工具mstsc,体验非常卡顿,有一款MobaXterm工具值得尝试,可以改善卡顿体验。

原因:Xrdp和Windows原生的rdp是有区别,只有在Lan环境下才能保证流畅使用;Ubuntu的xrdp是开源的,微软的rdp不是开源的,这里面应该是有点问题。xrdp只有在局域网里面才比较流畅。

 

Win10  Update 的升级问题

软件本身的问题

 

 

比如手里有一台国外服务器,安装Windows系统,通过远程桌面连接进行管理。但是线路一般,连接很慢,操作很不流畅。这种情况就可以设置远程桌面走代理,通过网络较好的服务器进行中转,从而加快远程桌面连接速度,大幅减少卡顿。

 

原始环境:国外VPS安装Windows系统,网络状况较差,经常性连接失败,即使连接成功,操作也极其卡顿,无法正常使用。

改善效果:通过代理转发远程桌面后,很快连接成功,操作流畅,与本地桌面操作区别不大。

 

1.windows机器要访问linux server 远程桌面,必须在Windows机器上安装Xmanager,Xming,Windows机器通过X11协议访问linux Server机器

2.分别安装server 和 client端程序,server 和 clent 通过X11协议来通信。如:rdp  vnc

 

 

具体方法:

1.被控端安装轻量级桌面系统xfce

在Ubuntu的Gnome桌面配置x11vnc,但是访问卡顿很厉害。后来通过vncserver+fxce来实现远程访问,流畅度很好

2.Windows 远程桌面客户端修改传输参数设置。比如不绘制桌面背景,降低颜色位数等等.

 

X, Xorg, X11, gdm, gnome, kde, xfce这些的关系是什么?

总是在这些概念里跑来跑去,一层一层的服务关系还是什么?没有系统的介绍。

Linux初学者经常分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系。常常混淆概念,本文解释X,X11,XFREE,WM,KDE,GNOME等之间的关系。

关键在于理清楚远程桌面几个组件xrdp,x11,xfce/gnome 之间层次关系,这样就不会在各种配置文件之间感到混乱。

X是一种协议,X11是X的第11版本。

X11其协议框架为XServer+Xclient+X11协议。

Xorg是安装在linux的应用程序,是对X11的具体实现。

linux上的图形应用程序,如firefox

gnome(xfce等) linux系统上的桌面环境,管理linux上的图形应用程序,如firefox,chrome等

 

第三方桌面(xfce桌面等等)

远程桌面传输协议

xrdp

vnc

2.1 xrdp 监听3389端口

 

2.2 vnc 监听5900端口

 

Ubuntu 提供两个安装版本:

Ubuntu 服务器版

服务器安装 ISO 镜像是 Ubuntu 提供的最小的下载,仅仅32M。它是针对服务器操作优化的操作系统的精简版本。此版本没有 GUI。默认情况下,它完全从命令行运行。比如:安装oracle,也是用命令行解决。

在最小化安装的基础上,用apt-get命令有选择的安装服务和应用。

Ubuntu 服务器桌面版

桌面安装 ISO 镜像相当大,并且有多个在服务器安装 ISO 镜像上没有的软件包。此安装用于工作站或日常桌面使用。

一句话:Ubuntu 服务器版+apt-get install ubuntu-desktop=Ubuntu 服务器桌面版

 

linux本身没有图形界面

linux只是一个基于命令行的操作系统.Unix/Linux这类系统本身没有图形界面,linux现在的图形界面的实现只是linux下的应用程序实现的而已。换言之,图形界面并不是操作系统本身的一部分,Unix/Linux就是一个基于shell命令行的操作系统。

linux系统的大致框架:
Kernel->Shell(bash)->X(xorg)->Desktop Manager

从底层到上层各个调用关系为
cpu——>(GPU2d/3d加速(几个库))——>framebuffer ——>tslib ——>xserver ——>gtk /qt——>gnome/kde

xserver 一般所在目录叫X11,对应的可执行程序叫Xorg,是作为服务器,图形软件界面相当于客户端

linux图形界面层次关系总结

linux本身-->X服务器<-[通过X协议交谈]->窗口管理器(综合桌面环境)-->X应用程序.

ubuntu中的远程桌面组成

x11 负责远程桌面的窗口管理
xfce、gnome之类属于上层的窗口应用层实现。KDE 和GNOME是LINUX里最常用的图形界面操作环境。

xrdp 负责远程桌面的传输协议

 

 

X11

X是协议,并不是具体的某个软件。就像HTTP协议,IP协议,WSGI协议一样都是协议,X11就是X协议的第11版.x11又叫x window。

.
unix系统中是没有图形界面的,只有字符界面。在Macintosh和Windows有图形界面之后,unix系统也想搞一套图形界面系统,然后就有了X11。

Linux上的图形系统都依赖于X。

X11和Windows的图形界面系统是不同的

X Window System 常被简称为X11或X,其功能包括窗口的绘制、移动,以及与鼠标、键盘等输入设备的交互。

X 架构,由「X server」,「X client」,「X 协议」三部分组成:

ubuntu上 的X11采用C/S模型:X server和client位于同一台计算机上。

X server和X client通过X协议进行通信。

X server 管理主机上与显示相关的硬件设置(如显卡、硬盘、鼠标等),它负责屏幕画面的绘制与显示,以及将输入设置(如键盘、鼠标)的动作告知 X client。

 X client (即 X 应用程序) 则主要负责事件的处理(即程序的逻辑)。

举个例子,如果用户点击了鼠标左键,因为鼠标归 X server 管理,于是 X server 就捕捉到了鼠标点击这个动作,然后它将这个动作告诉 X client,因为 X client 负责程序逻辑,于是 X client 就根据程序预先设定的逻辑(例如画一个圆),告诉 X server说:“请在鼠标点击的位置,画一个圆”。最后,X server 就响应 X client 的请求,在鼠标点击的位置,绘制并显示出一个圆。

一个X server 和多个应用程序(client)通信。server接收client的请求绘制窗口,并将来自鼠标、键盘等设备的输入传递给client。 


X server和client可以位于同一计算机上,就类似于平时使用的Windows操作系统;当X server和client不在同一计算机时,使用本地的X server 进行绘制、交互,就变成了远程桌面。

 

一般来说,X的客户端部分一般都使用的是libxcb(更早些时候是xlib)这样的库,其实主要的图形程序也不是直接使用libxcb或者xlib的,而是使用更流行的封装,比如Qt或者gtk。而服务端则是Xorg进程:

gemfield@ThinkPad-X1C:~$ ps -ef |grep Xorg
root      1002   807  0 2月16 tty7    01:23:43 /usr/lib/xorg/Xorg -nolisten tcp -auth 
/var/run/sddm/{ab81e385-8f3c-4f6c-881d-a2c8d17bbbef} -background none -noreset -displayfd 17 vt7


现在的发行版默认情况下,Xorg这个server进程只接收本机的client。但是通过ssh建立隧道进行X协议的转发就可以克服这个障碍。要转发X11,我们需要在ssh的客户端和服务端都开启支持x11的功能,注意了,是ssh的客户端和服务端,从X协议的视角出发,它们正好是相反的。

 

有 了协议就需要具体的软件来实现这个协议。实现这个协议的常用服务器有Xfree86 ,Xorg ,Xnest等。

Xfree86是一个根据实现X 协议的软件。

Xorg是一个根据实现X 协议的软件

X系统是linux的图形系统,而 Xorg是X系统的一种开源实现。

 

gnome, kde, xfce是桌面环境,方便用户使用
icewm,xfwm,kwim,metacity, window maker,compiz是窗口管理器, 用于捕捉窗口事件和响应窗口事件
gdm,xdm,kdm是登录器,桌面环境可有,可无

 


加速方法基本分两类:

1.使用优先权更高的国际线路,比如电信的CN2线路的vps:一般为政企所用,总带宽不足时,电信运营商会优先保障CN2线路的通畅。

个人现在不太容易购买CN2的宽带,但可以购买使用CN2线路的国外VPS服务器来中转,需要专业的网络配置知识。市场上也存在一些第三方的服务。
2.程序优化方法:包括不限于多倍发包等方法,这种属于大大损人,微微利己的加速方法,不但对普通人来说部署麻烦,不安全,而且对整个网络环境是一大危害。

3.xrdp远程桌面协议是windows用的,

企业具体方法

海外设备远程下载目前常用3种方案

方案1部署:

编程软件和调试人员在国内,设备在国外,通过网络建立虚拟连接下载。

缺点:编程软件到PLC延迟大,导致下载不稳定或不流畅,有防火墙阻挡问题。

方案2部署:

调试人员在国内,编程软件和设备在国外,通过远程桌面连接电脑操作。

缺点:远程桌面慢,现场需要安装加密等软件,程序发给客户无法保证加密。

方案2部署:

海外编程云服务器部署创新方案:
部署:编程调试人员在国内,设备在国外,中间搭建海外加速服务器和编程云服务器。

优势:将延迟变成2段,一部分延迟由远程桌面承担,一部分延迟由编程软件到PLC承担。利用远程桌面对延迟不敏感的特性,极大提升远程调试的体验和稳定性。

 

卡顿这个问题两个方式解决,一种是装novnc,用浏览器访问;另外就是在机器上做虚拟化,装一个windows虚拟机,另外装ubuntu,从本地连windows的远程桌面,从这个windows连ubuntu的远程桌面


 

个人具体方法

1.转发或者udp

买了一个 cn2 线路的转接服务,通过CN2网络转发流量实现.1 元 100M,非常流畅

https://www.3389speed.com/

如:用一个香港CN2的代理,然后在链接服务器,应该就稳定了

如: TCP转发   新加坡转发, 然后本地连接新加坡。

软件:

2.使用Xshell中转加速远程桌面RDP

使用Xshell中转加速远程桌面RDP ,让远程桌面不卡变快

https://zvv.me/z/1685.html

https://www.iaspnetcore.com/blog/blogpost/6070d680cdef6f1e2cc7e516/windows-uses-xshell-xmanager-to-speed-up-linux-remote-desktop-rdp

3.HeyTerm 网页终端,支持ssh rdp vnc

4.Nat中转

5.远程桌面本身可以设置网络、颜色、分辨率等一系列参数,全部调低。.rdp文件右键编辑,设置选项.

6.用netch

7.用SocksCap64可代理所有你想加速的程序

8.frp,或者zerotier-one,推荐用前者

使用frp的内网穿透,kcp模式(KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。KCP模式是通过UDP发包的),大概原理就是,国外VPS用frpc客户端对3389穿透使用kcp模式,转发数据到frps服务端。然后frps服务端往返协议传输给终端用户。

跳板,当然就是找台国内VPS,或者新加坡/香港的低延迟当中继,用来搭建frp服务端。宽带没啥要求,用来访问3389 1M都行。

如:阿里云香港+frp

9.端口转发

Linux直接iptables端口转发,用香港做中转块非常多

Windows系统端口转发

win的话一个命令就中转了

http://foreversong.cn/archives/1117

用nginx 转发

https://blog.51cto.com/icenycmh/2117844

 

 

远程连接到Linux服务器Ubuntu的连接方式

远程连接到Linux服务器(本文是Ubuntu),连接主要分为两种:

1.终端命令窗口:通过SSH服务(使用xshell等工具)来远程访问,编写终端命令,不过这个是无界面的。

2.图形界面:通过可视化界面远程访问,像Windows下的自带的远程工具一样,能够以图形化的界面远程操作。

细分为两种:

2.1 通过xrdp远程桌面协议来进行可视化远程操作

2.2 通过vnc远程桌面协议来进行可视化远程操作

 

2.1通过xrdp远程桌面协议来进行可视化远程操作

Xrdp 是 Microsoft 远程桌面协议 (RDP) 的开源实现,允许您以图形方式控制远程系统。使用 RDP ,您可以登录到远程计算机并创建一个真实的桌面会话,就像您已登录到本地计算机一样。

本教程介绍如何在 Ubuntu 18.04 上安装和配置 Xrdp 服务。

原始的unix系统中是没有图形界面的,只有字符界面的。

Step 1:安装桌面环境

 

 

 Linux 服务器没有安装桌面环境。我们的第一步是安装 X11 和一个轻量级桌面环境,它将充当 Xrdp 的后端。

Ubuntu 存储库中有几个桌面环境 (DE) 。我们将选择安装 Xfce 。它是一个快速,稳定和轻量级的桌面环境,非常适合在远程服务器上使用。

以具有 sudo 权限的用户身份键入以下命令,以在服务器上安装 Xfce :

sudo apt update
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Step 2:安装 Xrdp

Xrdp 包在默认的 Ubuntu 存储库中可用。要安装它,请运行:

sudo apt install xrdp

安装过程完成后, Xrdp 服务将自动启动。通过键入以下内容来验证 Xrdp 是否正在运行:

sudo systemctl status xrdp

Output

xrdp.service - xrdp daemon
   Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-07-28 22:40:53 UTC; 4min 21s ago
     Docs: man:xrdp(8)
           man:xrdp.ini(5)

Step 3:配置 Xrdp


Xrdp 配置文件位于 /etc/xrdp 目录中。对于基本的 Xrdp 连接,我们只需要配置 Xrdp 即可使用 Xfce 。为此,请在文本编辑器中打开以下文件:

文件 /etc/xrdp/xrdp.ini

sudo nano /etc/xrdp/xrdp.ini


在文件末尾添加以下行:

#channel.xrdpvr=true
exec startxfce4 


保存文件并重新启动 Xrdp 服务:

#重启xrdp服务 
sudo service xrdp restart

Step 4:检查防火墙


默认情况下, Xrdp 监听 3389/tcp 所有接口上的端口。如果您在 Ubuntu 服务器上运行防火墙(您应该总是这样做),则需要添加一个规则来启用 Xrdp 端口上的流量。

#sudo netstat -plntu
tcp6       0      0 :::3389                 :::*                    LISTEN      12648/xrdp 

 

 

 

2.2 Install VNC Server and access it using any VNC client

VNC 不是加密协议,可以进行数据包嗅探。建议的方法是创建一个 SSH 隧道,该隧道将安全地将来自本地计算机的端口 5901 上的流量转发到同一端口上的服务器。

Client 到VNC官网(https://www.realvnc.com/en/connect/download/viewer/)下载最新的版本

 

2.2.1 VNC运行的工作流程

1)、VNC客户端通过浏览器或VNC Viewer连接至VNC Server。

2)、VNC Server传送一对话窗口至客户端,要求输入连接密码,以及存取的VNC Server显示装置。

3)、在客户端输入联机密码后,VNC Server验证客户端是否具有存取权限。

4)、若是客户端通过VNC Server的验证,客户端即要求VNC Server显示桌面环境。

5)、VNC Server通过X Protocol 要求X Server将画面显示控制权交由VNC Server负责。

6)、VNC Server将来由 X Server的桌面环境利用VNC通信协议送至客户端,并且允许客户端控制VNC Server的桌面环境及输入装置。

 

在Ubuntu 20.04上安装Xrdp服务器(远程桌面)

一、安装桌面环境

Ubuntu 服务器通常使用命令行进行管理,默认没有安装桌面环境。

在 Ubuntu 源仓库有很多桌面环境供你选择。一个选择是安装 Gnome,它是 Ubuntu 20.04 的默认桌面环境。另外一个选项就是安装 xfce。它是快速,稳定,并且轻量的桌面环境,使得它成为远程服务器的理想桌面。

运行下面的命令去安装你选择的桌面环境:

安装 Xfce

sudo apt update
sudo apt install xubuntu-desktop

 

 

 

Generating 2048 bit rsa key...

ssl_gen_key_xrdp1 ok

saving to /etc/xrdp/rsakeys.ini

Webmin 安装了一个基于 Web 的管理界面

Useful links

Ubuntu Linux 的不同安装类型:服务器 vs 桌面

Linux图形界面知识(介绍X、X11、GNOME、Xorg、KDE等之间的关系)

https://vincentruan.github.io/2018/06/17/Xshell%E6%98%BE%E7%A4%BAX11%E5%9B%BE%E5%BD%A2%E5%8C%96%E7%95%8C%E9%9D%A2/

https://www.zhihu.com/question/353758508