当前位置: 首页 > news >正文

通过FRP搭建内网穿透,实现域名访问局域网本机

1我的目标:

实现通过域名访问局域网tomcat服务,域名访问方便本地微信调试

2思路:

(1)用服务器搭建内网穿透

利用FRP实现穿透,frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

  1. 域名映射到服务器nginx 443端口

  1. 服务器nginx443 转发到 服务器的 FRP 服务端28700端口(自定义的)

  1. 服务器的 FRP 服务端7000端口 连接 局域网本机 FRP 客户端7000端口

  1. 局域网本机 FRP 客户端 转发到 本机服务80端口

详细搭建教程见后文

(2)通过宽带,找运营商免费申请公网IP

路由或猫有了拨号后,即可获得公网IP,再由路由或猫映射到内网机器端口

由于普通宽带是动态IP,所以如果要全自动切换或查询,则需要动态获取IP,思路如下

  1. 可以通过路由APP获得,或者通过IP查询网站

  1. 如果需要域名映射到IP时刻保持动态更新,可以调用阿里云接口实现,现成工具https://github.com/xuchao1213/AliyunDdnsCSharp

  1. 但是域名映射更换毕竟有10分钟延迟,也可以通过程序将IP写到网上某个位置,比如对象存储、gitee,如果用对象存储可以实现网页自动跳转

(3)通过现成内网穿透软件

比如花生壳,natapp,想要速度快、域名固定,则需要付费,

免费速度很慢,域名总变

3利用服务器,搭建FRP流程

思路流程见上文2.(1)

(1)域名映射到服务器IP

(2)nginx监听域名,并转发到服务器FRP

我需要用https协议,所以监听443端口,并转发到FRP服务端IP:28700

server {listen 443 ssl;server_name 你的域名;root html;index index.html index.htm;ssl_certificate cert/你的域名证书.pem;ssl_certificate_key cert/你的域名证书.key;ssl_session_timeout 60m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#表示使用的加密套件的类型。ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。ssl_prefer_server_ciphers on;location / {#root /usr/share/nginx/html/;  #Web网站程序存放目录。#index index.html index.htm;proxy_pass http://FRP服务端IP:28700/;proxy_redirect http:// $scheme://;proxy_set_header  Host       $host;proxy_set_header  X-Real-IP    $remote_addr;proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;}
}

(3)服务器用docker 搭建FRP的服务端

服务器新建frps.ini配置文件

[common]
bind_port = 7000
vhost_http_port = 28700authentication_method = token
authenticate_new_work_conns = true
token = 123456

28700端口用于接收nginx转发的访问请求

7000端口用于frp服务端接收请求后 与 内网frp客户端的7000通信

token是自定义秘钥,用于安全校验

在服务器上,通过docker拉取FRP的服务端并启动

docker run --name frps -d -p 28700:28700 -p 7000:7000 -v /docker/frp/frps.ini:/etc/frp/frps.ini  -v /etc/localtime:/etc/localtime:ro -e "TZ=Asia/Shanghai" snowdreamtech/frps

(4)windows本机FRP客户端搭建

我用的frp_0.46.0_windows_386.zip,

也可以从这里下载https://download.csdn.net/download/yfx000/87524710

然后新建frpc.ini

[common]
server_addr = 服务器公网IP
server_port = 7000authentication_method = token
authenticate_new_work_conns = true
token = 123456[web]
type = http
local_port = 80
custom_domains = 域名

7000用于与服务器保持通信

80端口为本机服务端口,域名是最上面那个域名

然后cmd下启动frp客户端,也可以保存为bat,方便启动

frpc.exe -c frpc.ini

这样就实现了域名访问到本机80端口服务

4、frp内网穿透的各种场景

帮助文档详见:

https://gofrp.org/docs/examples/ssh/

通过 SSH 访问内网机器

这个示例通过简单配置 TCP 类型的代理让用户访问到内网的服务器。

通过自定义域名访问内网的 Web 服务

这个示例通过简单配置 HTTP 类型的代理让用户访问到内网的 Web 服务。

转发 DNS 查询请求

这个示例通过简单配置 UDP 类型的代理转发 DNS 查询请求。

