frp内网穿透介绍安装教程

news2024/11/17 9:00:34

文章目录

  • 前言
  • 一、安装
  • 二、测试使用
  • 总结


前言

内网穿透(Port Forwarding)是将公网上的IP地址映射到内部网络中的一台计算机的某个端口上,以便外部网络可以访问该计算机中运行的应用程序。内网穿透技术可以通过一些开源工具来实现,其中比较常用的是frp,我这边用的也是frp,目前没有什么问题;

官网地址:https://gofrp.org/zh-cn/docs/overview/

更详细的内容,可以翻阅官网文档。


一、安装

一般情况下,我们使用内网穿透工具,都是想在外网访问内网电脑或服务器上面的内容,比如说公司的电脑、家里面的电脑;我这里以访问公司的虚拟机服务器为例介绍。整体流程就是,通过访问外网地址,转发流量到内网的电脑上面。

首先,我们需要准备一台外网服务器,比如阿里云、腾讯云、华为云即可,该外网电脑可以不要太高的配置,但是最好网络带宽大点,因为内网穿透也是通过网速来的;

然后我们下载frp软件包,下载地址是:https://github.com/fatedier/frp/releases,选择合适的版本,我选择的是0.52.3版本,下载地址:https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_arm64.tar.gz

下载完成之后,上传在Linux服务器/opt/frp目录下,并解压,同时创建frp的日志目录logs
在这里插入图片描述
进入到解压目录,然后配置,目录如下:
在这里插入图片描述
关键说明

1、frps:外网服务器需要用的到frp启动命令;
2、frps.ini:外网服务器需要用的到frps配置文件;
3、frpc:内网服务器需要用到的frp启动命令;
4、frpc.ini:内网服务器需要用的到frps配置文件;

其它文件可以暂时不用管,注意,这个文件夹没有frpc.ini文件,到时候我们在内网服务器创建一个。

修改外网服务器的frps.ini文件,如下:

