Frp是一款强大的反向代理软件,可以方便地通过一台有公网ip的服务器,将局域网内的设备映射出去,从而实现通过公网访问内网设备,不仅可以用于远程桌面,还可以用于搭建网站,例如租一台高带宽超低配置的服务器,用自己的高配电脑来运行一些比较大型的服务也是可以实现的。本文用于记录部署Frp的流程。

建议配合BBRPlus加速食用,加速效果明显。

利用开源的脚本部署服务端

https://github.com/MvsCode/frps-onekey

Install(安装)

Aliyun安装源

wget https://code.aliyun.com/MvsCode/frps-onekey/raw/master/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install

Github安装源(需要魔法)

wget https://raw.githubusercontent.com/MvsCode/frps-onekey/master/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install

Uninstall(卸载)

./install-frps.sh uninstall

Update(更新)

./install-frps.sh update

Server management(服务管理器)

用法: /etc/init.d/frps {start|stop|restart|status|config|version}
注意:开放用到的安全端口

客户端配置


更新:发现一个更好用的图形化客户端 https://github.com/koho/frpmgr
简单易用,一看就会

1670035495168.webp


到GitHub中下载客户端

https://github.com/fatedier/frp

点击右边的release,选择正确的版本

img

darwin指的是macOS,AMD64就是普通的x86处理器,arm64就是arm架构的处理器,例如m1

这里我用于远程桌面,就直接选择win amd64的下载

解压并编辑frpc.ini配置文件

img

远程桌面示例:

[common]
server_addr = [服务端公网ip]
server_port = [对应服务端的bind_port]
token = [密码]

[RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389[3389是微软远程桌面默认端口]
remote_port = 6001[6001指的是服务器对应的端口]
#没错,服务器哪个端口通到客户机,是由客户端指定的

打开一个cmd窗口,运行frpc.exe

到这里应该就可以远程了

输入服务器ip+remote_port的值即可进入远程桌面

如果连接失败,请检查以下内容

  1. 被控电脑是否已启动frpc.exe
  2. 被控电脑是否已在设置中开启远程桌面功能

STCP协议笔记

stcp协议能够安全地通过中转服务器建立连接,较为麻烦,适合不能公开访问的服务

一共需要有三个程序,服务端(frps),受控客户端和控制客户端(frpc*2)

受控端中的配置文件:

  1. “[secret_rdp]”服务中,以stcp模式,把受控端本地的3389转发到服务器的frps上。
  2. "sk"是stcp服务的密钥,两端中的"sk"不匹配,连接不能成立。
  3. 受控端stcp模式以 服务名的形式匹配连接,不需要映射到公网IP的端口上,也不再需要remote_port。

控制端中的配置文件:

  1. [secret_rdp_visitor]服务中"role=visitor"是指定本机的服务为"访问者"的stcp模式。
  2. "sk"密钥。
  3. 控制端中的“server_name”是指定要连接的 受控端中的服务名,服务名必须一致
  4. 控制端中的"bind_addr"必须是"127.0.0.1"。
  5. “bind_addr”、"bind_port"这两个参数分别是指本机地址和绑定的本机端口。指定本地frpc转发要通过frps和受控端连接的 本地端口

设置frp客户端开机自启动

1.在frpc.exe的目录下新建执行脚本

内容为

@echo off
:home
frpc -c frpc.ini
goto home

命名为start.bat

img

2.打开任务计划程序

img

3.选择创建任务

img

内容按照以下图片填写

img

img

img

img

保存后重启电脑,服务应该是可以正常启动的了

frp服务端配置详解

从github上下载release包,里面同时包含了客户端和服务端,所以复制到客户端服务端各放一份就行。

服务端通过修改frps.ini文件来配置服务端参数,基本配置如下:

配置开头[common]是必须的,表示配置的开始。其他参数含义如下:

配置名 说明
bind_port frp服务端端口号
token 验证密钥
dashboard_port 仪表盘端口号
dashboard_user 仪表盘用户名
dashboard_pwd 仪表盘密码
vhost_http_port 接收http请求的端口号
vhost_https_port 接收https请求的端口号
log_file 日志文件位置
log_level 日志级别
log_max_days 日志最大保存天数

上面的配置就可以启动frp服务端了。frp还有kcp、udp等服务端配置,详细配置请查看文档。http请求在没有备案前,可能无法使用80和443,可以先用其他端口测试。

启动命令(启动不了的话可能要先授权):

也可以做成脚本并添加到开机自启

启动后通过访问仪表盘端口(http://服务器IP:7500)就可以查看frp的工作状态了

frp客户端配置

客户端修改frpc.ini文件来配置,基本配置如下:

[common]配置:

配置名 说明
server_addr 服务端地址
server_port 服务端端口号
token 验证密钥
log_file 日志文件位置
log_level 日志级别
log_max_days 日志最大保存天数

[ssh_test1][http_jenkins]配置名称是自定义的,里面配置了frp的转发类型和端口域名信息

配置名 说明
type 类型,tcp、udp、http、https
local_ip 映射到本地的ip,如果映射到本机填写127.0.0.1,否则填写映射机器的ip
local_port 映射到本地的端口
remote_port 服务端端口号,表示将服务端的此端口映射到客户端,如果是http、https类型不用填写,默认会将服务端配置的http、https端口映射
custom_domains 配置的域名,当时http、https配置时可填,用来表示此配置对应的域名

启动命令(启动不了的话可能要先授权):

也可以做成脚本并添加到开机自启

修改frpc.ini后需要重启客户端,服务端不需要重启。启动后可以通过日志查看服务连接状态,也可以通过服务端的仪表盘查看。

frp的灵活性让它可以有很多应用,可以建网站,可以建服务(比如mysql、redis),还有转发远程控制端口,让你在外面也能远程家中的电脑(比很多连接软件速度快)。

Q.E.D.