搭建frp内网穿透

前言

内网穿透的原理我就不多说了哈,既然会看到我这篇文章,想必都知道内网穿透是做什么的吧

frp分为服务端和客户端,服务端一般是搭在公网服务器中,客户端一般搭在本地或者局域网,需要提前在服务端搭好ftp server,然后客户端搭建frp client,与服务端保持连接

远程用户一般是访问不到本地内网的,所以需要访问服务端,服务端通过frp转发到内网中来

本教程是用docker搭建的frp,阅读本文需要有一定的docker基础,当然windows也可以操作,原理是一样的

初次玩frp建议先把防火墙和安全组关了,以免遇到端口不能访问的问题

搭建frp服务端

在公网服务器中新建配置文件

mkdir -p /data/frps
vim /data/frps/frps.toml

配置文件内容

[common]
# frp客户端连接端口
bind_port = 7000
# 管理页面的端口
dashboard_port = 7500
# 管理页面的用户名
dashboard_user = admin
# 管理页面的密码
dashboard_pwd = 123456
# 客户端连接的令牌
token = 123456

拉取frp server镜像

docker pull snowdreamtech/frps:0.62

 运行容器

docker run -d \--name=frps \--network=host \--restart=always \-v /data/frps:/etc/frp \snowdreamtech/frps:0.62

访问http://你的公网ip:7500即可进入管理端页面,账号密码就是配置文件中的账号密码

搭建frp客户端,代理tcp

我们先启动两个内网服务,让它可以正常访问

在内网服务器中新建配置文件

mkdir -p /data/frpc
vim /data/frpc/frpc.toml

配置文件内容

[common]
server_addr = 你的公网ip
# 公网服务端的端口
server_port = 7000
# 公网服务器配置的token
token = 123456# 代理一个端口,通过公网服务器的8080端口访问到内网的80端口
[web80]
# 代理类型
type = tcp
# 公网服务器的端口
remote_port = 8080
# 内网ip
local_ip = 192.168.200.100
# 内网端口
local_port = 80# 通过公网的8081端口访问到内网的81端口
[web81]
type = tcp
remote_port = 8081
local_ip = 192.168.200.100
local_port = 81

拉取frp client镜像

docker pull snowdreamtech/frpc:0.62

运行容器

docker run -d \--name=frpc \--network=host \--restart=always \-v /data/frpc:/etc/frp \snowdreamtech/frpc:0.62

如果本地是windows系统,可以下载windows客户端

下载地址:https://github.com/fatedier/frp/releases

启动方式也很简单,直接frpc.exe -c frpc.toml即可

 我们到管理页面就能看到客户端代理信息了

这时候就可以通过你的公网ip去访问你的内网了

代理http

使用前必读,非常重要,可以让你少走很多弯路:

所有http代理,在服务器中都是共用一个端口,通过域名来区分不同的http服务,所以代理http一定要有域名,没有域名的话只能使用tcp的方式代理,tcp方式也能代理http

我们提前准备好域名,然后解析到你的公网服务器中

服务端frps.toml增加一句配置,定义http端口

vhost_http_port = 8088

注意:多个不同的http代理将会共用这个端口

完整配置:

[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = 123456
token = 123456
vhost_http_port = 8088

 客户端frpc.toml配置:

[common]
server_addr = 118.31.42.134
# 公网服务端的端口
server_port = 7000
# 公网服务器配置的token
token = 123456[web80]
# 代理类型
type = http
# 代理类型为http时,remote_port字段无效,远程端口默认是服务端配的vhost_http_port
# remote_port = 8080
# 内网ip
local_ip = 192.168.200.100
# 内网端口
local_port = 80
# 域名
custom_domains = test.linzhehao.cn

就可以通过域名访问你的内网了

代理https

申请SSL证书并审核,阿里云、腾讯云等厂家都可以申请免费证书

选择nginx证书进行下载,下载后解压,会有一个.key和.pem文件

将证书文件上传到内网服务器的/data/frpc/cert

服务端frps.toml增加一句配置,定义https端口,所有的https请求都会走这个端口

vhost_https_port = 443

完整配置:

[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = 123456
token = 123456
vhost_http_port = 8088
vhost_https_port = 443

客户端frpc.toml配置:

[common]
server_addr = 你的公网ip
# 公网服务端的端口
server_port = 7000
# 公网服务器配置的token
token = 123456[web1]
type = https
# https中,local_ip和local_port字段无效
# local_ip = 192.168.200.100
# local_port = 80
custom_domains = test.linzhehao.cn
plugin = https2http
# 配置证书的路径
plugin_crt_path = /etc/frp/cert/test.linzhehao.cn.pem
plugin_key_path = /etc/frp/cert/test.linzhehao.cn.key
plugin_host_header_rewrite = test.linzhehao.cn
# 代理的地址
plugin_local_addr = 192.168.200.100:80

 重启一下frpc

docker restart frpc

就可以用https访问了

子域名

简介:

如果有多个子域名,比如test1.linzhehao.cn、test2.linzhehao.cn,如果不使用子域名的话,那么custom_domains每次都需要写上完整的域名,使用子域名的话只需要在服务端配上linzhehao.cn,在客户端配置test1、test2即可

frps.toml中添加:

subdomain_host = linzhehao.cn

完整配置:

[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = 123456
token = 123456
vhost_http_port = 8088
vhost_https_port = 443
subdomain_host = linzhehao.cn

客户端frpc.toml配置:

[common]
server_addr = 你的公网ip
# 公网服务端的端口
server_port = 7000
# 公网服务器配置的token
token = 123456[web80]
# 代理类型
type = http
# 内网ip
local_ip = 192.168.200.100
# 内网端口
local_port = 80# 如果想使用子域名,需要去掉custom_domains
# custom_domains = test.linzhehao.cn# subdomain会自动拼上frps.toml中的subdomain_host
subdomain = test

成功访问

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

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

相关文章

Tailwind CSS 实战,基于 Kooboo 构建 AI 对话框页面(四):语音识别输入功能

基于前三章的内容,开发AI 对话框语音识别输入功能: Tailwind css实战,基于Kooboo构建AI对话框页面(一)-CSDN博客 Tailwind css实战,基于Kooboo构建AI对话框页面(二):实…

ollama list模型列表获取 接口代码

ollama list模型列表获取 接口代码 curl http://localhost:11434/v1/modelscoding package hcx.ollama;/*** ClassName DockerOllamaList* Description TODO* Author dell* Date 2025/5/26 11:31* Version 1.0**/import java.io.BufferedReader; import java.io.InputStreamR…

ISOLAR软件生成报错处理(五)

错误1 An error has occurred. See error log for more details. java.lang.NullPointerException 这东西不用管&#xff0c;不影响生成 错误2 Description Resource Path Location Type Target ARObject: <xxxx> CompuMethod used for floating-point data conversi…

前端开发定时,ES学习,java集合

1.前端vue3加入定时任务&#xff1a; import { onMounted, ref,onUnmounted } from vue;//初始化&#xff0c;结束调用部分引用let timer: any;//定时器onMounted(async () > {timer setInterval(() > {open()//需要定时的任务}, 60000)//一分钟调用一次}); onUnmounte…

Photoshop2025(PS2025)软件及安装教程

在数字图像编辑领域&#xff0c;Adobe Photoshop 一直是无可争议的王者。如今&#xff0c;Photoshop 2025 重磅登场&#xff0c;再次为我们带来了惊喜与变革&#xff0c;进一步巩固了它在行业中的领先地位。 Photoshop 2025 在人工智能方面的升级令人瞩目。其全新的 “Magic Se…

【SQL Server Management Studio 连接时遇到的一个错误】

第一次用SQL Server Management Studio启动之后第一步就是要建立连接 但是不知道Server Name要填什么&#xff0c;看了网上的教程说是要找到下面这个注册表中对应的实例名称填上去&#xff0c;或者前面加localhost 但是好像都没有用&#xff0c;一直遇到报错如下&#xff1a;…

高等数学基础(向量矩阵及其创建和特殊的矩阵)

向量 向量是机器学习最底层的组成部分, 也是基础数据的表示形式, 线性代数通过将研究对象拓展到向量, 对多维数据进行统一研究, 而进化出的方法方便我们可以研究和解决真实世界中的问题 标量 标量也称为"无向量", 使用一个单独的数表示数值大小, 可以有正负之分, …

IBM DB2数据库管理工具IBM Data Studio

一、介绍 IBM Data Studio 是 IBM 提供的一个集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于支持数据管理、开发、优化和管理数据库应用程序&#xff0c;特别是在 IBM Db2 和其他数据库平台上。它提供了许多功能&#xff0c;以帮助开发人员和数据库管理员提高生产力…

Java异常处理的全面指南

Java异常处理的全面指南 一、Java异常的基础概念1.1 什么是异常1.2 异常类的层次结构 二、Java异常的处理方式2.1 try-catch块2.2 throws关键字2.3 throw关键字 三、自定义异常3.1 自定义受检异常3.2 自定义非受检异常 四、Java异常处理的最佳实践4.1 捕获合适粒度的异常4.2 避…

MediaMtx开源项目学习

这个博客主要记录MediaMtx开源项目学习记录,主要包括下载、推流(摄像头,MP4)、MediaMtx如何使用api去添加推流,最后自定义播放器,播放推流后的视频流,自定义Video播放器博客地址 1 下载 MediaMTX MediaMTX 提供了预编译的二进制文件,您可以从其 GitHub 页面下载: Gi…

【unity游戏开发——编辑器扩展】EditorApplication公共类处理编辑器生命周期事件、播放模式控制以及各种编辑器状态查询

注意&#xff1a;考虑到编辑器扩展的内容比较多&#xff0c;我将编辑器扩展的内容分开&#xff0c;并全部整合放在【unity游戏开发——编辑器扩展】专栏里&#xff0c;感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言一、监听编辑器事件1、常用编辑器事件2、示例监听播放模…

Spring Boot+Activiti7入坑指南初阶版

介绍  Activiti 是一个轻量级工作流程和业务流程管理 (BPM) 平台,面向业务人员、开发人员和系统管理员。其核心是一个超快且坚如磐石的 Java BPMN 2 流程引擎。它是开源的,并根据 Apache 许可证分发。Activiti 可以在任何 Java 应用程序、服务器、集群或云中运行。它与 Spri…

VoltAgent 是一个开源 TypeScript 框架,用于构建和编排 AI 代理

​一、软件介绍 文末提供程序和源码下载 VoltAgent 是一个开源 TypeScript 框架&#xff0c;用于构建和编排 AI 代理 二、什么是 VoltAgent&#xff1f; AI 代理框架提供了构建由自主代理提供支持的应用程序所需的基础结构和工具。这些代理通常由大型语言模型 &#xff08;&am…

《仿盒马》app开发技术分享-- 订单详情页(端云一体)

开发准备 在之前的章节中我们实现了订单的提交&#xff0c;以及提交之后跳转到确认订单页面&#xff0c;在确认订单页面我们添加了一个入口&#xff0c;这个入口是查询订单&#xff0c;当我们点击入口时&#xff0c;我们需要跳转到一个新的界面&#xff0c;这个界面通过接收上…

传统项目管理总拖延?Scrum敏捷全流程拆解

在互联网高速发展的时代&#xff0c;企业竞争的核心要素正逐渐向 "速度" 倾斜。市场环境瞬息万变&#xff0c;用户需求呈现出多元化、动态化的显著特征&#xff0c;而传统管理模式固有的滞后性与僵化性&#xff0c;已难以匹配快速迭代的市场需求。在此背景下&#xf…

GelSight Mini触觉传感器:7μm精度+3D 映射,赋能具身智能精密操作

GelSight Mini 高分辨率视触觉传感器采用先进的光学成像与触觉感知技术&#xff0c;赋予机器人接近人类的触觉能力。该设备可捕捉物体表面微观细节&#xff0c;并生成高精度的2D/3D数字映射&#xff0c;帮助机器人识别形状、纹理及接触力&#xff0c;从而执行更复杂、精准的操作…

【电路笔记 TMS320F28335DSP】McBSP 从源时钟得到 生成时钟 CLKG 帧同步信号 FSG

对应于原文 Multichannel Buffered Serial Port (McBSP)的 2.5.3 Data Clock Generation。 CLKG Figure 2-4. Sample Rate Generator Block Diagram CLKG 是采样率发生器输出的数据位时钟&#xff08;Data Bit Clock&#xff09;&#xff0c;它被用来控制&#xff1a; 数据发…

(25年5.28)ChatGPT Plus充值教程与实用指南:附国内外使用案例与模型排行

更多具体来源&#xff1a;查看原文 ChatGPT Plus 充值教程 由于国内卡无法直接充值 chatgpt&#xff0c;通常需要借助虚拟卡。目前咱们常用的方式是通过虚拟卡平台获取。因平台审核要求这里不细说&#xff0c;具体看原文。 ChatGPT Plus主要使用方向 ChatGPT Plus 提供了更…

38. 自动化测试异步开发之编写客户端异步webdriver接口类

Selenium异步浏览器操作实现原理深度解析 一、AsyncBrowser类核心结构 1.1 类定义与启动方法 class AsyncBrowser(Command):@classmethodasync def start(cls, remote_driver_server: str

国芯思辰| 霍尔电流传感器AH811为蓄电池负载检测系统安全护航

在电动车、储能电站、不间断电源&#xff08;UPS&#xff09;等设备中&#xff0c;蓄电池作为关键的储能单元&#xff0c;其运行状态直接关系到设备的稳定性和使用寿命。而准确监测蓄电池的负载情况&#xff0c;是保障其安全、高效运行的关键。霍尔电流传感器 AH811凭借独特的技…