frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。 可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
开源地址:FRP github网址
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间
- 代理组间的负载均衡
- 端口复用,多个服务通过同一个服务端端口暴露
- 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作
一、服务端部署
Docker部署
1.debian、ubuntu、Centos系统一键安装docker
curl -fsSL get.docker.com -o get-docker.sh
curl -sSL https://get.daocloud.io/docker | sh
sudo sh get-docker.sh --mirror Aliyun
2.创建frp.ini文件并创建目录
mkdir /frp
vim /frp/frps.ini
3.编辑frps.ini配置文件
[common]
bind_port = 7000
# 启用面板
dashboard_port = 7500
# 面板登录名和密码
dashboard_user = admin
dashboard_pwd = xxxxxx
# 使用http代理并使用80端口进行穿透
vhost_http_port = 80
# 使用https代理并使用443端口进行穿透
vhost_https_port = 443
# 日志路径
log_file = ./frps.log
# 日志级别
log_level = info
# 日志最大保存天数
log_max_days = 2
# 认证超时时间
authentication_timeout = 900
# 认证token,客户端需要和此对应
token=123123123
# 最大连接数
max_pool_count = 5
max_ports_per_client = 0
官方发现发布 0.52.0 版本后,取消了原有 INI 配置文件,改为 TOML 新格式,完整frps配置
bindPort = 7000
auth.method = "token"
auth.token = "12345678"
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin123456"
4.拉取镜像
docker pull snowdreamtech/frps:latest
5.启动docker容器
#0.52.0版本之前
docker run --restart=always --network host -d -v /frp/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps
#0.52.0版本之后
docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps
6.直接访问dashboard,输入账号密码
可以直接访问,说明部署成功
本地文件部署
1、下载程序包
前往GitHub Releases页面下载:
根据自己实际情况选择,我的是x64的windows系统,服务器也是x64架构,选择图中两项。玩客云是armv7架构,选择linux_arm包
解压如下:
2、配置文件
官方发现发布 0.52.0 版本后,取消了原有 INI 配置文件,改为 TOML 新格式,完整frps配置,完整frpc配置
# frps.toml
bindPort = 7000 # 服务端与客户端通信端口
auth.token = "public" # 身份验证令牌,frpc要与frps一致
transport.tls.force = true # 服务端将只接受 TLS链接
# Server Dashboard,可以查看frp服务状态以及统计信息
webServer.addr = "0.0.0.0" # 后台管理地址
webServer.port = 7500 # 后台管理端口
webServer.user = "admin" # 后台登录用户名
webServer.password = "admin" # 后台登录密码
# frpc.toml
transport.tls.enable = true # 从 v0.50.0版本开始,transport.tls.enable的默认值为 true
serverAddr = "x.x.x.x"
serverPort = 7000 # 公网服务端通信端口
auth.token = "public" # 令牌,与公网服务端保持一致
[[proxies]]
name = "test-http"
type = "tcp"
localIP = "127.0.0.1" # 需要暴露的服务的IP
localPort = 9000 # 将本地9000端口的服务暴露在公网的6060端口
remotePort = 6060 # 暴露服务的公网入口
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
注意: 访问的端口一定要开放
3、系统守护启动
如果您的 Linux 服务器上尚未安装 systemd,可以使用包管理器如 yum
(适用于 CentOS/RHEL)或 apt
(适用于 Debian/Ubuntu)来安装它:
# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd
# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd
使用文本编辑器 (如 vim) 在 /etc/systemd/system
目录下创建一个 frps.service
文件,用于配置 frps 服务。
vim /etc/systemd/system/frps.service
写入内容
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,/path/to需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml
[Install]
WantedBy = multi-user.target
使用 systemd 命令管理 frps 服务
# 开机启动frp
systemctl enable frps
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
或者:也可以使用任意方式编辑 /usr/lib/systemd/system/frps.service
并添加如下内容,其中 path_alist 为 frp 所在的路径
但需要执行 systemctl daemon-reload
重载配置
二、Windows客户端部署
压缩包里包含以下文件
配置客户端文件,找到压缩包里的frpc.ini。
打开frp客户端,运行 打开frpc.bat 即可打开
三、Android客户端部署
首先下载Frpc客户端
GitHub开源项目:https://github.com/mainfunx/frpc_android
下载仓库最新的(虽说frps须与frpc版本一致,但frps不配置token还是可以跨版本使用的):
https://github.com/mainfunx/frpc_android/releases/download/0.39.1.1/frpc_adnroid-v0.39.1.1.apk
下载安装好就是这个样子
配置文件如下:(根据个人需求进行修改,切勿照搬)
[common]
server_addr = 54.180.101.36
server_port = 55185
[web]
type = tcp
local_ip = 127.0.0.1
local_port = 9978
remote_port = 7080
[web02]
type = tcp
local_ip = 127.0.0.1
local_port = 5245
remote_port = 7081
点保存名字随便取
四、Magisk-FRPC部署
用于在 Android 设备上运行 FRPC 的 Magisk 模块。
如果您的终端设备使用WEB服务或者其他需要远程访问的服务,那么该模块将是您不错的选择。
Magisk-FRPC:https://github.com/Yang2635/Magisk-FRPC/releases
- 模块支持
arm
、arm64
、amd64
、x86
架构。安装时自动判断设备指令架构并应用。 - 使用模块携带的 Busybox 程序中 crond 命令建立定时任务检测状态。
- FRPC 配置文件修改后会自动检测并重载配置文件。
- Magisk 模块页面自动显示模块状态信息。
- 检验文件完整性,防止模块被破坏。(感谢 Riru 模块提供的灵感)。
- 可在 Magisk 模块中开启或关闭来控制 FRPC 程序启动与结束。
- 设备电量低于 20% 且未在充电自动终止 FRPC 程序,请保持设备电量充足!
- 在模块目录创建
screen
文件则表示息屏检测,反之不检测。
模块安装完成后,请到 Android/frpc
目录下浏览并编辑 frpc.ini 配置文件文件。然后重启设备,设备运行后,会在你的设备上运行 FRPC 守护程序。
模块仅在设备 Android/frpc 目录释放额外工作需要的文件(不含 frpc 日志自定义其它路径设置),若模块卸载时未执行 uninstall.sh
脚本,请手动清除 Android/frpc 目录内文件。
评论