FRP 内网穿透工具部署

FRP 介绍

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

官方网站:https://gofrp.org/zh-cn/

项目地址:https://github.com/fatedier/frp

基本原理如下所示:

在这里插入图片描述

下面介绍FRP的两种部署方式,环境信息如下:

节点角色节点类型OSIP地址
FRPS服务端阿里云轻量服务器Ubuntu 22.04 LTS112.74.1.10
FRPC客户端本地linux服务器Ubuntu 22.04 LTS192.168.72.16

基于docker部署

项目地址:https://github.com/snowdreamtech/frp

服务端镜像地址:https://hub.docker.com/r/snowdreamtech/frps

客户端镜像地址:https://hub.docker.com/r/snowdreamtech/frpc

1. 使用 Docker 安装服务端

以下步骤在阿里云轻量服务器上执行,并确认已安装docker环境。

创建frps服务端配置文件,复制粘贴以下内容

mkdir -p /etc/frpcat >/etc/frp/frps.toml<<EOF
bindPort = 7000
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
vhostHTTPPort = 8080
vhostHTTPSPort = 8443
EOF

配置参数说明:

  • bindPort:客户端与服务端通信端口
  • webServer.port:服务端dashboard端口
  • vhostHTTPPort:定义http代理需要配置该参数
  • vhostHTTPSPort:定义https代理需要配置该参数

注意:以上端口均需在防火墙放通。

使用docker 安装 frps 服务端

docker run -d --name frps --restart=always \--network host \-v /etc/frp/frps.toml:/etc/frp/frps.toml \snowdreamtech/frps:0.52.3

查看容器运行状态

root@ubuntu:~# docker ps
CONTAINER ID   IMAGE                         COMMAND                  CREATED             STATUS             PORTS                                                                                                                 NAMES
a6abfba322a6   snowdreamtech/frps:0.52.3     "/bin/sh -c '/usr/bi…"   About an hour ago   Up About an hour                                                                                                                         frps

访问dashboard

http://112.74.1.10:7500/

首页如下:
在这里插入图片描述

2. 使用 Docker 安装客户端

以下步骤在本地linux服务器上执行,并确认已安装docker环境。

创建frpc客户端配置文件,复制粘贴以下内容,定义了两个proxies,分别为tcp穿透和http穿透示例。

mkdir -p /etc/frpcat >/etc/frp/frpc.toml<<EOF
serverAddr = "112.74.1.10"
serverPort = 7000
webServer.addr = "0.0.0.0"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000[[proxies]]
name = "test-web"
type = "http"
localPort = 80
customDomains = ["112.74.1.10"]
EOF

参数说明:

  • serverAddr:指定服务端公网IP地址
  • serverPort: 指定服务端监听端口
  • webServer.port:客户端dashboard监听端口
  • localIP: 本地服务器IP
  • localPort: 本地服务器需要穿透的应用端口,本示例为SSH服务22端口和NGINX服务80端口。
  • remotePort:指定服务端应用监听端口,用于转发到本地SSH端口

使用 docker 部署 FRPC 客户端

docker run -d --name frpc --restart=always \--network host \-v /etc/frp/frpc.toml:/etc/frp/frpc.toml \snowdreamtech/frpc:0.52.3

访问客户端 dashboard

http://192.168.72.16:7400/

首页如下:
在这里插入图片描述

3. 测试访问本地服务

测试基于TCP的SSH穿透

访问阿里云轻量服务器IP地址112.74.1.106000端口,实际会转发到本地服务器192.168.72.1622端口。

测试是否能否通过ssh连接到客户端。

root@ubuntu:~# ssh -o Port=6000 root@112.74.1.10
root@112.74.1.10's password: 
Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-89-generic x86_64)* Documentation:  https://help.ubuntu.com* Management:     https://landscape.canonical.com* Support:        https://ubuntu.com/advantageSystem information as of Thu Dec 14 02:54:06 PM CST 2023System load:                      0.0Usage of /:                       75.9% of 196.89GBMemory usage:                     16%Swap usage:                       1%Processes:                        219Users logged in:                  1IPv4 address for br-aeda5cc463d3: 172.18.0.1IPv4 address for br-f87de9bc351f: 172.19.0.1IPv4 address for docker0:         172.17.0.1IPv4 address for ens33:           192.168.72.16* Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8sjust raised the bar for easy, resilient and secure K8s cluster deployment.https://ubuntu.com/engage/secure-kubernetes-at-the-edgeExpanded Security Maintenance for Applications is not enabled.64 updates can be applied immediately.
To see these additional updates run: apt list --upgradableEnable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status*** System restart required ***
Last login: Thu Dec 14 14:54:07 2023 from 127.0.0.1
root@ubuntu:~# hostname -I
192.168.72.16 172.17.0.1 172.18.0.1 172.19.0.1 
root@ubuntu:~# 

