使用frp实现内网穿透
1、介绍
当我们想把内网的一些资源暴露在公网上时,可以使用内网穿透功能。比如公司的内网服务器,部署了平时需要开发的项目,但是回到家中无法访问,就可以使用内网穿透,将公司内网的接口映射到一台公网的服务器上,用这台公网服务器做转发即可实现在家中也能外网访问。这样的就不需要我们在公网上部署一套一模一样的服务了,费时费力,而且还要同步数据。
2、准备工作
想要实现内网穿透功能首先我们需要准备:
- 一台公网服务器(用作frp的服务端)
- 一台需要做转发的内网服务器(用作frp的客户端)
3、frp服务端安装及配置
3.1 下载frp服务端
注意frp服务端是安装在公网服务器上的!!!
服务端下载地址:https://github.com/fatedier/frp/releases

可以看到有很多版本,我的外网服务器是Linux的,可以输入命令查看服务器架构版本:
arch

x86_64 直接下载 frp_0.51.2_linux_amd64.tar.gz 后缀为 amd64 这个版本即可。可以手动下载到本地,然后通过scp命令传到服务器,也可以直接在外网服务器上下载。
通过scp传送到外网服务器命令(如果开放了账号密码登录):
scp -P ssh开放的端口(如果为22,可以不用带此参数) 下载的frp_0.51.2_linux_amd64.tar.gz的位置 登录的账号@外网服务器ip:你要拷贝到的外网服务器的位置
如:
scp -P 22 C:\Users\dxc\Downloads\frp_0.51.2_linux_amd64.tar.gz root@xxx.xxx.xxx.xxx:/home/frp
按下回车,再输入密码即可(注意大小写)。
通过scp传送到外网服务器命令(只开放了通过证书登录的方式):
scp -i 你证书的位置 -P ssh开放的端口(如果为22,可以不用带此参数) -r 下载的frp_0.51.2_linux_amd64.tar.gz的位置 登录的账号@外网服务器ip:你要拷贝到的外网服务器的位置
如:
scp -i C:\Documents\server-pro\ecmarkets-universal.pem -P 22 C:\Users\dxc\Downloads\frp_0.51.2_linux_amd64.tar.gz root@81.xxx.xxx.xxx:/home/frp
直接在外网服务器上下载命令:
wget https://github.com/fatedier/frp/releases/download/v0.51.2/frp_0.51.2_linux_amd64.tar.gz
下载完成后解压,输入命令:
tar -zxvf frp_0.42.0_linux_amd64.tar.gz
解压完成后cd进入目录:
cd frp_0.42.0_linux_amd64
查看当前目录下的文件:
ll
我们能看到有如下这些文件:

其中作为服务端,我们只需要关注 frps 和 frps.ini 文件。
3.2 frps配置
其中 frps.ini 文件就是我们服务端的配置文件,我们需要根据自己情况稍作修改。输入命令:
vim frps.ini
默认配置如图:

我们可以根据自己的场景稍作修改:
[common]
bind_port = 7001
dashboard_port = 7501
dashboard_user = root
dashboard_pwd = 123456
token = qwer1234
其中:
- bind_port:客户端和服务端连接的端口,在配置客户端的时候要用到。
- dashboard_port:服务端可视化界面的端口,若使用7501端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7501。
- dashboard_user:打开服务端可视化界面的用户名,可自行设置。
- dashboard_pwd:打开服务端可视化界面的密码,可自行设置。
- token:用于客户端和服务端连接的口令,可以自行设置,不用和我保持一样,但需要记住,配置客户端的时候会用到。
注意:配置项并未介绍完,详情请参见官方文档。

3.3 frps启动
输入启动命令,启动frp服务端:
./frps -c frps.ini
如果看到控制台输出如图,代表启动成功:

此时,我们打开浏览器输入:
xxx.xxx.xxx(你的外网服务器ip):你配置的dashboard_port端口
即可看到如下弹框(如果你的打不开,请确认防火墙关闭,或者在你的云服务器上开放端口号):
查看防火墙状态:
systemctl status firewalld
关闭防火墙:
systemctl stop firewalld

