Loading... # 前言 最近电脑一直放在图书馆使用,电脑不在身边时想着可以通过ipad远程控制电脑,正好之前[Soarli大佬](https://blog.soarli.top/)使用frp帮我解决了一个难题,所以打算使用frp搭建远程桌面连接,现将过程进行记录,以供参考。 [FRP (Fast Reverse Proxy)](https://github.com/fatedier/frp) 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP , UDP , HTTP , HTTPS 协议。下载地址[https://github.com/fatedier/frp/releases](https://github.com/fatedier/frp/releases) 目前(2023年11月22日)最新版本为`v0.52.3`,在最新版本中,取消了原有 `ini` 配置文件,改为 `toml` 新格式,在配置语法上与`ini`文件有区别。 * Ubuntu 22.04 * Windows 11 * 具有公网IP的服务器 # 过程 **注意**:使用frp进行远程桌面连接之前请先确保Windows远程连接已打开,且在局域网下可正常通过IP进行连接 ## 一、服务器开放安全组 在服务器中开放将会用到的端口,如7000、7500等,如果图省事,也可以直接开放端口范围 ![](https://blog.leesong.top/usr/uploads/2023/11/330327316.png) ## 二、准备frp文件 **1、在frp下载地址中选择对应的服务端与客户端版本** ![](https://blog.leesong.top/usr/uploads/2023/11/2570930823.png) **注意**:frp每个版本解压后都会有frps与frpc两种文件,frps用于服务端,frpc用于客户端,我们下载解压后只需要取我们对应的一种文件即可。即: **在windows中保留frpc.exe和frpc.toml文件** **在linux中保留frps和frps.toml文件** ## 三、服务端配置frps 在linux任意路径下新建frp文件夹,在frp文件夹中进行frps.exe和frps.toml的配置 可以把frp文件下载到本地再手动上传需要的文件到linux,也可以在linux中下载解压 **1、配置frps** 进入frp目录,修改frps.toml文件 ```bash sudo vim frps.toml ``` 以下为基础可配置项,还有更多配置项可以参考[官方文档](https://gofrp.org/zh-cn/)或[示例文件](https://github.com/fatedier/frp/blob/dev/conf/frps_full_example.toml) ```bash [common] bindPort = 7000 vhostHTTPPort = 7001 dashboard_port = 7500 dashboard_user = "admin" dashboard_pwd = "123456" auth.method = "token" auth.token = "123456" ``` * `[common]`: 这是一个配置部分的标题,表示下面的参数是全局通用的配置。 * `bindPort`: 这是frp服务器监听的端口号,用于与客户端建立连接。 * `vhostHTTPPort`: 这是虚拟主机HTTP访问的端口号,用于通过HTTP协议访问frp服务器上的虚拟主机。 * `dashboard_port`: 这是frp仪表盘(Dashboard)的端口号,用于通过Web界面管理和监控frp服务器。 * `dashboard_user`: 这是frp仪表盘的用户名,用于登录仪表盘进行管理操作。 * `dashboard_pwd`: 这是frp仪表盘的密码,用于与用户名一起进行身份验证。 * `auth.method`: 这是用于认证的方法,可以设置为 "token",表示使用令牌进行认证。 * `auth.token`: 这是用于认证的令牌,客户端需要提供正确的令牌才能与服务器建立连接。 配置完毕后保存退出 **2、启动frps** ```bash ./frps -c frps.toml ``` 启动无报错后,访问frp面板端口`IP:7500`,输入用户名及密码,出现以下即成功 ![](https://blog.leesong.top/usr/uploads/2023/11/3211316605.png) **3、使用 systemd 管理 frps 服务** 在 Linux 系统下使用 systemd 来管理 frps 服务,包括启动、停止、配置后台运行和设置开机自启动。 **安装 systemd** ```bash # 使用 yum 安装 systemd(CentOS/RHEL) yum install systemd # 使用 apt 安装 systemd(Debian/Ubuntu) apt install systemdapt install systemd ``` **创建 frps.service 文件** 使用文本编辑器 (如 vim) 在 `/etc/systemd/system` 目录下创建一个 `frps.service` 文件,用于配置 frps 服务。 ```bash sudo vim /etc/systemd/system/frps.service ``` **在frps.service写入内容** ```bash [Unit] # 服务名称,可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /path/to/frps -c /path/to/frps.toml [Install] WantedBy = multi-user.target ``` **systemd命令** ```shell # 启动frp sudo systemctl start frps # 停止frp sudo systemctl stop frps # 重启frp sudo systemctl restart frps # 查看frp状态 sudo systemctl status frps ``` **设置 frps开机自启动** ```bash sudo systemctl enable frps ``` **取消frps开机自启动** ```bash systemctl disable frps ``` ## 四、Windows配置frpc ### 1、配置frpc.poml文件 **在任意文件夹解压缩文件包,保留`frpc.exe`及`frpc.toml`文件** ![](https://blog.leesong.top/usr/uploads/2023/11/4007894580.png) **使用记事本打开frpc.toml** 基础配置如下 ```bash serverAddr = "你的公网IP" serverPort = 7000 log.to = "./frpc.log" log.level = "info" log.maxDays = 3 [[proxies]] name = "control" type = "tcp" localIP = "127.0.0.1" localPort = 3389 remotePort = 7001 auth.method = "token" auth.token = "123456" ``` * `serverAddr`: 这是你的公网IP地址,它是frp服务器的地址,用于与客户端建立连接。 * `serverPort`: 这是frp服务器监听的端口号,客户端需要使用相同的端口号与服务器通信。 * `log.to`: 这是frp日志文件的路径和名称。 * `log.level`: 这是frp日志的级别,可以设置为 "info"、"warn"、"error" 或 "debug",用于控制日志的详细程度。 * `log.maxDays`: 这是frp日志文件保留的天数,超过指定天数的日志文件将被删除。 下面是一个frp配置文件中的`[[proxies]]`部分的解释,这是用于定义代理的配置块: * `name`: 这是代理的名称,可以根据需要进行命名。 * `type`: 这是代理的类型,对于TCP代理,可以设置为 "tcp"。 * `localIP`: 这是frp客户端监听的本地IP地址,通常设置为 "127.0.0.1",表示本地回环地址。 * `localPort`: 这是frp客户端监听的本地端口号,例如3389表示RDP(远程桌面协议)的默认端口。 * `remotePort`: 这是frp服务器上用于转发流量的远程端口号,客户端的流量将被转发到该端口。 * `auth.method`: 这是用于认证的方法,可以设置为 "token",表示使用令牌进行认证。 * `auth.token`: 这是用于认证的令牌,客户端需要提供正确的令牌才能与服务器建立连接。 使用CMD命令启动: ```bash frpc -c frpc.toml ``` ### 2、设置开机自启动 **创建bat文件** 在frpc目录下新建`start_frp.bat`文件,文件内容为: ```bash @echo off cd /d E:\frpc # 此处修改为你的frp目录 start frpc.exe -c frpc.toml ``` * `@echo off`:关闭命令回显,以使输出更清晰。 * `cd /d E:\frpc`:切换到 frpc.exe 所在的目录。 * `start frpc.exe -c frpc.toml`:启动 frpc.exe 并指定配置文件。 **设置自动任务** 1. 使用快捷键 Win + X 打开“高级用户命令提示符”或“PowerShell”。 2. 在命令提示符或 PowerShell 窗口中,输入 `taskschd.msc` 并按 Enter 打开任务计划程序。 3. 在任务计划程序窗口的右侧,点击“创建任务…”。 4. 在“常规”选项卡中,输入任务的名称,例如“Frp Autostart”,确保选择了“为此任务使用最高权限”,勾选“允许运行任务不管用户是否登录”。 5. 切换到“触发器”选项卡,点击“新建…”。在“开始任务”下拉菜单中选择“开机时”或“登陆时”。 6. 切换到“操作”选项卡,点击“新建…”,将操作设置为运行 `start_frp.bat` 文件。 7. 确认保存 **测试启动** 接下来就可以测试开机启动或者登录启动,在我的测试中开机启动无法正确启动frp服务,虽然在启动记录中是启动成功的记录,而登录启动则是可以成功启动。 经过第二天的详细测试,搞清楚了:原因是在开机启动时并没有及时联网,frp服务启动了但是由于网络断开,这次的启动并没有成功连接,导致失败。 改进方法:设置开机后1min启动,之后15min内每5min启动一次。 **2023年12月14日更新完美自启动解决方案** 由于网络是否连接会影响到frp的正常启动,我们需要确保在网络连通时启动该`.bat`脚本,因此我们可以在原先的脚本中增加网络连通性判别,当能ping通`www.bing.com`时启动该脚本,否则将每5s重试一次,这样就可以在系统启动触发器下进行执行完美自启动方案,测试有效🎉🎉 ``` @echo off :CHECK_INTERNET ping www.bing.com -n 1 > nul if %errorlevel% equ 0 ( echo Internet connection detected. cd /d E:\frpc start frpc.exe -c frpc.toml ) else ( echo Waiting for internet connection... timeout /t 5 > nul goto CHECK_INTERNET ) ``` **另**:在`frpc.toml`文件中,若token配置项填写在`[[proxies]]`之前则会出现无法验证token错误,这与官方参考示例相悖,在本篇文章中我将token配置项移到`[[proxies]]`之后则可以正常验证token。 ![](https://blog.leesong.top/usr/uploads/2023/11/3383329092.png) ## 五、通过ipad进行远控 ipad下载安装 **RD Client** ,通过访问 **IP:端口** 即可将远程控制转发到本机**3389**端口进行远程控制 方法参考: > [从任何地方远程桌面连接到家里的电脑](https://zhuanlan.zhihu.com/p/400086370) # 参考资料 > [frp文档](https://gofrp.org/zh-cn/) > [frps_full_example.toml示例文件](https://github.com/fatedier/frp/blob/dev/conf/frps_full_example.toml) > [Toml中文文档(龙腾道-译)](https://github.com/LongTengDao/TOML/blob/%E9%BE%99%E8%85%BE%E9%81%93-%E8%AF%91/toml-v1.0.0.md) 最后修改:2024 年 01 月 04 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 3 如果觉得我的文章对你有用,请随意赞赏
2 条评论
[...]前言frp 是一个可用于内网穿透的高性能的反向代理应用,分为服务端frps和客户端frpc,支持 tcp, udp, http, https 协议。详情可浏览该项目的Github主页一面名心镜大佬说frp内网穿透这个很好用,让我试试,跟着他的教程弄,排查了好久的问题,还是有点出入,所以还是记录一下吧工作原理1.服务端运行,监听一个主端口,等待客户端的连接;2.客户端连接到服务端的主端口,同时告诉服[...]
[...]前言frp 是一个可用于内网穿透的高性能的反向代理应用,分为服务端frps和客户端frpc,支持 tcp, udp, http, https 协议。详情可浏览该项目的Github主页一面名心镜大佬说frp内网穿透这个很好用,让我试试,跟着他的教程弄,排查了好久的问题,还是有点出入,所以还是记录一下吧工作原理1.服务端运行,监听一个主端口,等待客户端的连接;2.客户端连接到服务端的主端口,同时告诉服[...]