测试基于HTTP的WEB穿透

访问阿里云轻量服务器IP地址112.74.1.108080端口,实际会转发到本地服务器192.168.72.1680端口。

本地使用docker运行一个示例nginx服务,用于监听80端口

docker run -d --name nginx -p 80:80 nginx

测试是否能否通过轻量服务器连接到本地nginx服务。

root@ubuntu:~#  curl 112.74.1.10:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>

基于systemd部署

推荐上面的docker方式部署服务端,如果没有docker环境,也可以使用systemd来部署和维护frp服务。

1.使用 systemd 安装服务端

以下步骤在阿里云轻量服务器上执行。

在 Linux 系统下,使用 systemd 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。

安装包下载地址:https://github.com/fatedier/frp/releases

下载frp安装包

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

安装该fprs二进制文件到/usr/local/bin目录下

cp frp_0.52.3_linux_amd64/frps /usr/local/bin/

创建frps配置文件

mkdir -p /etc/frp
cp frp_0.52.3_linux_amd64/frps.toml /etc/frp

修改frps配置文件

cat >/etc/frp/frps.toml<<EOF
bindPort = 7000
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
vhostHTTPPort = 8080
vhostHTTPSPort = 8443
EOF

创建 frps.service 服务启动文件

使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。

cat >/etc/systemd/system/frps.service<<EOF
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target[Service]
Type = simple
ExecStart = /usr/local/bin/frps -c /etc/frp/frps.toml[Install]
WantedBy = multi-user.target
EOF

使用 systemd 命令启动 frps 服务端服务

systemctl enable --now frps

查看服务运行状态