[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的
token = U2FsdGVkX1@

# frp管理后台端口,用户名和密码,请按自己需求更改
# 配置这个是因为有一个管理界面,可以登录查看你代理的端口
dashboard_port = 7500
dashboard_user = 管理员用户名
dashboard_pwd = 管理员用户
enable_prometheus = true

# frp日志配置
log_file = /opt/frp/logs/frps.log #你的日志目录
log_level = info
log_max_days = 3

然后配置内网服务器,把刚刚frp安装包放在内网服务器上面:
在这里插入图片描述
修改frpc.ini文件:

[common]
server_addr = 外网服务器ip
# 与frps.ini的bind_port一致
server_port = 7000
# 与frps.ini的token一致
token = 外网frp配置的token

# frp日志配置
log_file = /opt/frp/logs/frpc.log
log_level = info
log_max_days = 3

# 配置ssh服务
[ssh1]
type = tcp
local_ip = 127.0.0.1
local_port = 22
# 这个自定义,之后再ssh连接的时候要用
remote_port = 2201

# 配置端口代理
[web-port] # 自定义但需要唯一,因为可以配置多个
type = tcp
local_ip = 内网服务器IP
local_port = 内网服务端口 # 需要代理的端口
remote_port = 外网映射服务端口 #映射到远程的访问,也就是通过外网+端口访问

说明:

1、[web-port]:必须唯一,可以设置为这个端口的表示,比如nginx-port、mysql-port等
2、type = tcp:这个有多种类型,比如http、https、udp、tcp等等,具体可以翻阅官网文档;但是一般情况下使用tcp就行了;http也是tcp嘛;大多是协议都是通过tcp传输,我们部署使用的服务大多数也是基于tcp;
3、remote_port:这个远程的端口,我们可以不用在外网服务器中配置,只需要在内网服务器的frpc.ini配置文件中配置即可

二、测试使用

现在外网服务器中运行以下命令(后台命令):

nohup /opt/frp/frp_0.52.3/frps -c /opt/frp/frp_0.52.3/frps.ini > /opt/frp/frp_0.52.3/logs.log &

出现以下便成功:
在这里插入图片描述
存在7500和7000端口即可;

然后在内网服务器中允许以下命令:

nohup /opt/frp/frp_0.52.3/frpc -c /opt/frp/frp_0.52.3/frpc.ini > /opt/frp/frp_0.52.3/logs.log &

运行之后,是看不到代理端口的,如果要看是否运行成功,则可以通过ps命令,如下:

ps -ef | grep frp

出现如下:
在这里插入图片描述
最后,通过网页访问看下是否代理成功,我们是通过外网地址访问frp的管理页面,
地址:http:外网IP:7500;如下:
在这里插入图片描述
输入我们配置的用户名和密码:
在这里插入图片描述
红色框中的2201端口就是我们代理内网服务器22的端口。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了frp的使用,而frp还提供了大量功能,更多参考官网教程。

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

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

相关文章

主界面获取个人信息客户端方

主界面获取个人信息客户端方 前言 上一集我们完成了websocket身份验证的内容,那么这一集开始我们将要配合MockServer来完成主界面获取个人信息的内容。 需求分析 我们这边是完成客户端那方的内容,当客户端登录成功之后,我们就要从服务器获…

redis实现消息队列的几种方式

一、了解 众所周知,redis是我们日常开发过程中使用最多的非关系型数据库,也是消息中间件。实际上除了常用的rabbitmq、rocketmq、kafka消息队列(大家自己下去研究吧~模式都是通用的),我们也能使用redis实现消息队列。…

单片机智能家居火灾环境安全检测

目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 电路图采用Altium Designer进行设计: 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 在现代社会,火灾安全始终是人们关注的重点问题。随着科技的不…

【目标检测】用YOLOv8-Segment训练语义分割数据集(保姆级教学)

前言 这篇教程会手把手带你用 YOLOv8-Segment 搭建一个属于自己的分割任务项目。从环境配置到数据集准备,再到模型训练和测试,所有步骤都有详细说明,适合初学者使用。你将学会如何安装必要的软件,标注自己的数据,并使…

mac2019环境 Airflow+hive+spark+hadoop本地环境安装

1 环境介绍 本地安装可分为两个部分,mac软件环境, python开发环境 ps: 安装过程参考chatgpt、csdn文章 1.1 mac软件环境 目标安装的的软件是hive、apache-spark、hadoop,但是这三个软件又依赖java(spark依赖)、ssh&#xff08…

1.7 JS性能优化

从输入url到页面加载完成都做了些什么 输入 URL - 资源定位符 http://www.zhaowa.com - http 协议 域名解析 https://www.zhaowa.com > ip 1. 切HOST? > 浏览器缓存映射、系统、路由、运营商、根服务器 2. 实际的静态文件存放? 大流量 > 多个…

【Ansible常用命令+模块+Playbook+Roles】

Ansible 一、命令1.1 常用命令 二、模块2.1 shell模块2.2 复制模块2.3 用户模块2.4 软件包管理2.5 服务模块2.6 文件模块2.7 收集模块2.8 fetch2.9 cron2.10 group2.11 script2.12 unarchive 三、YAML Roles3.1 目录结构3.2 文件内容tasks/main.yamlnginx.conf.j2vars/main.yam…

Oracle19C AWR报告分析之Wait Classes by Total Wait Time

Oracle19C AWR报告分析之Wait Classes by Total Wait Time 一、分析数据二、详细分析2.1 指标参数介绍2.2 数据库性能分析2.3 综合性能评估 在 Oracle 数据库的 AWR 报告中,Wait Classes by Total Wait Time 是评估数据库性能的重要部分。本篇文章主要是介绍指标参数…

嵌入式硬件电子电路设计(五)MOS管详解(NMOS、PMOS、三极管跟mos管的区别)

引言:在我们的日常使用中,MOS就是个纯粹的电子开关,虽然MOS管也有放大作用,但是几乎用不到,只用它的开关作用,一般的电机驱动,开关电源,逆变器等大功率设备,全部使用MOS管…

问题大集-01-kafka问题

1、问题:Windows下启动单机kafka出现:系统找不到指定路径 解决: 是kafka不能识别本机的java环境(JVM),故需要指定java路径, 进入kafka路径下的\bin\windows,找到:kafk…

C++ 的发展

目录 C 的发展总结:​编辑 1. C 的早期发展(1979-1985) 2. C 标准化过程(1985-1998) 3. C 标准演化(2003-2011) 4. C11(2011年) 5. C14(2014年&#xf…

Ubuntu问题 -- 允许ssh使用root用户登陆

目的 新重装的系统, 普通用户可以使用ssh登陆服务器, 但是root不能使用ssh登陆 方法 vim 编辑ssh配置文件 sudo vim /etc/ssh/sshd_config找到 PermitRootLogin 这一行, 把后面值改成 yes 重启ssh sudo service sshd restart然后使用root账号登陆即可

HarmonyOS4+NEXT星河版入门与项目实战--------开发工具与环境准备

文章目录 1、熟悉鸿蒙官网1、打开官网2、下载 DevEco Studio3、HarmonyOS 资源库4、开发指南与API 2、安装 DevEco Studio1、软件安装2、配置开发工具 1、熟悉鸿蒙官网 1、打开官网 百度搜索 鸿蒙开发者官网 点击进入开发者官网,点击开发,可以看到各种…

使用 start-local 脚本在本地运行 Elasticsearch

警告:请勿将这些说明用于生产部署 本页上的说明仅适用于本地开发。请勿将此配置用于生产部署,因为它不安全。请参阅部署选项以获取生产部署选项列表。 使用 start-local 脚本在 Docker 中快速设置 Elasticsearch 和 Kibana 以进行本地开发或测试。 此设…

【大数据学习 | HBASE高级】hbase-phoenix 与二次索引应用

1. hbase-phoenix的应用 1.1 概述: 上面我们学会了hbase的操作和原理,以及外部集成的mr的计算方式,但是我们在使用hbase的时候,有的时候我们要直接操作hbase做部分数据的查询和插入,这种原生的方式操作在工作过程中还…

Nginx server_name配置错误导致路由upstream超时问题

一、问题描述 某次本平台和外部平台接口调用,同样Nginx location配置,测试环境调用正常,生产环境调用返回失败; 相关链接:Nginx官方文档、server_name、How nginx processes a request 二、排查处理 1&#xff09…

Android Studio 控制台输出的中文显示乱码

1. Android Studio 控制台输出的中文显示乱码 1.1. 问题 安卓在调试阶段,需要查看app运行时的输出信息、出错提示信息。乱码,会极大的阻碍开发者前进的信心,不能及时的根据提示信息定位问题,因此我们需要查看没有乱码的打印信息。…

linux001.在Oracle VM VirtualBox中ubuntu虚拟系统扩容

1.打开终端切换到virtualBox安装目录 2.输入命令扩容 如上终端中的代码解释: D:\Program Files\Oracle\VirtualBox>.\VBoxManage modifyhd D:\ubuntu18.04\Ubuntu18.04\Ubuntu18.04.vdi --resize 40960如上代码说明:D:\Program Files\Oracle\Virtual…

【桌面应用程序】Vue-Electron 环境构建、打包与测试(Windows)

前言 Vue 与 Electron 环境构建、打包与测试。 目录 前言 一、基本环境准备 二、配置npm源 三、创建Vue项目 四、添加Electron支持 五、应用启动 ​六、添加UI框架 ElementUI ​七、打包 一、基本环境准备 npm版本:8.6.0node版本:v18.0.0Vue/…

C#获取视频第一帧_腾讯云媒体处理获取视频第一帧

一、 使用步骤: 第一步、腾讯云开启万象 第二步、安装Tencent.QCloud.Cos.Sdk 包 第三步、修改 腾讯云配置 图片存储目录配置 第四步、执行获取图片并保存 二、封装代码 using System.Text; using System.Threading.Tasks;using COSXML.Model.CI; using COSXML.A…