使用云服务器和Frp(快速反向代理)框架快速部署实现内网穿透
目录
- 一. 背景
- 1.1 内网穿透
- 1.2 Frp介绍
- 1.3 Frp配置流程
- 二. 云服务器配置
- 2.1 配置安全组
- 2.2 编写frps.ini
- 三. 内网主机配置
- 3.1 编辑frpc.ini文件
- 3.2 启动服务并配置开机自启动
- 四. 参考文献
一. 背景
现在有一台ubuntu云服务器,我想通过内网穿透将一台内网的主机当成云服务器来使用(包括但不限于ssh、http和https服务),比如我想在外地通过ssh远程连接到一台内网没有桌面的主机(可以是Ubuntu或者Windows,Windows配置类似),就可以使用frp内网穿透, 配置起来非常方便快捷。
1.1 内网穿透
内网穿透是指,通过一些代理工具,允许你在内网主机上运行代理工具客户端,通过连接到公网上运行的代理服务器,将内网主机的服务暴露到公网上,实现内网穿透,让外部用户可以访问内网的服务。
常见的内网穿透工具:
1.Ngrok
:Ngrok是一个简单易用的内网穿透工具,它可以将本地服务暴露到公网上,并提供一个临时的公网地址供外部访问。Ngrok支持多种协议和自定义子域名,但其免费版功能有限,需要购买许可证来解锁更多功能。
2.Frp
(Fast Reverse Proxy):Frp是一个快速的反向代理工具,用于将局域网中的内部服务暴露给公网,实现内网穿透的功能。Frp是开源的,支持TCP、UDP、HTTP和HTTPS等协议,配置简单,支持身份验证和加密功能。
3.SSH反向隧道
:SSH反向隧道是通过SSH协议建立一个安全的连接,将本地端口转发到公网服务器,实现内网穿透。SSH反向隧道是一种简单、安全的方法,但对SSH服务有一定的依赖。
4.ZeroTier
:ZeroTier是一种虚拟局域网(SD-WAN)技术,它可以将多个设备虚拟连接成一个局域网,实现内网穿透。ZeroTier支持多平台,包括Windows、Linux、macOS、iOS和Android等。
1.2 Frp介绍
Frp(Fast Reverse Proxy)是一个快速的反向代理工具,它是一款基于Golang语言开发的开源项目,用于将局域网中的内部服务暴露给公网,实现内网穿透的功能。
主要特点和用途:
1.内网穿透:Frp允许你在内网主机上运行frpc客户端,通过连接到公网上运行的frps服务器,将内网主机的服务暴露到公网上,实现内网穿透,让外部用户可以访问内网的服务。
2.简单易用:配置简单,可以通过编辑ini配置文件来指定要暴露的内网服务和端口号等信息。
3.多种协议支持:Frp支持多种协议,如TCP
、UDP
、HTTP
、HTTPS
等,适用于各种类型的服务。
4.安全性:Frp提供了身份验证和加密功能,可以保障数据传输的安全性。
Frp由两个组件组成:
(1)frps(Frp Server):运行在公网服务器上,用于接受来自frpc客户端的连接请求,并将请求转发到内网主机上的指定服务。
(2)frpc(Frp Client):运行在内网主机上,用于与frps服务器建立连接,并将本地服务的请求转发到frps服务器上。
1.3 Frp配置流程
1.在公网服务器上配置frps,编辑frps.ini文件指定公网服务器的IP地址和端口号,以及认证令牌等。
2.在内网主机上配置frpc,编辑frpc.ini文件指定frps服务器的IP地址和端口号,以及要暴露的内网服务的端口号等。
3.运行frps服务器和frpc客户端。
二. 云服务器配置
2.1 配置安全组
打开云服务器的7000、80和443端口:
2.2 编写frps.ini
下载frp: https://github.com/fatedier/frp/releases
tar -zxvf frp_0.37.1_linux_amd64.tar.gz
cd frp_0.37.1_linux_amd64/frps
[common]
# frps服务监听的IP地址和端口
bind_addr = 0.0.0.0
bind_port = 7000# frps服务的令牌,用于客户端登录认证
token = 12345678# 以下是示例的端口映射配置,可以根据实际需求进行添加或修改
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000[http]
type = http
local_ip = 127.0.0.1
local_port = 80
custom_domains = example.com[https]
type = https
local_ip = 127.0.0.1
local_port = 443
custom_domains = secure.example.com# 更多端口映射配置可以继续添加
三. 内网主机配置
下载frp: https://github.com/fatedier/frp/releases
tar -zxvf frp_0.37.1_linux_amd64.tar.gz
cd frp_0.37.1_linux_amd64/frps
3.1 编辑frpc.ini文件
[common]
# server_addr为FRPS服务器IP地址
server_addr = 124.xx.xxx.29
# server_port为服务端监听端口,bind_port
server_port = 7000
# 身份验证
token = 12345678[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000# [ssh] 为服务名称,下方此处设置为,访问frp服务端的7000端口时,等同于通过中转服务器访问127.0.0.1的6000端口。
# type 为连接的类型,此处为tcp
# local_ip 为中转客户端实际访问的IP
# local_port 为目标端口
# remote_port 为远程端口
3.2 启动服务并配置开机自启动
如果仅仅想短暂启动frp服务:
./frpc -c frpc.ini
如果想要让内网主机每次开机都启动穿透服务:
sudo vim /etc/systemd/system/frpc.service
编辑内容如下:
[Unit]
Description=frp client service
After=network.target[Service]
Type=simple
ExecStart=xxxx/frp_0.37.1_linux_amd64/frpc -c xxxx/frp_0.37.1_linux_amd64/frpc.ini
Restart=always
RestartSec=30[Install]
WantedBy=multi-user.target
执行以下命令启用frpc服务:
sudo systemctl enable frpc.service
执行以下命令启动frpc服务:
sudo systemctl start frpc.service
重启电脑,等待30s后可使用以下命令检查frpc服务的状态:
sudo systemctl status frpc.service
四. 参考文献
b站司波图博主的教程地址:https://gitee.com/spoto/natserver
相关文章:

使用云服务器和Frp(快速反向代理)框架快速部署实现内网穿透
目录 一. 背景1.1 内网穿透1.2 Frp介绍1.3 Frp配置流程 二. 云服务器配置2.1 配置安全组2.2 编写frps.ini 三. 内网主机配置3.1 编辑frpc.ini文件3.2 启动服务并配置开机自启动 四. 参考文献 一. 背景 现在有一台ubuntu云服务器,我想通过内网穿透将一台内网的主机当…...
Mac 上使用 Tesseract OCR 识别图片文本
Tesseract OCR 引擎:Tesseract是一个开源的OCR引擎,你需要先安装它。可以从Tesseract官方网站(https://github.com/tesseract-ocr/tesseract)下载适用于你的操作系统的安装程序或源代码,并按照官方文档进行安装。 Tes…...
《MapboxGL 基础知识点》- 放大/缩小/定位/级别
中心点 getCenter:获取中心点 const {lng, lat} map.getCenter(); setCenter:设置中心点 // lng, lat map.setCenter([134, 28]); 缩放级别 getZoom:获取当前缩放级别 map.getZoom(); setZoom:设置缩放级别 map.setZoom(5…...

VScode的简单使用
一、VScode的安装 Visual Studio Code简称VS Code,是一款跨平台的、免费且开源的现代轻量级代码编辑器,支持几乎主流开发语言的语法高亮、智能代码补全、自定义快捷键、括号匹配和颜色区分、代码片段提示、代码对比等特性,也拥有对git的开箱…...
# Unity 如何获取Texture 的内存大小
Unity 如何获取Texture 的内存大小 在Unity中,要获取Texture的内存文件大小,可以使用UnityEditor.TextureUtil类中的一些函数。这些函数提供了获取存储内存大小和运行时内存大小的方法。由于UnityEditor.TextureUtil是一个内部类,我们需要使…...

dolphinscheduler switch+传参无坑版
dolphinscheduler 的前后传参有较多的坑,即便是3.0.5版本仍然有一些bug 下面是目前能无坑在3.0.5版本上使用的操作 前置任务 在界面上设置变量和参数名称 跟官方网站不一样,注意最后一行一定使用echo ${setValue(key$query)}的方式,注意引…...
VINS-fusion安装
VINS-fusion中用的opencv3,如果安装的opencv4要做一系列替换 VINS-Mono在opencv4环境下的安装问题和解决方法 https://zhuanlan.zhihu.com/p/548140724 Vins-Fusion安装记录 https://zhuanlan.zhihu.com/p/432167383 CV_FONT_HERSHEY_SIMPLEX -> cv::FONT_HER…...

智慧消防:如何基于视频与智能分析技术搭建可视化风险预警平台?
一、背景分析 消防安全是一个重要的话题,涉及到每个人的生活和安全。每年都会发生大量的火灾,给人们带来极大的危害,摧毁了大量的财产,甚至造成了可怕的人员伤亡。而消防安全监督管理部门人员有限,消防安全监管缺乏有…...
selenium定位元素的方法
Selenium可以驱动浏览器完成各种操作,比如模拟点击等。要想操作一个元素,首先应该识别这个元素。人有各种的特征(属性),我们可以通过其特征找到人,如通过身份证号、姓名、家庭住址。同理,一个元…...
RISC-V特权级别
特权级别 RISC-V共有6个特权级别: 机器模式(M模式) M模式全称为Machine mode(机器模式)运行在这个模式下的程序为最高权限,它属于RISC-V里的最高权限模式,它具有访问所有资源的权限ÿ…...

RISC-V 指令集介绍
1. 背景介绍 指令集从本质上可以分为复杂指令集(Complex Instruction Set Computer,CISC)和精简指令集(Reduced Instruction Set Computer,RISC)两种。复杂指令集的特点是能够在一条指令内完成很多事情。 指…...

操作系统5
设备管理 I/O设备 什么是?--- 将数据Input/Output(输入/输出)计算机的外部设备。 分类: 按使用特性:人机交互类外设、存储设备、网络通信设备; 按传输速度:低速、中速、高速设备࿱…...
K8S系列文章之 Docker常用命令
一、镜像基础命令: $ docker info # 查看docker信息 $ docker system df # 查看镜像/容器/数据卷所占的空间。 $ ip addr #查看容器内部网络地址。 $ docker images # 查看镜像 $ docker search 镜像名称 # 搜索镜像 --limit :只列出N个镜像,默认为25个…...

谷歌: 安卓补丁漏洞让 N-days 与 0-days 同样危险
近日,谷歌发布了年度零日漏洞报告,展示了 2022 年的野外漏洞统计数据,并强调了 Android 平台中长期存在的问题,该问题在很长一段时间内提高了已披露漏洞的价值和使用。 更具体地说,谷歌的报告强调了安卓系统中的 &quo…...

linux 学成之路(基础篇)(二十三)MySQL服务(下)
目录 一、用户权限管理概述 二、用户权限类型 三、用户赋予权限 四、删除权限 五、删除用户 一、用户权限管理概述 数据库用户权限管理是数据库系统中非常重要的一个方面,它用于控制不同用户访问和操作数据库的权限范围。数据库用户权限管理可以保护敏感数据和…...

MySQL初探
Background 通过阅读小林coding,大致了解了mysql数据库的种种特点,与之前学的数据库实现大体思路相同,感觉学习不能停留在理论层面,要调研生产级别的中间件实现。 一条代码运行在mysql上的流程 1. 连接的过程需要先经过 TCP 三次…...

blender 用蒙版添加材质
一、添加材质常规方法 选择物体新建材质,shift a 新建图像纹理,此时会发现添加上的纹理会有接缝,shift a 新建映射 纹理坐标,纹理坐标选择生成,此时,之前的接缝便会消失; 如何快捷添加纹理坐…...
前端面试的性能优化部分(2)每篇10题
1. 常见的图片格式及使用场景 常见的图片格式有 JPEG、PNG、GIF、WebP 和 SVG,它们各有适用的使用场景: JPEG (Joint Photographic Experts Group): 使用场景:适用于照片和真实场景的图片,特别是色彩丰富和渐变丰富的…...

Spring——Spring是什么?IoC容器是什么?
文章目录 前言一、Spring是什么1.IoC 容器 —— 容器2.IoC 容器 —— IoC传统程序开发控制反转式程序开发 3.Spring IoC 二、DI是什么总结 前言 本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也对编程感兴趣的话,互关一下…...

【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Pythonmatlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

ubuntu中安装conda的后遗症
缘由: 在编译rk3588的sdk时,遇到编译buildroot失败,提示如下: 提示缺失expect,但是实测相关工具是在的,如下显示: 然后查找借助各个ai工具,重新安装相关的工具,依然无解。 解决&am…...
计算机系统结构复习-名词解释2
1.定向:在某条指令产生计算结果之前,其他指令并不真正立即需要该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方,那么就可以避免停顿。 2.多级存储层次:由若干个采用不同实现技术的存储…...
标注工具核心架构分析——主窗口的图像显示
🏗️ 标注工具核心架构分析 📋 系统概述 主要有两个核心类,采用经典的 Scene-View 架构模式: 🎯 核心类结构 1. AnnotationScene (QGraphicsScene子类) 主要负责标注场景的管理和交互 🔧 关键函数&…...
【中间件】Web服务、消息队列、缓存与微服务治理:Nginx、Kafka、Redis、Nacos 详解
Nginx 是什么:高性能的HTTP和反向代理Web服务器。怎么用:通过配置文件定义代理规则、负载均衡、静态资源服务等。为什么用:提升Web服务性能、高并发处理、负载均衡和反向代理。优缺点:轻量高效,但动态处理能力较弱&am…...