前言
想要在外面可以控制家里的电脑,家里的宽带不是公网ip(查看光猫网关信息的广域网地址,再在百度搜ip关键字,出现的ip地址如果和光猫里的广域网地址不一样,那就不是公网ip),之前也用过例如teamviewer、向日葵这类软件,都有个人免费版,不过都有一定的限制,升级的话还挺贵的,所以就用frp和RDClient来实现外网远程控制家里内网的电脑(当然也不是完全免费的)。
以下统一名称(我使用的设备):
访问用户:控制端(华为手机鸿蒙系统,iPad)
公网服务器:服务器端(腾讯轻量应用服务器)
内网电脑:客户端(windows 11 电脑)
一、frp和RDClient
1.frp
frp 是一个专注于内网穿透的高性能的反向代理应用,可以让内网的设备暴露在互联网中,使得外网的设备可以访问。原理是通过拥有公网ip的服务器作为中继,外网访问用户可以通过这个服务器来访问内网的设备(例如pc、nas等)
2.RDClient
RDClient其实是windows自带的远程桌面连接软件,这样就不需要下载其他软件,可以访问远程电脑上的资源。而且在局域网内连接很方便,只需要输入客户端的ip地址、用户名和密码,就能轻松连接,并且延迟很低。
官网地址:RDClient
二、购买服务器
因为需要公网服务器作为中继,所以需要买一个公网服务器。这里我买了腾讯的轻量应用服务器,首先是轻量应用服务器的带宽高,远程控制时候不会太卡,300G流量也够用,相比云服务器虽然不限流量,可是带宽低,提高带宽价格又挺高的。其次是腾讯在做秒杀活动,只需要40块一年,果断买了。我的服务器装的是Centos 7.9,宝塔Linux面板,就是腾讯默认首选的,用Xshell来和服务器连接,用Xftp上传文件到服务器。
二、下载安装frp
1.服务器端
- 上传frp文件并解压缩,编辑配置文件
首先下载对应版本的frp,因为我的服务器是Linux,所以我下载的frp_0.40.0_linux_amd64.tar.gz
frp下载:frp release各版本下载地址
下载完后把压缩包上传到服务器
把压缩包解压,解压后的文件夹改名为frp,并移动到/usr/local目录下,因为习惯放在这里,也是可以改的
tar -zxvf frp_0.40.0_linux_amd64.tar.gz
mv frp_0.40.0_linux_amd64.tar.gz frp
mv frp /usr/local
这里我们只需要服务端的配置,所以把客户端的配置都删除
rm frpc
rm frpc.ini
接下来,编辑服务端的配置文件,转到frp目录下并用vim打开frps.ini文件
cd /usr/local/frp
vim frps.ini
编辑frps.ini里的内容:
[common]
#设置监听端口
bind_port = 7000
#设置连接服务器的授权码,客户端需要用
token = 12345
#设置frp服务器的控制页面端口
dashboard_port = 7500
#frp服务器控制页面的用户名和密码,这个是可选的
#dashboard_user = abc
#dashboard_pws = 1234567
- 在防火墙打开需要的端口
要将frps.ini文件里的端口打开,先是在系统防火墙里打开
firewall-cmd --zone=public --list-ports 查看已经打开的端口
firewall-cmd --zone=public --query-port=7000/tcp 查看7000端口是否打开
firewall-cmd --zone=public --add-port=7000/tcp --permanent 打开7000端口
firewall-cmd --zone=public --add-port=7500/tcp --permanent 打开7500端口
firewall-cmd reload
firewall-cmd --zone=public --list-ports 再次查看已经打开的端口,确认是否已开启
在系统防火墙开启了需要端口后,打开腾讯轻量应用服务器的控制台,在面板的防火墙选项卡里添加两条规则,开启7000和7500端口
然后开启frps
./frps -c frps.ini
如果出现下面的提示,说明启动成功
- frp后台运行并自启动
为了可以让frp在服务器后台自动启动运行,先Ctrl+C停止运行当前的frps,后进入system文件夹里,创建一个frp.service文件
cd /etc/systemd/system
vim frp.service
frp.service文件内容,其中ExecStart里的路径是上面加压缩后frp文件夹的路径
[Unit]
Description=frp service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
Restart=on-failure # or always, on-abort, etc
[Install]
WantedBy=multi-user.target
保存退出后,输入以下命令
systemctl daemon-reload
systemctl enable frp 下次开机后,自动启动frp
systemctl start frp 开启运行frp
systemctl status frp 查看frp状态
systemctl restart frp 如果修改了frp配置后,使用此命令重启frp
- 打开frp控制面板测试
在浏览器输入“公网ip:7500”(绑定了域名的就输入域名),如果在之前的frps.ini文件里设置了控制面板的用户名和密码,就会弹出登录框,登录后显示frp控制面板就说明frp运行正常
2.客户端
- 下载frp文件并解压缩,编辑配置文件
同样下载frp文件并解压缩,放在自己习惯的位置并把文件夹改名为frp
这里是在客户端,同样的也可以把frps和frps.ini文件删除,编辑frpc.ini
[common]
server_addr = 175.178.178.23
server_port = 7000
token = 12345 #服务器端frps.ini里的token,要一致
#[]随意取名,3389是windows远程控制的端口
[rdclient]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3389
#以下是根据需要可选的
#配置网络文件共享系统
[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7002
#通过ssh远程连接
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
- 测试是否配置成功
在frp文件夹里打开windows terminal(powershell),运行frpc.exe
打开后输入运行命令,如果出现下图的运行结果,说明frp运行成功
.\frpc.exe -c frpc.ini
- frp设置后台运行,并开机自启动
上面的运行方法,命令行对话框关闭后frp程序也会关闭,而且不能开机自启动。为了让frp程序可以在后台运行,并且可以开机自启动,这里用winsw程序把frp变成系统服务。【winsw下载地址】
下载完成后,把exe文件放在frp文件夹目录下面,创建一个winsw.xml文件并编辑
<service>
<id>frp</id>
<name>frp</name>
<description>用frp内网穿透</description>
<executable>frpc</executable>
<arguments>-c frpc.ini</arguments>
<logmode>reset</logmode>
</service>
同样在此目录下打开windows terminal(powershell),输入以下命令
winsw install
接着win+R打开运行对话框,输入service.msc命令打开本地服务管理,找到frp服务并打开属性,左以下选择后并启动服务
成功启动后,在服务器端查看frp状态,看到下面的记录,就说明客户端frp和服务器端的frp连接成功
三、控制端设置并测试连接
访问用户可以使用多种设备访问,这里用windows电脑、iPad和安卓手机来测试。
-
windows电脑
在开始菜单搜索远程控制,出现如下对话框,输入服务器端的公网ip,输入用户账户就可以直接连接
-
ipad
在Appstore下载安装Microsoft远程桌面app,添加电脑,输入用户账户就可以连接
-
安卓手机
在应用市场或Google play下载“Microsoft Remote Desktop”app,同样的在添加连接那里输入公网ip和用户账号就可以连接,
这里提供app的下载资源:
https://pan.baidu.com/s/1RDsMRkKQYTK5l_YlVdmuXA?pwd=mcky
提取码:mcky
上传到CSDN的资源
四、总结
这里有几点要注意的:
-
服务器端的frp文件除了利用上传这个方法,还可以用wget命令,直接在服务器端下载
-
windows系统客户端还需要打开允许远程协助和远程桌面
打开控制面板,选择系统和安全,点击允许远程访问,在打开的对话框里把远程协助选上,下面的远程桌面选择允许远程连接此计算机,并勾上仅允许运行使用网络级别身份验证
然后点击选择用户,这里显示的账号,就是控制端需要输入的账号,密码是此账号建立时设置的密码,非PIN码
-
目前github因为一些原因访问和下载的速度都很慢,这里推荐一个下载的网站,只需要把下载链接放进去,这个网站会下载保存,然后再从这个网站上下载下来会快挺多的。[下载网站]
最后,在同一局域网内远程控制电脑,只需要知道客户端在局域网的ip地址,就可以直接连接,可以在路由器里静态绑定客户端的ip,这样避免了因为客户端自动获取ip而造成ip地址更改。而如果需要在外网远程控制电脑,除非有公网ip,否则就需要公网服务器作为桥梁,利用frp的内网穿透技术,把内网客户端映射到服务器端,从而暴露在公网上使控制端连接控制。