由于工作需要,经常会在家期间会使用公司电脑,之前使用花生壳、TeamViewer,不是限制流量就是限制使用次数,经常在最关键的时候宕机,后来发现了frp内网映射的方法。经历了整整一周的时间,终于研究明白使用frp完成远程桌面的连接。

frp是什么

简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务 截至本文完成,frp的最新版本为

,本文使用最新版本。

准备工作

需要准备服务器一台(阿里云、腾讯云都有优惠机器,或者有公网IP的实体机也行)

服务端设置

我们以CentOS服务器为例

SSH连接到服务器之后运行如下命令查看处理器架构,根据架构下载不同版本的frp

输入命令

arch

查看结果,如果是“X86_64“即可选择”amd64”, 运行如下命令,根据架构不同,选择相应版本并进行下载

wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz 

解压命令

 tar -zxvf frp_0.37.0_linux_amd64.tar.gz 

文件夹改个名,方便使用 ,输入以下命令

mv frp_0.37_linux_amd64 frp37 

把解压出来的文件夹复制可以到你想要的目录下,也可以像我一样直接放在用户目录下了,进入该目录

cd frp37 

查看一下文件

 ls -l 

frps 是服务端程序,frps.ini 是服务端配置文件

frpc 是客户端程序,frpc.ini 是客户端配置文件

服务端我们需要修改的是 frps.ini 文件

vim frps.ini (如果没有vim命令可以安装也可直接输入vi) 

这个文件应有如下格式

[common]
bind_port = 7000
token = abc123
dashboard_port = 7500
dashboard_user = user
dashboard_pwd = password
vhost_http_port = 10080
vhost_https_port = 10443

如果没有必要,端口均可使用默认值,token可自行编译

• “bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。

• “token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。

编辑完成后保存(vim不会使用的可以参考我的另外一篇文章)。

之后我们就可以运行frps的服务端了

输入命令

 ./frps -c frps.ini 

如果看到屏幕输出这样一段内容,即表示运行正常,如果出现错误提示,请检查上面的步骤。

2021/06/29 15:58:55 [I] [root.go:200] frps uses config file: frps.ini
2021/06/29 15:58:55 [I] [service.go:192] frps tcp listen on 0.0.0.0:7001
2021/06/29 15:58:55 [I] [root.go:209] frps started successfully

后台运行frp

使用systemctl来控制启动

vim /lib/systemd/system/frps.service

在frps.service(可以命名为xx.service)里写入以下内容

[Unit]

Description=frps service After=network.target syslog.target Wants=network.target

[Service]

Type=simple #启动服务的命令
 
ExecStart=此处写你的frps的实际安装目录/frps -c 此处写你的frps的实际安装目录/frps.ini
  
[Install] 

WantedBy=multi-user.target

使用以下命令启动frps

systemctl start frps

使用以下命令打开自启动

systemctl enable frps

使用以下命令关闭开机自启动

systemctl  disable frps

使用以下命令重启应用

systemctl restart frps

使用以下命令停止应用

systemctl stop frps

使用以下命令查看应用的日志

systemctl status frps

写的frps的后台启动,frpc的话,frps修改为frpc即可。

frpc 客户端

(一) Windows系统

在 Windows上搭建客户端

1.下载文件,下载地址:

,一般选择 windows_amd64

2.解压文件

3. 编辑 frpc.ini

编辑内容如下:

[common]
server_addr = xx.xx.xx.xx
server_port = 7000
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 33389

server_addr 配置为可访问的公网IP

server_port 和服务端(frps.ini)的 bind_port 一致

local_port 为Windows远程桌面的默认端口号 3389

remote_port 为远程桌面共享时使用的端口号

4. 编辑启动文件

方案一:带命令行

新建run.txt文件,复制以下内容

Set ws = CreateObject("Wscript.Shell") 
 ws.run "cmd /c 路径frp_0.37.0_windows_amd64\frpc.exe -c 路径frp_0.37.0_windows_amd64\frpc.ini",vbhide

保存文件

修改后缀名为 run.vbs

双击run.vbs启动frp

方案二:不带命令行

新建run.txt文件,复制以下内容

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
cd frp所在路径
frpc -c frpc.ini
exit

保存文件

修改后缀名为 run.bat

双击run.bat启动frp

6.开启开机自启动

键盘按win+r

输入shell:startup

将启动文件(run.vbs或run.bat)的 快捷方式 放入文件夹中(一定要是快捷方式)如下图

(二) 远程连接

a) 搜索“远程桌面连接

b) 输入 公网 IP

例如:101.11.11.11

c) 输入目标计算机的账号和密码,连接成功

二、MacOS系统

(一)在 Mac 上搭建客户端

1.下载文件,下载地址:

,一般选择darwin_amd64

2.解压文件

3. 配置 frpc.ini

配置内容如下:

[common]
server_addr = xx.xx.xx.xx
server_port = 7000
 
[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 5900
remote_port = 35900
use_encryption = true
use_compression = true

server_addr 配置为可访问的公网IP

server_port 和服务端(frps.ini)的 bind_port 一致

local_port 为 VNC 的默认端口号 5900

remote_port 为屏幕共享时所输入的IP地址的端口号

4. 启动 frpc

在终端,cd进入文件夹

./frpc -c ./frpc.ini

5. 开启电脑共享

系统偏好设置->共享->远程管理

(二)远程连接

1. Mac连接Mac

使用处于公司局域网的 Mac 测试连接

a) 在Mac电脑桌面,使用快捷键 command + k 唤出连接服务器页面

b) 输入 公网 IP 和 remote_port 指定的端口号

例如: vnc://101.11.11.11:35900

C) 输入用户名和密码进行连接即可

d) 连接成功

2. Windows连接Mac

a) 软件:vnc viewer

b) 下载地址:

d) 输入 公网 IP 和 remote_port 指定的端口号

例如: 101.11.11.11:35900

e) 连接成功