一.准备事项
如题,需要自己搭建远程桌面服务,我们需要一台有公网IP的服务器和一个内网穿透软件。因为国情原因,我们大部分设备是没有公网IP的,这就意味着,如果我们需要在除了家庭内网外的环境下访问自己的电脑,就需要一台公网服务器用于中转流量,以及一个内网穿透软件用于转发流量。
这里我们采用的内网穿透软件是开源免费的FRP,如果你有其他的内网穿透软件也可以使用,毕竟原理是一样的~只是操作步骤不同。
FRP项目地址如下:
https://github.com/fatedier/frp
二.开始搭建
1.准备好服务器环境
本人服务器为腾讯云轻量应用服务器,系统环境Ubuntu 22.04。
确认好系统版本后,就可以在release中下载FRP的服务器端
按照系统架构,选择自己适合的版本,笔者这里是frp_0.56.0_linux_amd64.tar.gz
下载好后,在服务器端解压
如图,frps为服务器端,frpc为客户端,两个.toml分别为他们的配置文件
这是老版本的配置文件,请勿照抄,否则无法运行!
先解释一下这些配置项::
bind_port:FRP的监听端口
dashboard_****:管理面板的相关设置项
token:用于与客户端的连接校验
详情请见:https://gofrp.org/zh-cn/docs/reference/server-configures/
输入命令
./frps -c ./frps.toml
配置好后,进入下一步客户端配置~
2.准备客户端环境
同样的,我们需要下载相对应客户端系统的FRP软件,我这里是frp_0.56.0_windows_amd64.zip
解压后,可以看到与服务器端一样的目录配置,同样的,我们这里配置客户端配置文件
同样的,这也是老版本的配置文件,请勿照抄,无法运行!
配置好Common内的与服务器端的连接配置与校验后,重点是下面的RDP协议转发设置
首先,RDP是什么呢?请看维基百科https://zh.wikipedia.org/wiki/%E9%81%A0%E7%AB%AF%E6%A1%8C%E9%9D%A2%E5%8D%94%E5%AE%9A
简单来说,RDP就是微软的远程桌面专有协议,它运行在本地的3389端口上,了解了这个之后,我们再把注意力放在配置项上来
local_ip与local_port不需要多说,它们就是需要FRP转发的地址和端口,在这里就是本地运行的RDP协议
remote_port就是我们想要让FRP转发到服务器上哪个端口,这里我设置的是7001
新版本的设置可以在以下地址照猫画虎:https://gofrp.org/zh-cn/docs/reference/client-configures/
设置好后,输入下列命令运行:
./frpc.exe -c ./frpc.toml
如果您是Windows专业版,那么就可以愉快地开始使用公网远程桌面了,地址是:服务器IP:上面的remote_port(记得在防火墙开放端口)
但是如果您是Windows家庭版,很抱歉,您的系统并不开放远程桌面功能,也就是说不支持RDP协议,股本无法使用远程桌面,但是不需要担心,我们还有办法来获得这个功能,请继续往下看~
3.使用RDPWRAP
你可以选择使用原版RDPWRAP,也可以使用国内开发者在其基础上开发的改进版SuperRDP
地址如下:
https://github.com/stascorp/rdpwrap
https://github.com/anhkgg/SuperRDP
下面仅讲解rdpwrap的使用方法
解压后,使用管理员身份运行install.bat,安装后,打开目录下的RDPConf.exe,应该如图所示:
可以看到监听状态是“未监听”,这是因为软件内置的版本ini和我们现在的系统版本不匹配,这时,我们需要到以下地址下载新的rdpwrap.ini,替换到软件安装目录中,(一般在C:\Program Files\RDP Wrapper文件夹中)。
地址:https://github.com/asmtron/rdpwrap
下载
将里面的autoupdate.bat解压到rdpwrap软件目录中,使用管理员身份运行,它会自动帮你更新版本文件,(当然版本文件更新有滞后性,一般来说Windows刚刚更新一个星期之内是没法使用的)
配置好上述软件后,在Windows高级防火墙设置中开放3389端口,重启电脑,此时应该可以开始使用远程桌面了
4.保持服务器端FRP持久运行
要保证服务器端FRP持久运行,我们可以将其注册为Linux服务,实现持久化运行
具体步骤如下:
Linux输入命令
$ sudo vim /usr/lib/systemd/system/frps.service
$ [Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple #启动服务的命令
ExecStart=/#path-to-frp#/frps -c /#path-to-frp#/frps.toml
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
$ systemctl enable frps #启用开机自启动
$ systemctl start frps #启动FRP
Comments NOTHING