转发 Unix 域套接字

这个示例通过配置 Unix域套接字客户端插件来通过 TCP 端口访问内网的 Unix域套接字服务,例如 Docker Daemon。

对外提供简单的文件访问服务

这个示例通过配置 static_file 客户端插件来将本地文件暴露在公网上供其他人访问。

为本地 HTTP 服务启用 HTTPS

通过 https2http 插件可以让本地 HTTP 服务转换成 HTTPS 服务对外提供。

安全地暴露内网服务

这个示例将会创建一个只有自己能访问到的 SSH 服务代理。

点对点内网穿透

这个示例将会演示一种不通过服务器中转流量的方式来访问内网服务。

5、资源汇总

(1)docker frp项目地址

项目地址:

https://github.com/snowdreamtech/frp

DockerHub:

https://hub.docker.com/r/snowdreamtech/frps

https://hub.docker.com/r/snowdreamtech/frpc

(2)FRP项目地址

https://github.com/fatedier/frp/releases

(3)中文帮助文档:

https://gofrp.org/docs/examples/ssh/

相关文章:

通过FRP搭建内网穿透,实现域名访问局域网本机

1我的目标:实现通过域名访问局域网tomcat服务,域名访问方便本地微信调试2思路:(1)用服务器搭建内网穿透利用FRP实现穿透,frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、…...

Pytorch 代码复现终极指南【收藏】

修改自:https://zhuanlan.zhihu.com/p/532511514我在刚接触pytorch的时候搜到了这个大佬的文章,当时最后天坑部分没有看的太明白,直到今天我也遇到的相同的问题,特来做一点点补充,方便大家理解。上述大佬文章的简版内容…...

iOS 后台运行

背景:app有在后台运行的需求 常用的后台常驻实现方法 1.Audio(音乐播放软件) 应用在后台播放无声的音频文件,只要播放不断,后台可一直活着,苹果审核人员如果发现,会被拒,有可能会…...

软设下午题第一大题--数据流图(做题)

