手动部署并测试内网穿透

文章目录

  • 手动部署并测试内网穿透
    • 1、原理
    • 2、下载 frp 文件
    • 3、配置对应的配置文件
    • 4、启动 frp 服务
    • 5、效果

img

手动部署并测试内网穿透

1、原理

原理就是让你需要访问的内网可以被其他内网访问到。

其实就是让内网经过一个公网服务器的转发,使得能够被访问。

这里我们需要用到 frp:

FRP(Fast Reverse Proxy)是一款开源的反向代理工具,通常用于内网穿透。它可以让处于防火墙或NAT后的设备对外提供服务,允许外网用户访问位于内网中的服务器或服务。

步骤:

  • 先让公网服务器下载一个 frp 文件,配置其对应的配置文件并启动,这里作为服务器端。
  • 再让需要被访问的内网对你的服务器进行连接,进行对应的 IP 地址和端口映射(这里也需要配置对应的配置文件)。
  • 接下来发送到你服务器的对应端口的数据就会被转发到该内网中对应的 IP 和映射端口。
  • 同理,内网中对应的 IP 和端口的数据也可以发送到访问它的 IP 中。


2、下载 frp 文件

frp 文件的下载链接


3、配置对应的配置文件

我们下载好对应的文件,对其进行解压缩,分别放到云服务器(有公网 IP )和需要访问的内网主机上。

下面是举例访问内网的 ssh 服务器

云服务器端:

xp2@Xpccccc:~$ ll
total 76
drwxr-xr-x 9 xp2  xp2  4096 Sep 19 12:09 ./
drwxr-xr-x 5 root root 4096 Aug 31 18:34 ../
-rw------- 1 xp2  xp2  9335 Sep 19 12:09 .bash_history
-rw-r--r-- 1 xp2  xp2   220 Feb 25  2020 .bash_logout
-rw-r--r-- 1 xp2  xp2  3106 Aug 31 18:35 .bashrc
drwx------ 4 xp2  xp2  4096 Sep  1 21:28 .cache/
drwxrwxr-x 3 xp2  xp2  4096 Sep  1 20:28 .dotnet/
drwxr-xr-x 2 xp2  xp2  4096 Sep 19 12:09 frp_0.58.1_linux_amd64/  # 下载解压好的文件
-rw-rw-r-- 1 xp2  xp2    50 Sep 10 16:04 .gitconfig
drwxrwxr-x 4 xp2  xp2  4096 Sep  6 11:13 items/
drwxrwxr-x 4 xp2  xp2  4096 Sep 10 16:02 Items/
-rw------- 1 xp2  xp2    34 Sep  4 01:59 .mysql_history
-rw-r--r-- 1 xp2  xp2   161 Aug 31 18:35 .profile
-rw-r--r-- 1 xp2  xp2     0 Sep  3 20:28 .sudo_as_admin_successful
drwxrwxr-x 4 xp2  xp2  4096 Sep  6 10:16 third_part/
-rw------- 1 xp2  xp2  2558 Sep 19 12:09 .viminfo
drwxrwxr-x 5 xp2  xp2  4096 Sep 10 12:42 .vscode-server/
-rw-rw-r-- 1 xp2  xp2   183 Sep  1 20:26 .wget-hsts
xp2@Xpccccc:~$ 

进入 frp 文件进行配置:

xp2@Xpccccc:~$ cd frp_0.58.1_linux_amd64/
xp2@Xpccccc:~/frp_0.58.1_linux_amd64$ ll
total 31980
drwxr-xr-x 2 xp2 xp2     4096 Sep 19 12:09 ./
drwxr-xr-x 9 xp2 xp2     4096 Sep 19 12:09 ../
-rwxr-xr-x 1 xp2 xp2 14471320 May 31 14:37 frpc*
-rw-r--r-- 1 xp2 xp2      142 May 31 14:40 frpc.toml
-rwxr-xr-x 1 xp2 xp2 18239640 May 31 14:37 frps*
-rw-r--r-- 1 xp2 xp2       16 Aug 31 19:08 frps.toml
-rw-r--r-- 1 xp2 xp2    11358 May 31 14:40 LICENSE
xp2@Xpccccc:~/frp_0.58.1_linux_amd64$ 

这里是服务器端,那我们配置 frps.toml 文件(s -> server):

xp2@Xpccccc:~/frp_0.58.1_linux_amd64$ vim frps.toml 
bindPort = 7777 // 这个是对应的内网主机访问云服务器的端口号,建立TCP连接

内网服务器主机端:

(base) ynu@3090ti:/data/runcode/xp$ ll
总计 24
drwxrwxr-x  6 ynu ynu 4096  830 22:03 ./
drwxrwxrwx 30 ynu ynu 4096  830 20:27 ../
drwxr-xr-x  4 ynu ynu 4096  914 21:18 data/
drwxr-xr-x  2 ynu ynu 4096  919 12:02 frp_0.58.1_linux_amd64/ # 下载解压好的文件
drwxrwxr-x  3 ynu ynu 4096  913 21:12 .idea/
drwxrwxr-x  4 ynu ynu 4096  729 14:57 venv/
(base) ynu@3090ti:/data/runcode/xp$ 

进入 frp 文件进行配置

(base) ynu@3090ti:/data/runcode/xp/frp_0.58.1_linux_amd64$ ll
总计 31980
drwxr-xr-x 2 ynu ynu     4096  919 12:02 ./
drwxrwxr-x 6 ynu ynu     4096  830 22:03 ../
-rwxr-xr-x 1 ynu ynu 14471320  531 14:37 frpc*
-rw-r--r-- 1 ynu ynu      153  831 19:09 frpc.toml
-rwxr-xr-x 1 ynu ynu 18239640  531 14:37 frps*
-rw-r--r-- 1 ynu ynu       16  830 12:46 frps.toml
-rw-r--r-- 1 ynu ynu    11358  531 14:40 LICENSE

这里是客户端,那我们配置 frpc.toml 文件(c -> client):

(base) ynu@3090ti:/data/runcode/xp/frp_0.58.1_linux_amd64$ vim frpc.toml 
serverAddr = "101.126.70.48"
serverPort = 7777  // 访问云服务器的端口号 ,建立TCP连接[[proxies]]
name = "new_ssh-service" // 名称
type = "tcp"			 // 代理类型
localIP = "127.0.0.1"	 // 本地IP
localPort = 22			 // 内网服务监听的端口,也就是ssh服务 ,即7778映射22号端口
remotePort = 7778  		 // #需要在公网服务器上监听的端口,其他人未来可以通过这个端口访问,我们的本地的 22 号服务

4、启动 frp 服务

服务器和客户端都可以这样在后台启动

云服务器端:让其在后台运行(成为守护进程)

xp2@Xpccccc:~/frp_0.58.1_linux_amd64$ nohup ./frps -c ./frps.toml &>/dev/null &

被访问的内网主机端:

(base) ynu@3090ti:/data/runcode/xp/frp_0.58.1_linux_amd64$ nohup ./frpc -c ./frpc.toml &>/dev/null &
  • &> /dev/null:这是重定向操作,用于将命令的标准输出(stdout)和标准错误(stderr)都重定向到/dev/null。/dev/null 是一个特殊的设备文件,向它写入的内容都会被丢弃,读取它则会立即返回文件结束。因此,这个操作的作用是忽略命令的所有输出信息。

5、效果


OKOK,手动部署并测试内网穿透就到这里。如果你对Linux和C++也感兴趣的话,可以看看我的主页哦。下面是我的github主页,里面记录了我的学习代码和leetcode的一些题的题解,有兴趣的可以看看。

Xpccccc的github主页

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Python报错已解决】ModuleNotFoundError: No module named ‘tensorflow‘

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

物联网开发+充电桩管理系统+充电桩系统源码

简述 SpringBoot 框架,充电桩平台充电桩系统充电平台充电桩互联互通协议云快充协议1.5新能源汽车电动自行车公交车-四轮车充电充电源代码充电平台源码Java源码无加密项目 介绍 云快充协议云快充1.5协议云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充…

半导体器件制造5G智能工厂数字孪生物联平台,推进制造业数字化转型

半导体器件制造行业作为高科技领域的核心驱动力,正积极探索和实践以5G智能工厂数字孪生平台为核心的新型制造模式。这一创新不仅极大地提升了生产效率与质量,更为制造业的未来发展绘制了一幅智能化、网络化的宏伟蓝图。 在半导体器件制造5G智能工厂中&a…

每天五分钟计算机视觉:将人脸识别问题转换为二分类问题

本文重点 在前面的课程中,我们学习了两种人脸识别的网络模型,这两种人脸识别网络不能算是基于距离或者Triplet loss等等完成的神经网络参数的学习。我们比较熟悉的是分类任务,那么人脸识别是否可以转变为分类任务呢? 本节课程我们将介绍一种全新的方法来学习神经网络的参…

微服务架构陷阱与挑战

微服务架构6大陷阱 现在微服务的基础设施还是越来越完善了,现在基础设施缺乏的问题逐渐被解决了。 拆分粒度太细,服务关系复杂 拆分降低了服务的内部复杂度,但是提升了系统的外部复杂度,服务越多,服务和服务之间的连接…

