frp内网穿透部署,轻松实现内网服务对外访问

FRP(Fast Reverse Proxy)是一种轻量级、高性能的反向代理工具,利用反向代理技术将公网请求转发至内网服务器上,并将内网服务器的响应再次转发至公网请求者。在实现内网穿透时,FRP能够将公网与内网之间的隔离突破,使得公网用户可以直接访问内网服务器上的资源,从而实现远程访问和管理。同时,FRP可以实现在内网环境下使用自定义域名访问web服务器,并且支持TCP和UDP的端口转发。

简单讲就是可以实现将家里的应用与服务映射到公网IP上,前提是有云服务器,可以考虑下腾讯云或者阿里云,一年几十块可以玩下。

环境: 云服务器CentOS8(有公网IP) Frpv0.52.3(2023-12-07版本)

使用示意图: FRP

完整配置文档地址:Frp完整文档

下载安装

因为托管在github,可能需要科学上网,或者后台私信。 下载地址 服务器端一般用Linux,下载对应版本。客户端可以是Linux或者windows. 下载

在服务器上进行解压,其实里面东西不多,包含了服务器端和客户端启动文件和配置文件。 frps是服务器端,frpc是客户端,都有对应的配置文件.toml,如果是作为服务器端可以删除frpc的文件。

[root@centos8 ~]# cd /www/frp
[root@centos8 frp]# ls -la
total 30004
drwxr-xr-x  2 www  www      4096 Dec  7 12:32 .
drwxr-xr-x 28 root root     4096 Dec  7 10:25 ..
-rwxr-xr-x  1 root root 13905920 Oct 24 10:56 frpc
-rwxr-xr-x  1 root root      142 Oct 24 10:57 frpc.toml
-rwxr-xr-x  1 root root 16789504 Oct 24 10:56 frps
-rwxr-xr-x  1 root root      118 Dec  7 10:54 frps.toml
-rwxr-xr-x  1 root root    11358 Oct 24 10:57 LICENSE

服务器端配置

步骤:

1、开启云服务器安全组端口7000(客户端与服务器连接)、7500(服务器监控面板端口)、7001(自定义内网应用端口)

2、开启云服务器防火墙firewalld端口

firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=7500/tcp --permanent
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --reload

3、修改配置文件

# 修改frps.toml
vim frps.toml

#
 与客户端连接端口,默认7000
bind_port =  7000

#
 配置服务器监控面板
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
webServer.addr = "0.0.0.0"

4、配置修改完成之后可以直接执行,就是执行frps,然后指定配置文件为frps.toml

# 修改下执行权限,防止没有足够权限
chmod +x ./frps# 运行服务
./frps -c ./frps.toml

使用systemctl管理服务进程

如果每次都手动运行服务应该会在前台运行,不能退出,如果ctrl + c退出,frp服务也就结束了,因此建议使用systemctl进程管理实现服务的启动停止和重启。

在/usr/lib/systemd/system/里面添加一个服务配置文件frps.service

vim /usr/lib/systemd/system/frps.service

#
 内容如下,记得修改对应的目录
[Unit]
Description=Frp Server Service
After=network.target

[Service]
Restart=on-failure
RestartSec=5s
WorkingDirectory=/www/wwwroot/frp                            # 工作目录
ExecStart=/www/wwwroot/frp/frps -c /www/wwwroot/frp/frps.toml # 修改为对应目录
[Install]
WantedBy=multi-user.target

#
 保存退出
systemctl daemon-reload                                      # 刷新
systemctl start frps                                         # 启动服务

#
 查看对应的服务和端口有没有正常运行
systemctl status frps

#
 查看有没有7000,7500端口
netstat -nltp

客户端配置

客户端只需要能够上网即可,填写固定的Frps公网地址就行,然后配置内网服务以及端口,默认只能代理客户端本机的服务。

Linux frpc客户端配置

如果使用linux客户端的话也是使用上面下载的版本,删除掉frps开头的文件即可。然后修改frpc.toml。