软设下午第一大题一、数据流图(Data Flow Diagram,简称DFD)1、基本图形元素元素(1)外部实体(External Agent)(2)数据存储(Data Store)(3&#xff…...

springboot内嵌Tomcat 安全漏洞修复

漏洞扫描提示的是tomcat-embed-core[CVE-2020-1938]&#xff0c;解决方式是升级tomcat的版本。 该漏洞影响的版本&#xff1a; Apache Tomcat 9.x < 9.0.31 Apache Tomcat 8.x < 8.5.51 Apache Tomcat 7.x < 7.0.100 Apache Tomcat 6.x 其余的安全漏洞也可以通过…...

Android OTA 相关工具(三) A/B 系统之 bootctl 工具

文章目录1. bootctl 的编译2. bootctl 的帮助信息3. bootctl 的用法1. hal-info2. get-number-slots3. get-current-slot4. mark-boot-successful5. set-active-boot-slot6. set-slot-as-unbootable7. is-slot-bootable8. is-slot-marked-successful9. get-suffix10. set-snaps…...

【Flink】org.apache.flink.table.api.ValidationException: SQL validation failed

遇到问题如下 Exception in thread "main" org.apache.flink.table.api.ValidationException: SQL validation failed. From line 1, column 15 to line 1, column 17: Object aaa not found at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.orgat org.…...

宏基因组鉴定病毒流程中需要的生物信息工具

谷禾健康 许多流行病的爆发都是病毒引起的&#xff0c;面对新的传染性基因组出现的最佳策略是及时识别&#xff0c;以便于在感染开始时立即实施相应措施。 目前可用的诊断测试仅限于检测新的病理因子。适用于同时检测存在的任何病原体的高通量方法可能比使用基于当前方法的大量…...

Doris入门篇-分区分桶实验

简介 测试分区分桶效果。 分区的基本操作 添加分区 ALTER TABLE v2x_olap_database.government_car ADD PARTITION p20221203 VALUES LESS THAN ("2022-12-04");动态分区表不能添加分区&#xff0c;需要转为手动分区表。 查看分区 show partitions from <表…...

Spring-Xml配置

一、Spring 简介 1.简介 文档下载地址&#xff1a;Index of /spring-framework/docs 1.简介 Spring framework 是 Spring 基础框架 学习Spring 家族产品 Spring framework SpringBoot SpringCloud Spring 能用来做什么 开发 WEB 项目 微服务 分布式系统 Spring framew…...

设计模式-工作线程 创建多少线程池合适

1、定义 让有限的工作线程(Worker Thread)来轮流异步处理无限多的任务。也可以将其归类为分工模式&#xff0c;它的典型实现就是线程池&#xff0c;也体现了经典设计模式中的享元模式&#xff08;重用对象&#xff09;。 例如&#xff0c;海底捞的服务员(线程)&#xff0c;轮流…...

【算法基础】深度优先搜索(DFS) 广度优先搜索(BFS)

一、DFS & BFS 1. 深度优先搜索DFS 深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。 2. 广度优先搜索BFS 广度优先搜索较之深度优先搜索之不同在于,深度…...

【分布式】ProtocolBuffer平滑升级原则

原文链接&#xff1a;https://blog.csdn.net/nash_cyk/article/details/99549719 关于Protocol Buffer优势这里就不详细介绍了&#xff0c;如便于不同开发语言的交互通信&#xff0c;便于服务器上线的平滑升级等。 但Protocol Buffer的Message协议升级是需要注意一些细节&…...

第四阶段17-关于Redis中的list类型,缓存预热,关于Mybatis中的`#{}`和`${}`这2种格式的占位符

关于Redis中的list类型 Redis中的list是一种先进后出、后进先出的栈结构的数据。 在使用Redis时&#xff0c;应该将list想像为以上图例中翻转了90度的样子&#xff0c;例如&#xff1a; 在Redis中的list数据&#xff0c;不仅可以从左侧压入&#xff0c;也可以选择从右侧压入…...

stringstream用法

stringstream是 C++ 提供的另一个字串型的串流(stream)物件,和之前学过的iostream、fstream有类似的操作方式。包含在头文件sstream中(#include <sstream>)。 实例: 1、C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类…...

2022年下半年系统集成项目管理工程师综合知识真题及答案解析

2022年下半年系统集成项目管理工程师综合知识真题及答案解析 1、()不属于“提升云计算自主创新能力”的工作内容。A.加强云计算相关基础研究、应用研究、技术研发、市场培育和产业政策密衔接与统筹协调B.引导大型云计算中心优先在能源充足、气候适宜、自然灾害较少的地区部…...

【洛谷 P2089】烤鸡(搜索)

烤鸡 题目背景 猪猪 Hanke 得到了一只鸡。 题目描述 猪猪 Hanke 特别喜欢吃烤鸡&#xff08;本是同畜牲&#xff0c;相煎何太急&#xff01;&#xff09;Hanke 吃鸡很特别&#xff0c;为什么特别呢&#xff1f;因为他有 101010 种配料&#xff08;芥末、孜然等&#xff09;…...

Mac item2 配置免密登录开发机

1、配置 vi ~/.ssh/config 内容如下&#xff1a; Host * ControlMaster auto ControlPath ~/.ssh/master-%r%h:%p ControlPersist yes ServerAliveInterval 60 学习&#xff1a; ControlMaster #连接共享 ControlPath #与ControlMaster一起使用&#xff0c;指定连接共享的路径…...

vue 解决问题:Webpack安装不成功,webpack -v无法正常显示版本号

目录 一、解决问题&#xff1a;Webpack安装不成功&#xff0c;webpack -v无法正常显示版本号 二、解决问题&#xff1a; ERROR Error: Cannot find module webpack-log 三、 解决报错&#xff1a;error:03000086:digital envelope routines::initialization error 四、解决…...

07-1【openEuler】系统及进程管理(网络管理的补充实验及说明)

文章目录说在前面关于nmcli命令的使用使用nmcli命令修改主机IP地址1、运行ip addr列出openEuler20.03上的以太网卡2、列出当前活动的以太网卡3、开始分配静态IP地址&#xff08;1&#xff09;命令语法&#xff08;2&#xff09;将 IPv4 地址192.168.74.175分配给 ens33 网卡上&…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...