java的Excel导出,数组与业务字典匹配并去掉最后一个逗号

♥️作者:小宋1021 🤵‍♂️个人主页:小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油&#xff01…

Node-RED和物联网分析:实时数据处理和可视化平台

这篇论文的标题是《Node-RED and IoT Analytics: A Real-Time Data Processing and Visualization Platform》,发表在《Tech-Sphere Journal of Pure and Applied Sciences (TSJPAS)》2024年第一期上。论文主要探讨了Node-RED和物联网分析在物联网(IoT)实时数据处理…

Vue学习记录之六(组件实战及BEM框架了解)

一、BEM BEM是一种前端开发中常用的命名约定,主要用于CSS和HTML的结构化和模块化。BEM是Block、Element、Modifier的缩写。 Block(块):独立的功能性页面组件,可以是一个简单的按钮,一个复杂的导航条&…

无法创建新的堆栈防护界面

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…

商业实战!深入剖析StableDiffusion 电商服装模特精准替换真人,虚拟模特变现教程

大家好,我是灵魂画师向阳 在之前的文章中,我们已经深入讲解了SD与ControlNet基础知识和原理。接下来我们将结合这一堆基础工具法宝组合使用,完成一些有意义的AIGC商业实战案例分享。也欢迎大家在文末留言建议希望了解的实战案例。 本文是来…

在基准测试和规划测试中选Flat还是Ramp-up?

Flat测试和Ramp-up测试是各有优势的,下面我们就通过介绍几种实用的性能测试策略来分析这两种加压策略的着重方向。 基准测试 基准测试是一种测量和评估软件性能指标的活动,通过基准测试建立一个已知的性能水平(称为基准线)&…

计算机毕业设计 美妆神域网站的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

table表格,让thead固定,tbody内容滚动,关键是都对齐的纯css写法

前言:哈喽,大家好,今天给大家分享今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 &#x1f…

编程实践|用 MoonBit 实现线段树(一)

引言 线段树(Segment Tree)是一种常见的数据结构,用于解决一些线性区间的修改、查询问题,比如对于问题: 给出一个长度已知的、有初值的数字数组,接下来要进行许多区间加法操作(将一个区间的数值都加上某个值&#xf…

线性dp 总结详解

就是感觉之前 dp 的 blog 太乱了整理一下。 LIS(最长上升子序列) 例题 给定一个整数序列&#xff0c;找到它的所有严格递增子序列中最长的序列&#xff0c;输出其长度。 思路 拿到题目&#xff0c;大家第一时间想到的应该是的暴力(dp)做法&#xff1a; #include <bits/s…

锐尔15注册机 锐尔文档扫描影像处理系统15功能介绍

锐尔文档扫描影像处理系统是一款全中文操作界面的文件、档案扫描及影像优化处理软件&#xff0c;是目前国内档案数字化行业里专业且优秀的影像优化处理软件。 无论是从纸质文件制作高质量的影像文件&#xff0c;或是检查已经制作好的影像文件&#xff0c;锐尔文档扫描影像处理…

LangChain 和 Elasticsearch 加速构建 AI 检索代理

作者&#xff1a;来自 Elastic Joe McElroy, Aditya Tripathi, Serena Chou Elastic 和 LangChain 很高兴地宣布发布新的 LangGraph 检索代理模板&#xff0c;旨在简化需要代理使用 Elasticsearch 进行代理检索的生成式人工智能 (GenAI) 代理应用程序的开发。此模板预先配置为使…

C++第十一节课 new和delete

一、new和delete操作自定义类型 new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数&#xff08;new会自动调用构造函数&#xff1b;delete会调用析构函数&#xff09; class A { public:A(int a 0): _a(a){cout <&l…

使用express或koa或nginx部署history路由模式的单页面应用

使用hash模式会有#&#xff0c;影响美观&#xff0c;所以使用history模式会是个更好的选择。 前端项目打包上线部署&#xff0c;可以使用下面的方式部署history模式的项目&#xff0c;下面以 jyH5 为例 expressjs部署 express脚手架搭建的app.js中添加如下代码&#xff1a; …

Superset二次开发之优化Mixed Chart 混合图(柱状图+折线)

背景 基于Mixed Chart(柱状图+折线)作图,显示 某维度A Top10 + 其他 数据,接口返回了值为 undefined 的某维度A 数据,前端渲染成 某维度A 值为 0 此图表存在的问题: 图表控件编辑页面,即便数据集正常查询出 Top10 + ‘其他’ 数据,但是堆积图表渲染时,返回了 值为 0…