azhonghao 发表于 2023-1-18 11:07

内网穿透动态公网ip,访问内网各种设备的思路分享

本人现自用的方案分享这个方案核心1.      拥有一个域名2.      公网ip【现在公网ipv4也很难拿到了,有ipv6也够了】解决的痛点:公网ip定期会更新,我们每有一个应用想穿透,可能需要新建一个又一个公网端口来穿透,记忆起来很麻烦。解决思路:通过DNSPod将我们最新的ip地址告知域名服务商,容易记忆的泛域名解析通过同一个外网端口到nginx由nginx通过不同的域名区分来访问各个不同的设备或者应用解决方案如下:方案的难点
[*]dnspod将现在的公网ip告知给域名服务商,参考:原作者教程。如果你有公网ip,那么直接在域名服务商那里将 二级域名与泛域名都指向你的静态ip即可。DNSpod就是不断重复的做上述事情。
[*]nginx的转发,本人现在的思路是这样的:因为家里开了很多设备与服务 首先将二级域名 如:home.route.com指向 网关,同时*.home.route.com也是指向该网关的。此时nginx通过8080端口 接收到 home.route.com的请求,访问本地的网关。接收到*.nas.home.route.com 访问nsa设备或其内部服务。接收到*.esxi.home.route.com 访问esxi服务器设备或其内部服务。
[*]没有自己的域名,这个就比较难了,可以选择如3322,花生壳 来做穿透,但是不提供泛域名的解析。去年花了19块从腾讯云购买了5年的一个域名(一顿饭钱解决的事情就不再操那么多心了)。如果还是不愿意花钱那就只能免费二级域名+不同端口 结合下文的 优化1 来实现远程访问。效果其实也是一样的,唯一的问题就是端口开的略多
方案的优化
[*]解决完上述问题后,我们干掉了繁多的端口问题,接下来很懂的就是,域名我也嫌太多了,如果有一个属于自己的网址导航就好了。没问题的有现成的方案:通过docker搭建heimdall,我们需要用如:heimdall.home.route.com:8080的域名指向 docker中搭建的 heimdall。接着在heimdall中将 各种服务的名称 指向我们已经配置好的 各类二三四级域名。相关资料heimdall官网 heimdall Gayhubheimdall Dockerhub 如下图(本人的图就不放出来了,网上找的)
2.个人后来觉得heimdall太过臃肿,从网上找了一套前端模板,再接上了laravel+mysql 。核心思路就是 二三四级域名=>服务 一张表就可以解决。不同的设备tag分组 ,不同的应用填写上不同的URL地址。为了加强访问速度,可以将mysql查询结果先放入redis中,通过redis来返回网站所需要的这些路径数据。图标是从阿里云矢量图库上扒拉下来的。思路就是这样。嗯。

dongfeng555 发表于 2023-1-30 09:41

有想法,这系统集成帅呆了!
页: [1]
查看完整版本: 内网穿透动态公网ip,访问内网各种设备的思路分享