vim frpc.toml# frpc.toml内容,记得修改自己的IP
serverAddr = "14.56.xxx.xxx"
serverPort = 7000[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 7001# 保存退出,启动客户端服务,和上面服务器原理一致,需要开通服务器对应端口7001
./frpc -c ./frpc.toml

也可以使用systemctl进行frpc服务管理,与上面frps的一致就不重复了。在/usr/lib/systemd/system/里面创建一个frpc.service文件,然后把启动文件和对应的配置文件写上,刷新systemctl。

Windows Frpc客户端配置

如果使用window客户端下载window版本的版本frp_0.52.3_windows_amd64.zip windows客户端

frpc.toml配置如下

serverAddr = "14.29.xxx.xxx"
serverPort = 7000

[[proxies]]
name = "web-test"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 7001

然后客户端需要到cmd命令行运行 frpc.exe -c frpc.toml 进入到frp目录,启动frpc.exe 使用 frpc.toml配置文件 完成之后提示已经启动

frpc启动
frpc启动

内网访问: 内网网站

外网访问: 外网访问

window如果把cmd黑色窗口关闭则服务停止,因此需要设置后台运行,或者设置开机自启,通过计划任务运行,在此不做说明,可以私信。

frps服务器管理界面

通过在frps上配置服务面板监控代理状态。 http://ip:7500 可以查看连接状态。 FRPS

注意如果代理ssh、http等可以使用tcp类型,如果想要使用域名需要有自己的域名解析。

每个proxies代表一个应用,如果需要新增内网应用都需要开启对应的端口。

不建议代理大文件传输,因为是基于云服务器带宽的,取决于公网带宽限制。

好处是没有代理数量限制,数据掌握在自己手中,不需要第三方。

本文由 mdnice 多平台发布

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

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

相关文章

互联网Java工程师面试题·RabbitMQ篇

目录 1、什么是 rabbitmq 2、为什么要使用 rabbitmq 3、使用 rabbitmq 的场景 4、如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息? 5、如何避免消息重复投递或重复消费? 6、消息基于什么传输? 7、消息如…

苹果mac电脑如何彻底删除卸载软件?

在苹果电脑上安装和使用软件非常容易,但是卸载软件却可能会变得复杂和困难。不像在Windows上,你不能简单地在控制面板中找到已安装的程序并卸载它们。因此,在这篇文章中,我们将讨论苹果电脑怎么彻底删除软件。 CleanMyMac X全新版…

el-tooltip (element-plus)修改长度

初始状态&#xff1a; 修改后&#xff1a; 就是添加 :teleported"false"&#xff0c;问题解决&#xff01;&#xff01;&#xff01; <el-tooltipeffect"dark"content"要求密码长度为9-30位&#xff0c;需包含大小写字母、数字两种或以上与特殊字…

AtCoder ABC周赛2023 11/4 (Sat) D题题解

目录 原题截图&#xff1a; 题目大意&#xff1a; 主要思路&#xff1a; 注意事项&#xff08;很多人再这个地方掉坑&#xff09;&#xff1a; 代码&#xff1a; 原题截图&#xff1a; 题目大意&#xff1a; 给你两个数组&#xff08;A和B)长度都为n&#xff0c;然你求出一…

【Spring 源码】 贯穿 Bean 生命周期的核心类之 AbstractAutowireCapableBeanFactory

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

『 C++ 』BinarySearchTree搜索二叉树

文章目录 前言 &#x1f995;二叉搜索树的概念 &#x1f995;搜索二叉树的初始化 &#x1f995;Insert( )插入函数 &#x1f995;&#x1f47e; InsertR( ) 插入函数(递归) InOrder( ) 中序遍历打印 &#x1f995;Find( ) 查找函数 &#x1f995;&#x1f47e; Find( ) 查找函数…

C++新经典模板与泛型编程:用成员函数重载实现is_base_of

用成员函数重载实现is_base_of std::is_base_of是一个C 11标准中用于判断某个类是否是另一个类父类的类模板。 #include "killCmake.h"#include<string>using namespace std;class A { };class B : public A { public:B(int x): x_(x){} private:int x_; };/…

使用 GROUP BY 进行数据库分析:以图书销售数据库为例

让我们通过一个简单但实用的例子来理解 GROUP BY 的使用。我们将以一个图书销售数据库为例。这个数据库包含两张表&#xff1a;一张是图书信息表 (books)&#xff0c;另一张是销售记录表 (sales)。我们会先创建这两张表&#xff0c;然后插入一些数据&#xff0c;并展示如何使用…

PHP对接企业微信

前言 最近在做项目中&#xff0c;要求在后台管理中有企业微信管理的相关功能。相关准备工作&#xff0c;需要准备好企业微信账号&#xff0c;添加自建应用&#xff0c;获得相应功能的权限&#xff0c;以及agentid、secre等。 参考文档&#xff1a; 企业微信开发文档 功能实现 因…

2、Redis变慢原因排查(下)

感觉Redis变慢了&#xff0c;这些可能的原因你查了没 &#xff1f;(下) Redis变慢排查的上一篇【感觉Redis变慢了&#xff0c;这些可能的原因你查了没 &#xff1f;(上)】&#xff0c;我们是基于Redis命令为入口&#xff0c;比如命令使用不得当&#xff0c;bigkey问题&#xf…

开发短视频矩阵实时直播需要用到哪些技术?

现在越来越多的人或公司都想开发出自己的直播网站或者直播APP&#xff0c;但是在技术这一块又不知道怎么下手&#xff0c;那么我就给大家讲一下在视频直播系统开发中要了解那些知识和技术&#xff1a; 在开发上需要用的技术有&#xff1a; 摄像头采集 音视频编解码 流媒体协议…

⭐Unity 搭建UDP客户端(01) 配合网络调试助手测试

1.接收来自服务器的消息 using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using UnityEngine;public class UDPManager:MonoBehaviour {public string recvStr; //服务器返回值public string UDPClientAddRess "192.168.2.39&q…

数字人对话系统 Linly-Talker

&#x1f525;&#x1f525;&#x1f525;数字人对话系统 Linly-Talker&#x1f525;&#x1f525;&#x1f525; English 简体中文 欢迎大家star我的仓库 https://github.com/Kedreamix/Linly-Talker 2023.12 更新 &#x1f4c6; 用户可以上传任意图片进行对话 介绍 Lin…

SolidWorks Simulation 有限元分析-升降架分析

问题描述&#xff1a;一个载重为 1800N 的升降架承受一外部水压柱筒的作用&#xff0c;该水压柱筒与基座上的滑块相连。 1. 打开零件。 2. 我们新建一个静应力分析的算例&#xff0c;如下图所示。 3. 设置材料。我们需要为模型指定模型的材料属性。点击选中模型&#xff0c;鼠…

Excel 分列功能

一. 需求 ⏹有一段文本&#xff0c;文本一共有7列。这7列文本之间的分隔符不相同 有一个空格的有多个空格的有Tab的jmw_state 和 method 之间用 & 连接 现在要求&#xff0c;将这段文本粘贴到Excel中&#xff0c;进行分列。并且需要将 jmw_state 和 method 也进行分列 也…

RabbitMQ(一)概述

1 RabbitMQ 概念 RabbitMQ 是一个消息中间件&#xff1a;它接受并转发消息。你可以把它当做一个快递站点&#xff0c;当你要发送一个包裹时&#xff0c;你把你的包裹放到快递站&#xff0c;快递员最终会把你的快递送到收件人那里&#xff0c;按照这种逻辑 RabbitMQ 是一个快递站…

Linux(16):认识系统服务(daemons)

什么是 daemon 与系统服务 【服务】一般的说明是【常驻在记体体中的程序&#xff0c;且可以提供一些系统或网络功能&#xff0c;那就是服务】。而服务一般的英文说法是【service】。 简单的说&#xff0c;系统为了某些功能必须要提供一些服务(不论是系统本身还是网络方面)&…

python基于ModBusTCP服务端的业务实现特定的client

python实现ModBusTCP协议的client是一件简单的事情&#xff0c;只要通过pymodbus、pyModbusTCP等模块都可以实现&#xff0c;本文采用pymodbus。但要基于ModBusTCP服务端的业务实现特定的client&#xff0c;那得看看服务端是否复杂。前面系列文章&#xff0c;我们学习了对服务端…

<IBM Websphere Portal>《关于IBM的Portal和WAS的说明和总结(自用笔记)》

《关于IBM的Portal和WAS的简单总结》 1 架构1.1 说明 2 常见问题2.1 LDAP链接问题2.2 启动脚本建议2.3 日志大小保留建议2.4 启动垃圾回收日志 3 日志位置 1 架构 应用服务部署架构如上&#xff1a; &#x1f449;192.168.66.1服务器运行的server进程有&#xff1a;dmgr、nodea…

SL1581降压恒压 耐压4V-30V降压5V 2A电流 外围简单,四个元器件

SL1581是一款专为降压恒压应用而设计的芯片&#xff0c;具有耐压4V-30V、降压5V、2A电流输出等特点&#xff0c;外围电路简单&#xff0c;仅需四个元器件。 一、芯片介绍 SL1581是一款专为降压恒压应用而设计的芯片&#xff0c;它采用先进的PWM控制技术&#xff0c;具有高效率、…