使用云服务器和Frp(快速反向代理)框架快速部署实现内网穿透

news2024/12/28 6:44:05

目录

  • 一. 背景
    • 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.coloradmin.cn/o/806899.html

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

相关文章

PS软件打开闪退是什么原因?怎么处理闪退的问题?

Photoshop简称PS,它作为图像处理专家,具有相当强大的功能,但是有小伙伴说不好用,因为打开后会闪退,那该怎么办呢? PS软件闪退的处理方法: 1.下载并安装Adobe Creative Cloud,再登录…

专利背后的故事 | 一种安全访问控制方法

Part 01 专利发明的初衷 在互联网中,不可避免地存在一些具有风险或者异常的数据访问行为,会对企业管理系统、政府管理系统等系统的安全造成威胁。为了保障数据访问的安全,企业需要设置访问控制策略。访问控制策略通常是由一条或多条规则组成…

win10 查文件(夹)被占用

1、打开任务管理器-性能-打开资源监视器(左下角) 2、找到关联的句柄,输入文件(夹)地址 3、选择进程关闭

动态规划(组合总和+不同的二叉搜索树)

一)组合总和 377. 组合总和 Ⅳ - 力扣(LeetCode) 排列:所有情况是有序的 组合:所有情况是无序的 一)定义一个状态表示: 有限制条件下的组合问题: 1)dp[i][j]表示从前i个物品中进行挑选,总体积不超过j,所有的选法中,要的…

wxwidgets Ribbon使用简单实例

// RibbonSample.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <wx/wx.h> #include "wx/wxprec.h" #include "wx/app.h" #include "wx/frame.h" #include "wx/textctrl.h" #include "…

Linux中的pause函数

2023年7月29日&#xff0c;周六上午 函数原型 在Linux中&#xff0c;pause()函数用于使当前进程暂停执行&#xff0c;直到接收到一个信号。 #include <unistd.h>int pause(void);pause()函数不接受任何参数。 通常&#xff0c;pause()函数用于编写简单的信号处理程序&…

管理类联考——写作——实战篇——结构篇——不同角度

角度1——两种结构 人类面临的所有问题就是&#xff1a; 是什么? 为什么? 好不好(意义)? 怎么办? 结构引领思路&#xff1a; 想什么&#xff0c;比做什么更重要 怎么想&#xff0c;比想什么更重要 提纲挈领&#xff0c;纲举目张。先抓纲领&#xff0c;纲即结构&#xff…

SQL注入实操三(SQLi-labs 31-40)

文章目录 一、sqli-labs靶场1.轮子模式总结2.Less-31 FUN with WAFa.注入点判断b.轮子测试c.获取数据库名称d.获取表信息e.获取列信息f.获取表内数据 3.Less-32 Bypass addslashes()a.注入点判断b.轮子测试c.获取数据库名称d.获取表信息e.获取列信息f.获取表内数据 4.Less-33a.…

openGauss学习笔记-24 openGauss 简单数据管理-模式匹配操作符

文章目录 openGauss学习笔记-24 openGauss 简单数据管理-模式匹配操作符24.1 LIKE24.2 SIMILAR TO24.3 POSIX正则表达式 openGauss学习笔记-24 openGauss 简单数据管理-模式匹配操作符 数据库提供了三种独立的实现模式匹配的方法&#xff1a;SQL LIKE操作符、SIMILAR TO操作符…

秸秆变建材 | 更低碳,更高效!

秸秆是农作物收割后的残余资源&#xff0c;作为建材使用历史悠久。早在1886年美国内布拉斯加州就有了秸秆建筑。 其后秸秆建筑经历了两个发展高峰期&#xff1a;在第一个高峰期&#xff0c;1905年德国将麦秸和胶黏剂混合制成板材&#xff1b;1920年美国路易安那州建立了蔗渣制板…

【业务功能篇58】Springboot + Spring Security 权限管理 【中篇】

4.2.3 认证 4.2.3.1 什么是认证&#xff08;Authentication&#xff09; 通俗地讲就是验证当前用户的身份&#xff0c;证明“你是你自己”&#xff08;比如&#xff1a;你每天上下班打卡&#xff0c;都需要通过指纹打卡&#xff0c;当你的指纹和系统里录入的指纹相匹配时&…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(7 月 26 日论文合集)

文章目录 一、检测相关(7篇)1.1 Personal Protective Equipment Detection in Extreme Construction Conditions1.2 RecursiveDet: End-to-End Region-based Recursive Object Detection1.3 Re-mine, Learn and Reason: Exploring the Cross-modal Semantic Correlations for L…

【每日一题】—— A - 1-2-4 Test (AtCoder Beginner Contest 270)

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

操作系统的概念、并发和并行的区别、操作系统的发展和分类

操作系统 一、操作系统的概念1.1操作系统作为系统资源的管理者1.2向上层提供方便易用的服务1.2.1 联机命令接口&#xff08;交互式命令接口&#xff09;1.2.2 脱机命令接口&#xff08;批处理命令接口&#xff09;1.2.3程序接口 1.3最接近硬件的一层软件 二、操作系统的特征2.1…

renderjs 与 app-vue之间数据交互

renderjs 与 app-vue之间数据传值 文章目录 renderjs 与 app-vue之间数据传值renderjs效果图templatejs renderjs renderjs renderjs 的主要作用&#xff1a; 大幅降低逻辑层和视图层的通讯损耗&#xff0c;提供高性能视图交互能力在视图层操作dom&#xff0c;运行 for web 的…

1400*C. Phoenix and Towers(贪心)

题意&#xff1a; 将 n 个数字分成 m 组&#xff0c;使得每两组的差值都不超过 x &#xff0c;打印每个数的分组的组数 解析&#xff1a; 因为每一个数都不超过 x &#xff0c;所以两个数的差值必定不超过 x&#xff0c;每次选最矮的一座塔放入当前的砖块&#xff0c;并且记录塔…

iOS开发-下拉刷新动画小球左右交换位置Indicator指示器效果

iOS开发-下拉刷新动画小球左右交换位置Indicator指示器效果 之前开发中实现下拉刷新动画小球左右交换位置Indicator指示器效果。 一、效果图 二、基础动画 CABasicAnimation类的使用方式就是基本的关键帧动画。 所谓关键帧动画&#xff0c;就是将Layer的属性作为KeyPath来注…

Linux:shell命令运行原理和权限的概念

文章目录 shell和kernelshell的概念和原理Linux的权限文件的权限文件的类型文件的权限管理权限的实战应用 shell和kernel 从狭义上来讲&#xff0c;Linux是一个操作系统&#xff0c;我们叫它叫kernel&#xff0c;意思是核心&#xff0c;核心的意思顾名思义&#xff0c;就是最关…

【LeetCode】72.(最短)编辑距离(闫氏dp,分析加可视化)

考虑两个数组&#xff1a;a、b 定义dp[ i ][ j ]为&#xff0c;让数组a从1到 i 的字符&#xff0c;与数组b从1到 j 的字符&#xff0c;正好匹配上的最小操作数。 假设现在面前有一个正好匹配的数组a和b&#xff0c;其中a的长度为 i &#xff0c;b的长度为 j &#xff08;两个…

python离散仿真器

文章目录 类图示例 类图 示例