输入配置的账号密码,点击登录,进入仪表盘:

此时frp的服务端我们就配置完毕了,接下来开始配置客户端。
4、frp客户端配置及启动
4.1 下载frp客户端及配置
此处我用的是本地电脑作为客户端,本地电脑为win10,64位操作系统,其他操作系统流程几乎一致。客户端下载地址和服务端一样,均为:https://github.com/fatedier/frp/releases
此处我下载 frp_0.51.2_windows_amd64.zip 这个版本。

解压文件,进入frp_0.51.2_windows_amd64目录,我们需要关心的文件为 frpc.exe 和 frpc.ini,用编辑器打开 frpc.ini 文件:


这是默认的客户端的配置,接下来我们需要修改一下:
[common]
server_addr = xxx.xxx.xxx
server_port = 7001
token = qwer1234[rbac_study]
type = tcp
local_ip=127.0.0.1
local_port = 3781
remote_port=6001
其中:
- server_addr:你外网服务器的ip。
- server_port:外网服务器配置的bind_port。
- token:外网服务器配置的token。
- [xxx]:表示一个规则的名称,可以自己定义,此处我定义为我项目的名称。
- type:表示转发的协议类型,有tcp、udp等选项可以选择。此处我选择tcp。
- local_ip:本地的ip。
- local_port:本地服务的端口号。
- remote_port:服务端开放的端口号,可以自己配置。到时候我们通过访问外网服务器(frps)的ip + 该端口号就能转发到本地服务器(frpc)的服务 local_ip + local_port 配置的端口上。

配置好后点击保存。
4.2 frpc启动
打开win10的 Windows PowerShell 工具(win10自带,不用下载,在左下角的搜索框中搜索打开即可)。切到我们frp客户端的配置文件 frpc.ini 所在目录:
cd E:\CommonSoftware\frp_0.51.2_windows_amd64
输入启动命令,启动frp客户端(请不要直接双击frpc.exe文件打开!!!):
./frpc -c frpc.ini
看到控制台输出如图,代表启动成功:

5、测试
到此处,frps和frpc的所有配置和启动事项都完成了,接下来我们可以通过访问我们的外网服务器(frps)ip + 我们在本地服务器(frpc)中配置的 remote_port 端口,就能直接转发到我们的本地服务上了。
我用本地的Java项目测试:

我本地启动了一个端口为 3781 的 rbac_study 服务,接下来我访问外网服务器的ip + 本地服务器(frpc)中配置的 remote_port 端口,能看到穿透成功。如图:

相关文章:
使用frp实现内网穿透
1、介绍 当我们想把内网的一些资源暴露在公网上时,可以使用内网穿透功能。比如公司的内网服务器,部署了平时需要开发的项目,但是回到家中无法访问,就可以使用内网穿透,将公司内网的接口映射到一台公网的服务器上&a…...
安装 opendr 踩坑记
复现早期的优化算法需要用到opendr,踩坑一天记录!!! 测试是否成功安装的命令 >>> import opendr >>> opendr.demo("texture")失败案例 python 3.8.15 numpy1.23.0 mayavi4.8.1 chumpy0.70 cpython…...
各地区-各行业法人单位、区划数63个指标(2010-2022年)
一、数据介绍 数据名称:各地区-各行业法人单位、区划数63个指标 数据年份:2010-2022年(法人单位至2021年) 数据样本:404条 数据来源:自我整理 二、指标说明 行政区划代码 地区 长江经济带 经度 纬…...
W5500-EVB-PICO作为TCP Client 进行数据回环测试(五)
前言 上一章我们用W5500-EVB-PICO开发板通过DNS解析www.baidu.com(百度域名)成功得到其IP地址,那么本章我们将用我们的开发板作为客户端去连接服务器,并做数据回环测试:收到服务器发送的数据,并回传给服务器…...
web前端面试--递归(斐波那契数列)
web面试题 本人是一个web前端开发工程师,主要是vue框架,整理了一些面试题,今后也会一直更新,有好题目的同学欢迎评论区分享 ;-) web面试题专栏:点击此处 文章目录 web面试题定义源码测试示例 之前去笔试&…...
Vue3 Props组件简单应用(父组件获取子组件数据)
去官网学习→Props | Vue.js 运行示例: 代码:App.vue <template><img alt"Vue logo" src"./assets/logo.png"><h2>Vue Props数据传递</h2><h4>子组件中的数据:{{ content }}</h4>…...
Mybatis查询
返回实体类,必须指定返回类型, resultType不能省略,并且数据库字段名与实体类不一致会填充NULL,实体类我们一般都是驼峰,数据库字段一般都是下划线,所以在查询的时候可以起别名解决,属性填充本质上调用的是…...
如何让ES低成本、高性能?滴滴落地ZSTD压缩算法的实践分享
前文分别介绍了滴滴自研的ES强一致性多活是如何实现的、以及如何提升ES的性能潜力。由于滴滴ES日志场景每天写入量在5PB-10PB量级,写入压力和业务成本压力大,为了提升ES的写入性能,我们让ES支持ZSTD压缩算法,本篇文章详细展开滴滴…...
[数据集][目标检测]PCB板缺陷目标检测数据集VOC格式693张6类别
数据集格式:Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):693 标注数量(xml文件个数):693 标注类别数:6 标注类别名称:["missing_hole",…...
Linux 安装中文输入法
在linux安装ibus输入法 在linux安装ibus输入法 加入开机自启动 运行以下命令以编辑IBus配置文件:如果没有该文件,则可以创建一个新文件。 nano ~/.xprofile将以下内容添加到文件中:这些命令将设置相应的环境变量并启动IBus守护进程。 ex…...
redisson
redisson 使用 1,导入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.12.5</version> </dependency>2,创建配置类 package com.woniu.config;impor…...
源码分析——HashMap(JDK1.8)源码+底层数据结构分析
文章目录 HashMap 简介底层数据结构分析JDK1.8之前JDK1.8之后 HashMap源码分析构造方法put方法get方法resize方法 HashMap常用方法测试 HashMap 简介 HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。 JDK1.8 之前 HashM…...
企业举办活动邀请媒体的意义和重要性
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 企业举办活动并邀请媒体的意义和重要性是多方面的,主要有以下一些: 1. 品牌曝光与宣传:邀请媒体参与企业活动可以提高企业的品牌曝光度。媒体报道能够…...
从零开始学python(十六)爬虫集群部署
前言 今天讲述Python框架源码专题最后一个部分,爬虫集群部署,前面更新了十五个从零开始学python的系列文章,分别是: 1.编程语法必修篇 2.网络编程篇 3.多线程/多进程/协程篇 4.MySQL数据库篇 5.Redis数据库篇 6.MongoDB数据库篇 …...
flutter
1.dart语言基础 数据类型 //fluttenum a 10;double b 10.0;int x 10;num c 10.0;//字符串拼接方式。和kotlin的是一样的。 也可以和java中一样做拼接。String testString "aaaaaaaaaaaaaaaaaaaaaaaaaaaa";String bbbbb "aaaaaaaaaaaaaaccccc";S…...
iOS 开发-编译第三方库 openssl及curl
1、前提 iOS编译库需要三个架构,arm64,arm64e,x86_64,其中x86_64为模拟器所需 iOS编译库需要下载xcode及对应的command line tool(执行命令时可以自动下载),下载失败需要去官网搜索下载 2、openssl 参考iOS如何编译OpenSSL静态…...
运维监控学习笔记1
1、监控对象: 1、监控对象的理解;CPU是怎么工作的; 2、监控对象的指标:CPU使用率;上下文切换; 3、确定性能基准线:CPU负载多少才算高; 2、监控范围: 1、硬件监控&#x…...
由于找不到vcruntime140.dll,无法继续执行代码,三种修复方法
为什么我们很多人都遇到过打开电脑软件时候突然电脑就提示找不到vcruntime140.dll,或许vcruntime140.dll丢失,那么vcruntime140.dll到底是什么?为什么会丢失,丢失了要怎么解决修复呢?下面小编都会一一介绍给大家&#…...
【FPGA零基础学习之旅#10】按键消抖模块设计与验证(一段式状态机实现)
🎉欢迎来到FPGA专栏~按键消抖模块设计与验证 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大…...
【EI复现】基于阶梯碳交易的含P2G-CCS耦合和燃气掺氢的虚拟电厂优化调度(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
nli-MiniLM2-L6-H768惊艳效果:支持‘幽默,讽刺,严肃,温情’等抽象情感标签精准识别
nli-MiniLM2-L6-H768惊艳效果:支持幽默,讽刺,严肃,温情等抽象情感标签精准识别 1. 模型介绍 nli-MiniLM2-L6-H768是一款基于cross-encoder/nli-MiniLM2-L6-H768轻量级NLI模型开发的本地零样本文本分类工具。这个工具最大的特点是无需任何微调训练,只需…...
深度学习如何革新药物发现:从细胞图像到AI模型
1. 深度学习在药物发现中的革命性应用药物研发领域正经历一场由深度学习技术驱动的范式变革。传统药物研发平均需要14年时间和数十亿美元投入,而成功率却不足10%。这种"高投入、低产出"的困境主要源于生物系统的极端复杂性——人体包含约37万亿个细胞&…...
AutoCAD字体管理终极指南:如何用FontCenter彻底解决字体缺失问题
AutoCAD字体管理终极指南:如何用FontCenter彻底解决字体缺失问题 【免费下载链接】FontCenter AutoCAD自动管理字体插件 项目地址: https://gitcode.com/gh_mirrors/fo/FontCenter 你是否曾在打开AutoCAD图纸时,看到文字变成问号或乱码而束手无策…...
TwitchDropsMiner完整指南:零带宽自动获取游戏掉落奖励的终极方案
TwitchDropsMiner完整指南:零带宽自动获取游戏掉落奖励的终极方案 【免费下载链接】TwitchDropsMiner An app that allows you to AFK mine timed Twitch drops, with automatic drop claiming and channel switching. 项目地址: https://gitcode.com/GitHub_Tren…...
HS2-HF_Patch:如何为Honey Select 2一键安装完整汉化与增强补丁
HS2-HF_Patch:如何为Honey Select 2一键安装完整汉化与增强补丁 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 如果你正在寻找Honey Select 2的完整…...
3分钟掌握DeepMosaics:AI驱动的智能图像隐私保护终极指南
3分钟掌握DeepMosaics:AI驱动的智能图像隐私保护终极指南 【免费下载链接】DeepMosaics Automatically remove the mosaics in images and videos, or add mosaics to them. 项目地址: https://gitcode.com/gh_mirrors/de/DeepMosaics 在数字时代,…...
告别盲调!用yPlot软件示波器+STM32,5分钟搞定PID参数可视化调试
告别盲调!用yPlot软件示波器STM32实现PID参数可视化调试实战 嵌入式开发者常面临一个经典困境:当智能车的电机转速波动、无人机的姿态角持续振荡时,我们如何快速定位PID参数的问题?传统"改参数-编译-烧录-观察"的循环不…...
国家中小学智慧教育平台电子课本下载神器:3分钟搞定全套教材PDF
国家中小学智慧教育平台电子课本下载神器:3分钟搞定全套教材PDF 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 …...
Windows平台Hadoop 3.3.6环境搭建与IDEA集成开发:从零实现HDFS文件操作
1. Windows平台Hadoop 3.3.6环境搭建全攻略 在Windows上搭建Hadoop环境对于大数据初学者来说是个不小的挑战。我刚开始接触Hadoop时,光是解决Windows兼容性问题就折腾了好几天。不过别担心,跟着我的步骤走,你可以在30分钟内完成Hadoop 3.3.6的…...
