搭建Frp内网穿透服务

admin
2023-07-13 / 0 评论 / 893 阅读 / 正在检测是否收录...

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。 可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

开源地址:FRP github网址

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:

  1. 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
  2. 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间
  3. 代理组间的负载均衡
  4. 端口复用,多个服务通过同一个服务端端口暴露
  5. 多个原生支持的客户端插件(静态文件查看,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

docker安装frp

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,输入账号密码

img

dashboard界面

可以直接访问,说明部署成功

本地文件部署

1、下载程序包

前往GitHub Releases页面下载:

根据自己实际情况选择,我的是x64的windows系统,服务器也是x64架构,选择图中两项。玩客云是armv7架构,选择linux_arm包

解压如下:

image

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客户端部署

内网穿透工具:配置生成

Windows客户端下载

压缩包里包含以下文件

frp客户端

配置客户端文件,找到压缩包里的frpc.ini。

配置客户端

打开frp客户端,运行 打开frpc.bat 即可打开

img

三、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
下载安装好就是这个样子

photo_2023-02-22_17-31-14

photo_2023-02-22_17-31-17

配置文件如下:(根据个人需求进行修改,切勿照搬)

[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

点保存名字随便取

photo_2023-02-22_17-31-20

四、Magisk-FRPC部署

用于在 Android 设备上运行 FRPC 的 Magisk 模块。

如果您的终端设备使用WEB服务或者其他需要远程访问的服务,那么该模块将是您不错的选择。

Magisk-FRPC:https://github.com/Yang2635/Magisk-FRPC/releases

  • 模块支持armarm64amd64x86架构。安装时自动判断设备指令架构并应用。
  • 使用模块携带的 Busybox 程序中 crond 命令建立定时任务检测状态。
  • FRPC 配置文件修改后会自动检测并重载配置文件。
  • Magisk 模块页面自动显示模块状态信息。
  • 检验文件完整性,防止模块被破坏。(感谢 Riru 模块提供的灵感)。
  • 可在 Magisk 模块中开启或关闭来控制 FRPC 程序启动与结束。
  • 设备电量低于 20% 且未在充电自动终止 FRPC 程序,请保持设备电量充足!
  • 在模块目录创建 screen 文件则表示息屏检测,反之不检测。

模块安装完成后,请到 Android/frpc 目录下浏览并编辑 frpc.ini 配置文件文件。然后重启设备,设备运行后,会在你的设备上运行 FRPC 守护程序。

模块仅在设备 Android/frpc 目录释放额外工作需要的文件(不含 frpc 日志自定义其它路径设置),若模块卸载时未执行 uninstall.sh 脚本,请手动清除 Android/frpc 目录内文件。

0

评论

博主关闭了所有页面的评论