使用云服务器和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支持多种协议,如TCPUDPHTTPHTTPS等,适用于各种类型的服务。
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

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

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

相关文章

RocketMQ 5.1.0 源码详解 | Producer 启动流程

文章目录 初始化DefaultMQProducer实例启动流程DefaultMQProducer#startDefaultMQProducerImpl#startMQClientInstance#start启动流程总结 实例内容 初始化DefaultMQProducer实例 初始化一个 DefaultMQProducer 对象的代码如下 // 返回一个producer对象 DefaultMQProducer pr…

[SQL挖掘机] - 转换机制

一种较为有用的数据转换机制是在查询中修改列的数据类型. 通常, 当处理不同数据类型(如数字)的列时, 可使用仅对一种数据类型(如文本)有效的函数. 当修改某一列的数据类型时, 可简单地采用 column::datatype 格式. 其中, column表示为列名, datatype 表示为将列调整后的数据类型…

python多线程

目录 一.多线程的定义 A.什么是多线程? B.多线程如今遇到的挑战 C.总结 二.python中的多线程 A.python中的多线程底层原理: B.全局解释器锁导致python多线程不能实现真正的并行执行! C.总结应用场景 三.java多线程,以及…

【Matlab】判断点和多面体位置关系的两种方法实现

我的主页: 技术邻:小铭的ABAQUS学习的技术邻主页博客园 : HF_SO4的主页哔哩哔哩:小铭的ABAQUS学习的个人空间csdn:qgm1702 博客园文章链接: https://www.cnblogs.com/aksoam/p/17590039.html 分别是向量判别法&…

Ubuntu 22.04下对无线网络作静态ip设置

内容如题所示,最近本人安全毕业,参加工作了,此处应有鲜花和掌声,哈哈哈。但新的生活总是有很多的小问题,坎坎坷坷,所以,我继续记录工作和学习生活中遇到的问题。 今天带我的云哥给了我一个ip&am…

Python入门【变量的作用域(全局变量和局部变量)、参数的传递、浅拷贝和深拷贝、参数的几种类型 】(十一)

👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误…

无涯教程-jQuery - wrapInner( html )方法函数

wrapInner(html)方法使用HTML结构包装每个匹配元素(包括文本节点)的内部子内容。 wrapInner( html ) - 语法 selector.wrapInner( html ) 这是此方法使用的所有参数的描述- html - 将动态创建并环绕目标的HTML字符串。 wrapInner( html ) - 示例 以下是一个简单的示例…

Jupyter Notbook无法刷新.bashrc中的环境变量

Jupyter Notbook无法刷新.bashrc中的环境变量 原因解决方法 原因 在Linux系统中,在.bashrc中添加环境变量后,打开jupyter notebook发现无法加载添加的环境变量。这是因为.bashrc只对bash起作用,如果使用GUI软件直接访问,是无法加…

51单片机:数码管和矩阵按键

目录 一:动态数码管模块 1:介绍 2:共阴极和共阳极 A:共阴极 B:共阳极 C:转化表 3:74HC138译码器 4:74HC138译码器控制动态数码管 5:数码管显示完整代码 二:矩阵按键模块 1:介绍 2:原理图 3:矩阵按键代码 一:动态数码管模块 1:介绍 LED数码管:数码管是一种…

NLP实践——Llama-2 多轮对话prompt构建

NLP实践——Llama-2 多轮对话prompt构建 1. 问题提出2. prompt的正确形式3. 效果测试4. 结尾 1. 问题提出 最近,META开源了Llama-2模型,受到了广泛的关注和好评,然而,在官方给的使用说明中,并没有对使用方法进行特别细…

Verilog语法学习——LV10_使用函数实现数据大小端转换

LV10_使用函数实现数据大小端转换 题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page1&tabVerilog篇&topicId301) 题目 描述 在数字芯片设计中,经常把实现特定功能的模块编写成函数&…

ES自定义分词,对数字进行分词

需求:需要将下面类似的数据分词为:GB,T,32403,1,2015 "text": "GB/T 32403.1-2015"1、调研 现在用的ik分词器效果 POST _analyze {"analyzer": "ik_max_word","text": "GB/T 32403.1-2015&qu…

Java 反射

反射 Java 的反射( reflection )机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获…

一.安装k8s环境

1.初始操作 默认3台服务器都执行 # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld# 关闭selinux sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时# 关闭swap swapoff -a # 临时 sed -ri s/.*swap.*/#&/ /etc/fstab…

QT--day3(定时器事件、对话框)

头文件代码&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器事件处理时间头文件 #include <QTime> //时间类 #include <QtTextToSpeech> #include <QPushButton> #include <QLabel&g…

【数据结构】实验六:队列

实验六 队列 一、实验目的与要求 1&#xff09;熟悉C/C语言&#xff08;或其他编程语言&#xff09;的集成开发环境&#xff1b; 2&#xff09;通过本实验加深对队列的理解&#xff0c;熟悉基本操作&#xff1b; 3&#xff09; 结合具体的问题分析算法时间复杂度。 二、…

ubuntu23.04 flush DNS caches

如何在Ubuntu 23.04中刷新DNS缓存 现在&#xff0c;如果你运行的是Ubuntu 23.04&#xff0c;"系统解决 "的方法将不再适用于你。让我们检查一下你目前的缓存大小。打开你的Ubuntu终端&#xff0c;运行以下command&#xff1a; resolvectl statistics现在&#xff0c…

mysql主从同步怎么跳过错误

今天介绍两种mysql主从同步跳过错误的方法&#xff1a; 一、两种方法介绍 1、跳过指定数量的事务&#xff1a; mysql>slave stop; mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER 1 #跳过一个事务 mysql>slave start2、修改mysql的配置文件&#xff0c;通过slav…

【QT 网络云盘客户端】——实现文件属性窗口

目录 文件属性对话框 设置字体样式 获取文件的信息 显示文件属性对话框 当我们点击文件中的属性&#xff0c;则会弹出一个属性对话框&#xff1a; 实现过程&#xff1a; 0.设置 属性 菜单项的槽函数。 1.鼠获取鼠标选中的QListWidgetItem,它包含 图标和文件名 2.根据文件…

POLARDB IMCI 白皮书 云原生HTAP 数据库系统 一 数据压缩和打包处理与数据更新

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…