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

2023-05-16

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 = 28700

authentication_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 = 7000

authentication_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/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过FRP搭建内网穿透,实现域名访问局域网本机 的相关文章

  • 数据结构与算法(Java版) | 稀疏数组的应用场景

    接下来 xff0c 我们就要正式进入第三章 稀疏数组和队列的学习中了 xff0c 顾名思义 xff0c 在这一章节我会为大家介绍两种数据结构 xff0c 即稀疏数组和队列 当然 xff0c 按照我们这套系列教程的安排 xff0c 首先我会为
  • Lottie源码浅探

    Lottie xff08 源码版本 xff1a 2 5 4 xff09 动画步骤 xff1a 前置知识 xff1a Lottie对动画的变换主要是通过Matrix实现 xff0c 因此需要了解Matrix相关知识 xff0c 可以参考下面的
  • 数据结构与算法(Java版) | 稀疏数组的一个实际应用案例

    提出需求 xff1a 使用稀疏数组来保存类似棋盘或者地图等等映射而来的二维数组 xff0c 然后存盘 xff0c 并且希望可以重新恢复为原来的二维数组 通过上一讲的学习 xff0c 我们知道了使用稀疏数组即可保存类似下面的二维数组 xff0
  • 如何进行日常写作训练?

    我似乎陷入了一种巨大的痛苦漩涡中而不能自拔 xff01 最近我感觉写一篇文章真的是太费劲了 xff0c 就好像要用尽我全身力气似的 xff0c 这种感觉实在是太窒息了 xff0c 第一次体验到写一篇文章写得都快要死了的那种感受 xff0c
  • 向刘邦同志学习

    引言 最近在知乎闲逛 xff0c 无意中看到一个问题 xff0c 即刘邦最大的才能是什么 xff0c 顿时觉得这个问题很有趣 xff0c 于是就留心多翻了一些回答 xff0c 发现其中有一个叫张福来的用户的回答深得我心 xff0c 遂果断记
  • 数据结构与算法(Java版) | 队列的应用场景和介绍

    队列的一个应用场景 给大家介绍完稀疏数组这种数据结构之后 xff0c 接下来我再来给大家介绍另外一种数据结构 xff0c 即队列 队列 xff0c 听其名而知其义 xff0c 相信大家应该都在现实生活中见过 xff0c 比如在火车站排队买票
  • 数据结构与算法(Java版) | 数组模拟队列的思路分析与代码实现

    思路分析 上一讲我们讲过 xff0c 队列既可以用数组来实现 xff0c 也可以用链表来实现 xff0c 但由于我们比较熟悉数组这种结构 xff0c 所以这里我会先给大家讲一下数组这种实现方式 xff0c 至于链表这种实现方式 xff0c
  • android 8.1 MTK 方案修改记录

    Music播放音乐时锁屏不需要显示专辑封面 span class token operator 43 43 span span class token operator 43 span b span class token operator
  • centos 5 yum 不能用出现all mirror URLs are not use ftp http or file

    新装了一个centos 5 11 xff0c yum一直没法用 xff0c 每次使用都是出现下图的提示 xff1a 在网上找各种解决方案 xff0c 都是网络没连上 xff0c DNS有问题之类的 直到找到一篇帖子提到centos 5所有资
  • 远程连接——SSH

    简介 SSH xff08 Secure Shell xff09 是一种安全通道协议 xff0c 主要用来实现字符界面的远程登录 远程 复制等功能 SSH 协议对通信双方的数据传输进行了加密处理 xff0c 其中包括用户登录时输入的用户口令
  • Ubuntu 安装LLVM

    在部署galois时 xff0c 需要安装libllvm gt 61 7 0 with RTTI support xff0c 但是如果使用直接编译好的 xff0c 则并不会对RTTI提供支持 因此选择下载源代码自己编译安装 xff0c 并设
  • 关于ubuntu分区挂载

    转载自https blog csdn net u010409517 article details 88081911 一 硬盘分区 1 查看硬盘及所属分区情况 sudo fdisk lu 如图显示 xff0c 我们对200G硬盘进行分区 x
  • Ubuntu开启SSH远程登录

    本文介绍如何在Ubuntu下开启ssh服务并能通过Xshell进行远程登录的方法 测试使用的是在虚拟机上装的Ubuntu和window10 首先更新自己Ubuntu的源 xff0c 具体自行解决 更改IP地址 可以在设置里面设置 xff0c
  • SSH配置免密登录方法

    转载自https blog csdn net jeikerxiao article details 84105529 1 客户端生成公私钥 本地客户端生成公私钥 xff1a xff08 一路回车默认即可 xff09 ssh span cla
  • 阿里云上为服务器申请外网网卡并绑定公网ip

    在阿里云上创建ECS实例的时候 xff0c 云会自动配置公网ip和内网ip 但实质在该ECS实例上只有内网ip xff0c 可以通过ifconfig进行查看 xff0c 如下图 xff1a eth0是一个内网网卡 xff0c 上面绑定的是内
  • C++中常用函数 (持续更新ing...)

    access 函数std memsetfseek函数ftell std condition variable notify one notify allfread
  • mpi关于send/receive的顺序问题

    引用 MPI buffered send receive order I m using MPI with fortran but the question is more specific to the MPI standard than
  • std::sort导致内存崩贵

    转载自 xff1a 一次stl sort调用导致的进程崩溃 include span class token operator lt span algorithm span class token operator gt span span
  • 极光推送集成问题记录

    安装 npm install jpush react native save 也需要安装jcore react native npm install jcore react native save 核心步骤参考 xff1a https gi
  • 解决Navicat连接远程服务器出现lost connection to mysql server at ‘reading initial communication packet‘

    本文章是基于 这类问题在网上已经有很多类似的解答了 xff0c 诸如各种的修改my cnf xff0c 或者修改MySQL设置 Navicat设置 但是在我自己遇到这些问题的时候我尝试过搜索很多答案 xff0c 但是都没有得到解决 我的My