root@node40:~# systemctl status frps
● frps.service - frp serverLoaded: loaded (/etc/systemd/system/frps.service; enabled; vendor preset: enabled)Active: active (running) since Wed 2023-12-13 17:17:48 CST; 21h agoMain PID: 906819 (frps)Tasks: 7 (limit: 9387)Memory: 7.5MCPU: 5.643sCGroup: /system.slice/frps.service└─906819 /usr/local/bin/frps -c /etc/frp/frps.tomlDec 13 17:18:08 node40 frps[906819]: 2023/12/13 17:18:08 [I] [dashboard_api.go:186] Http response [/api/proxy/tcp]: code [200]
Dec 13 17:18:10 node40 frps[906819]: 2023/12/13 17:18:10 [I] [dashboard_api.go:329] Http request: [/api/traffic/test-tcp]
Dec 13 17:18:10 node40 frps[906819]: 2023/12/13 17:18:10 [I] [dashboard_api.go:323] Http response [/api/traffic/test-tcp]: code [200]
Dec 13 17:21:55 node40 frps[906819]: 2023/12/13 17:21:55 [I] [control.go:334] [5b5fc91b4d176c56] control writer is closing
Dec 13 17:21:55 node40 frps[906819]: 2023/12/13 17:21:55 [I] [proxy.go:115] [5b5fc91b4d176c56] [test-tcp] proxy closing
Dec 13 17:21:55 node40 frps[906819]: 2023/12/13 17:21:55 [W] [proxy.go:201] [5b5fc91b4d176c56] [test-tcp] listener is closed: accept tcp [::]:6000: use of closed network connec>
Dec 13 17:21:55 node40 frps[906819]: 2023/12/13 17:21:55 [I] [control.go:423] [5b5fc91b4d176c56] client exit success
Dec 13 17:21:55 node40 frps[906819]: 2023/12/13 17:21:55 [I] [service.go:533] [1036b9eb2691ec4e] client login info: ip [192.168.72.41:35800] version [0.52.3] hostname [] os [li>
Dec 13 17:21:55 node40 frps[906819]: 2023/12/13 17:21:55 [I] [tcp.go:82] [1036b9eb2691ec4e] [test-tcp] tcp proxy listen port [6000]
Dec 13 17:21:55 node40 frps[906819]: 2023/12/13 17:21:55 [I] [control.go:500] [1036b9eb2691ec4e] new proxy [test-tcp] type [tcp] success

服务启停命令

systemctl start frps
systemctl stop frps
systemctl restart frps

通过遵循上述步骤,您可以轻松地使用 systemd 来管理 frps 服务,实现启动、停止、自动运行和开机自启动。确保替换路径和配置文件名称以匹配您的实际安装。

2. 使用 systemd 安装客户端

以下步骤在本地linux服务器上执行。

在 Linux 系统下,使用 systemd 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。

安装该fprc二进制文件到/usr/local/bin目录下

cp frp_0.52.3_linux_amd64/frpc /usr/local/bin/

创建frps配置文件

mkdir -p /etc/frp
cp frp_0.52.3_linux_amd64/frpc.toml /etc/frp

修改客户端配置文件,指定服务端地址和端口

cat >/etc/frp/frpc.toml<<EOF
serverAddr = "112.74.1.10"
serverPort = 7000
webServer.addr = "0.0.0.0"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000[[proxies]]
name = "test-web"
type = "http"
localPort = 80
customDomains = ["112.74.1.10"]
EOF

创建 frpc.service 服务启动文件

使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frpc.service 文件,用于配置 frpc 服务。

cat >/etc/systemd/system/frpc.service<<EOF
[Unit]
Description = frp client
After = network.target syslog.target
Wants = network.target[Service]
Type = simple
ExecStart = /usr/local/bin/frpc -c /etc/frp/frpc.toml[Install]
WantedBy = multi-user.target
EOF

使用 systemd 命令启动 frpc 客户端服务

systemctl enable --now frpc

查看服务运行状态

root@ubuntu:~# systemctl status frpc
● frpc.service - frp clientLoaded: loaded (/etc/systemd/system/frpc.service; enabled; vendor preset: enabled)Active: active (running) since Wed 2023-12-13 17:21:55 CST; 21h agoMain PID: 69350 (frpc)Tasks: 5 (limit: 4556)Memory: 3.9MCPU: 12.045sCGroup: /system.slice/frpc.service└─69350 /usr/local/bin/frpc -c /etc/frp/frpc.tomlDec 13 17:21:55 ubuntu systemd[1]: Started frp client.
Dec 13 17:21:55 ubuntu frpc[69350]: 2023/12/13 17:21:55 [I] [root.go:139] start frpc service for config file [/etc/frp/frpc.toml]
Dec 13 17:21:55 ubuntu frpc[69350]: 2023/12/13 17:21:55 [I] [service.go:299] [1036b9eb2691ec4e] login to server success, get run id [1036b9eb2691ec4e]
Dec 13 17:21:55 ubuntu frpc[69350]: 2023/12/13 17:21:55 [I] [proxy_manager.go:156] [1036b9eb2691ec4e] proxy added: [test-tcp]
Dec 13 17:21:55 ubuntu frpc[69350]: 2023/12/13 17:21:55 [I] [service.go:161] admin server listen on 0.0.0.0:7400
Dec 13 17:21:55 ubuntu frpc[69350]: 2023/12/13 17:21:55 [I] [control.go:173] [1036b9eb2691ec4e] [test-tcp] start proxy success
Dec 13 17:22:09 ubuntu frpc[69350]: 2023/12/13 17:22:09 [I] [admin_api.go:140] Http request [/api/status]
Dec 13 17:22:09 ubuntu frpc[69350]: 2023/12/13 17:22:09 [I] [admin_api.go:142] Http response [/api/status]
Dec 13 17:22:15 ubuntu frpc[69350]: 2023/12/13 17:22:15 [I] [admin_api.go:166] Http get request [/api/config]
Dec 13 17:22:15 ubuntu frpc[69350]: 2023/12/13 17:22:15 [I] [admin_api.go:168] Http get response [/api/config], code [200]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/223468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8优化策略:UniRepLKNetBlock 助力检测 | UniRepLKNet,通用感知大内核卷积网络,2023.12

🚀🚀🚀本文改进: UniRepLKNet,通用感知大内核卷积网络,ImageNet-22K预训练,精度 和速度SOTA,ImageNet达到88%, COCO达到56.4 box AP,ADE20K达到55.6 mIoU UniRepLKNetBlock 与C2f进行结合使用 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学…

文献阅读(15)Griffin

文章目录 题目&#xff1a;Griffin: Rethinking Sparse Optimization for Deep Learning Architectures时间&#xff1a;2022会议&#xff1a;HPCA研究机构&#xff1a;三星 本篇论文最大的贡献我认为是用统一的表示方法规范表示了各种稀疏计算的类型&#xff0c;并针对不同稀…

Go实现http同步文件操作 - 增删改查

http同步文件操作 - 增删改查 http同步文件操作 - 增删改查1. 前置要求1.1. 构建结构体 文件名 文件内容1.1.1. 页面结构体1.1.2. 为Page结构体绑定方法&#xff1a;Save1.1.3. 对Page结构体支持页面内容查看方法&#xff0c;同时提供页面文件是否存在的方法 1.2. 简单验证上面…

Axure动态面板的应用与ERP系统登录界面、主页左侧菜单栏、公告栏的绘制

目录 一、动态面板 1.1 简介 1.2 使用动态面板的原因 二、动态面板之轮播图实现案例 2.1 完成步骤 2.2 最终效果 三、动态面版之多方式登录案例 四、动态面板之后台主界面左侧菜单栏 五、ERP登录界面 六、ERP主界面菜单栏 七、ERP公告栏 八、登录页面跳转公告栏 一…

【密码学】群的证明(习题)

0.前置知识 1.习题 记录一次密码学作业~群的判定 2.求解

简洁高效的 NLP 入门指南: 200 行实现 Bert 文本分类 (Pytorch 版)

简洁高效的 NLP 入门指南: 100 行实现 Bert 文本分类 Pytorch 版 概述NLP 的不同任务Bert 概述MLM 任务 (Masked Language Modeling)TokenizeMLM 的工作原理为什么使用 MLM NSP 任务 (Next Sentence Prediction)NSP 任务的工作原理NSP 任务栗子NSP 任务的调整和局限性 安装和环…

MQ入门—centos 7安装RabbitMQ 安装

三&#xff1a;RabbitMQ 安装 1.环境准备 Linux 的 CentOS 7.x 版本。Xftp 传输安装包到 Linux。Xshell 连接 Linux&#xff0c;进行解压安装。 RabbitMQ安装包 链接&#xff1a;https://pan.baidu.com/s/1ZYVI4YZlvMrj458jakla9A 提取码&#xff1a;dyto xshell安装包 链接&…

HPM6750系列--第八篇 Segger Embedded Studio for RISC-V查看外设寄存器

一、目的 在博客《HPM6750系列--第五篇 使用Segger Embedded Studio for RISC-V开发环境》中我们详细介绍了在SES中进行开发调试的相关步骤&#xff0c;但是在调试过程中发现未找到外设寄存器窗口&#xff0c;本篇就此问题指导大家进行设置查看寄存器信息。 二、介绍 请务必先阅…

PPT插件-超好用的插件-统一尺寸、裁剪、分布-大珩助手

超级对齐-统一尺寸、裁剪、分布 操作方法 先选中1个或多个形状&#xff0c;然后最后选择目标形状&#xff0c;若希望形状的位置也改变&#xff0c;则需要在对齐幻灯下选中对齐对象。 等比缩放 将选中的1个或多个形状的外形尺寸设置为目标形状大小&#xff0c;图像的纵横比可…

厨房革命@2023:新时代与旧观念的“互搏”

【潮汐商业评论/原创】 你家的厨房电器&#xff0c;多久没换了&#xff1f; 张姐家的灶最近彻底报废了&#xff0c;之前也找人来修过几次&#xff0c;缝缝补补算是用了八年有余。要不是这次彻底坏了&#xff0c;张姐怎么也不会买台新的。 “上次见邻居搬新房装了一台集成灶&…

【数组Array】力扣-304 二维区域和检索 - 矩阵不可变

目录 题目描述 解题过程 labuladong题解 题目描述 给定一个二维矩阵 matrix&#xff0c;以下类型的多个请求&#xff1a; 计算其子矩形范围内元素的总和&#xff0c;该子矩阵的 左上角 为 (row1, col1) &#xff0c;右下角 为 (row2, col2) 。 实现 NumMatrix 类&#xf…

win10环境下git安装和基础操作

简述 关于git的作用就不多赘述了&#xff0c;配合GitHub&#xff0c;达到方便人们日常项目维护和管理&#xff0c;每一次项目增删改查都可以看的清清楚楚&#xff0c;方便团队协作和个人项目日常维护。 下载git 首先我们自然是要到官网下载git&#xff0c;下载地址为https:/…

电脑录制高清视频文件是怎么设置的

在当今数字化的时代&#xff0c;电脑已经成为我们生活中不可或缺的工具。除了处理文档、浏览网页等常见功能外&#xff0c;它还可以轻松录制高清视频文件。那么&#xff0c;具体如何设置电脑才可以录制高清视频呢&#xff1f; 首先&#xff0c;要确保电脑的硬件配置是否能够支…

IEEE Transactions on Industrial Electronics工业电子TIE论文投稿须知

一、背景 IEEE TIE作为控制领域的TOP期刊&#xff0c;接收机器人、控制、自动驾驶、仪器和传感等方面的论文&#xff0c;当然范围不止这些&#xff0c;感兴趣的可以自行登录TIE官网查看。所投稿论文必须经过实验验证&#xff0c;偏工程应用类&#xff0c;当然也必须有方法上的…

关于“Python”的核心知识点整理大全21

9.3.2 Python 2.7 中的继承 在Python 2.7中&#xff0c;继承语法稍有不同&#xff0c;ElectricCar类的定义类似于下面这样&#xff1a; class Car(object):def __init__(self, make, model, year):--snip-- class ElectricCar(Car):def __init__(self, make, model, year):supe…

overleaf 加载pdf格式的矢量图时,visio 图片保存为pdf格式,如何确保pdf页面大小和图片一致

Overleaf支持多种矢量图形格式&#xff0c;其中一些常见的包括&#xff1a; PDF&#xff08;Portable Document Format&#xff09;&#xff1a; PDF是一种常见的矢量图形格式&#xff0c;Overleaf可以直接加载和显示PDF文件。许多绘图工具和LaTeX生成的图形都可以导出为PDF格式…

算法的四大思想之一:回溯思想

回溯是最重要的算法思想之一&#xff0c;主要解决一些暴力枚举也搞不定的问题&#xff08;组合、子集、分割、排列、棋盘等等&#xff09;。性能并不高&#xff0c;但是那些暴力枚举都无法ko的问题能解出来就可以了&#x1f923;。 一、回溯思想 定义 是一个种基于深度优先搜…

免担心!如果你的处理器不支持TPM 2.0,配置一下就可以安装Windows 11了

这篇文章解释了如何使用Windows注册表编辑器将你的电脑设置为Windows 11,即使你没有支持TPM 2.0的处理器。 如何在不支持的处理器中安装Windows 11 要使你的电脑即使有不受支持的处理器也能安装Windows 11,你需要对Windows注册表进行一些更改。这并不像看上去那么复杂,但也…

YOLOv8改进 | 2023Neck篇 | 利用RepGFPN改进特征融合层(附yaml文件+添加教程)

一、本文介绍 本文给大家带来的改进机制是Damo-YOLO的RepGFPN&#xff08;重参数化泛化特征金字塔网络&#xff09;&#xff0c;利用其优化YOLOv8的Neck部分&#xff0c;可以在不影响计算量的同时大幅度涨点&#xff08;亲测在小目标和大目标检测的数据集上效果均表现良好涨点…

Redis对象——内存回收,对象共享和空转时长

一. 内存回收 因为C语言不具备内存回收功能&#xff0c;所以Redis在自己的对象系统中构建了一个引用计数技术实现内存回收机制。通过这一机制&#xff0c;程序可以通过跟踪对象的引用计数信息&#xff0c;在适当的时候自动释放对象并进行内存回收。 内每一个对象的引用计数信息…