随机推荐

  • 快速排序quicksort算法Java的实现

    span class token keyword public span span class token keyword class span span class token class name QuickSort span span
  • 一行代码解决macOS下Android Studio提示的“licences have not been accepted”

    打开终端 直接输入 Library Android sdk tools bin sdkmanager licenses 接着一路 y 即可解决问题
  • 最简单的纯css固定table的表头

    页面table通常都需要做表头固定 xff0c 参考了n种实现方式 xff0c 最终还是选择了用纯css来做表头固定 xff0c 只是因为方便 xff0c 易于调试 table tbody display block height 450p
  • kali linux修改更新源及更新

    1 修改sources list源文件 xff1a leafpad etc apt sources list aliyun 阿里云 deb http mirrors aliyun com kali kali rolling main non
  • 手写一个JSON反序列化程序

    上一篇文章 JSON是什么 给大家介绍了JSON的标准规范 xff0c 今天就自己动手写一个JSON的反序列化程序 xff0c 并命名它为 zjson 0 开始之前 本篇文章的目的是学习实践 xff0c 所以我们选择相对简单的Python实
  • mysql 读取指定表的字段类型、名称、注释

    写文档时经常需要整理数据库字段为表格 xff0c 通过下面sql xff0c 可以获取字段的名称 类型 注释等属性 1 简单版 SELECT COLUMN NAME 字段名称 COLUMN COMMENT 字段注释 COLUMN TYPE
  • Jmeter阶梯压力测试_导出测试报告

    阶梯性能测试需要安装jpgc插件 xff0c 所以下文先安装了个插件管理器 xff0c 再安装jpgc插件 xff0c 最后实现阶梯性能测试 1 官网下载Jmeter https jmeter apache org download jme
  • SQL like 多个名称,用正则匹配

    select from category where REGEXP LIKE code 39 0201 0202 39 实现了code字段正则匹配0201 或者 0202
  • 原型、设计、前端 协作工具汇总

    目前主流的 UI 设计软件有 Sketch Photoshop Adobe XD 和 Figma xff0c 并且国内已经有很多优秀软件基于这些设计软件作出了相关协作工具 生成工具 xff0c 大大提高了工作效率 xff0c 在此汇总收集相
  • 单点登录系统对比 - 协议介绍及 cas、keyclock、authz、authing等的对比

    协议 用户中心系统作为服务端 xff0c 肯定是要跟客户端进行对接来授权 amp 获取用户信息的 目前大致流行的有 LDAP CAS OIDC 基于 Oauth2 0 SAML 等 xff0c 此外还有 Kerberos 等不太常见的协议
  • jquery ajax 提交json格式数据

    某些系统后台必须传json数据 xff0c 所以需要使用如下格式设置 ajax url 34 login 34 data JSON stringify 34 username 34 34 zhangsan 34 34 password 34
  • RSA 非对称加密解密,可以javascript和java加解密

    公钥与私钥机制属于非对称加密的范畴 xff0c 非对称是相对于对称加密而言的 xff0c 对称加密用于加密与解密的密钥是同一把 xff0c 而非对称加密则用于加密与解密的密钥不相同 xff0c 一个公开 xff0c 称为公钥 xff1b 一
  • word 通过宏选中所有表格

    1 将下面的脚本复制 2 word 视图 宏 查看宏 输入宏名 xff1a SelectAllTables 点击创建 Alt 43 F11打开VBA代码编辑窗口 xff0c 新增模块 3 将脚本编辑窗口中的默认代码删掉 xff0c 粘贴1步
  • 开源表单收集系统推荐

    1 TDUCK填鸭表单官网 开源表单系统 xff0c 自定义工作流 xff0c 信息收集系统 业务表单自由拖拽实时生成 全新工作流版本 全新移动端UI 表单收款 全新预约组件 投票场景支持 考试场景支持 函数计算支持 目前市面上的表单平台虽
  • .net framework 官方下载地址

    net framework 官方下载地址 https dotnet microsoft com zh cn download dotnet framework
  • QT/C++多线程练习:单生产者多消费者(巨详细版本)

    QT多线程练习 单生产者多消费者 代码思路1 全局变量2 消费者线程3 消费者管理类4 生产者线程5 主线程总结 最近在研究qt的线程的一些知识点 从如何新建线程到以不同的方式去新建线程 xff0c 再到多线程以及多线程同步的几种方式等 看
  • uniapp 设置背景图像

    uniapp设置背景图像方法如下 xff0c 兼容android APP lt view class 61 34 outer 34 style 61 34 background 39 url 39 43 APPSET bgUrl 43 39
  • nginx https 代理 tomcat http,解决访问https还会跳转http问题

    server listen 443 ssl 配置HTTPS的默认访问端口为443 如果未在此处配置HTTPS的默认访问端口 xff0c 可能会造成Nginx无法启动 如果您使用Nginx 1 15 0及以上版本 xff0c 请使用liste
  • jquery pagination分页组件

    pagination 一个jQuery插件 xff0c 提供简单但完全可定制的分页 样式如下 官网 https pagination js org github https github com superRaytin pagination
  • 通过FRP搭建内网穿透,实现域名访问局域网本机

    1我的目标 xff1a 实现通过域名访问局域网tomcat服务 xff0c 域名访问方便本地微信调试 2思路 xff1a xff08 1 xff09 用服务器搭建内网穿透 利用FRP实现穿透 xff0c frp 是一个专注于内网穿透的高性能