NATAPP + Nginx + i996 内网穿透


好久没写博客了,一直没有让我兴奋的点,也没有太多的我觉得需要记笔记的部分。
今天呢,想分享一个关于内网穿透的大胆的想法。

相信知道内网穿透的小伙伴都会听过NATAPP,个人觉得这真是一款良心软件。每个用户可以拥有两条免费的隧道,速度个人觉得是免费天花板,虽然域名随机,端口随机,但是用于demo的测试,完全是足够的,之前尝试过测试音乐网站类的demo,也能够达到流畅听歌。

所以需要的朋友,可以自己去官网安利一下,使用细节我就不多说了,网上一大片。
https://natapp.cn/

i996呢 是我昨天发现的又一款内网穿透的神器,免安装无配置,只需要关注公众号就会免费送你一条隧道,而且已经给你配置好了https的证书,还能改子域名、本地映射端口。虽然只有一条web的隧道,但是白嫖,还要啥自行车。需要的朋友,同样官网自己去安利。
https://www.i996.me/

本次就遇到问题,把详尽的解决过程做一个记录。系统使用的是Windows环境,Linux环境应该依葫芦画瓢就可以实现。

问题一


由于NATAPP域名随机,当我们穿透部署本地项目之后,由于域名是随机的且不固定,所以非常之难记。TCP远程连接的端口也是随机,同样难搞。
那么我们如果能够自动重启natapp, 并且能获取相应的域名和端口不就能够解决这一痛点了么?

我注意到官网的配置文件,有这样的说明。

#将本文件放置于natapp同级目录 程序将读取 [default] 段
#在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置
#命令行参数 -config= 可以指定任意config.ini文件
[default]
authtoken=                      #对应一条隧道的authtoken
clienttoken=                    #对应客户端的clienttoken,将会忽略authtoken,若无请留空,
log=none                        #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为none
loglevel=ERROR                  #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG
http_proxy=                     #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空

log参数可以指定为本地文件,那是不是意味着窗口中的信息会被记录呢?

设置完log的本地路径之后,发现有log文件生成,但是没有任何的内容。

但是注意到loglevel参数默认是,DEBUG,那窗口中的日志会不会不是DEBUG日志?
我第一个想到的是INFO。幸运的是改为INFO之后,我拿到了我想要的窗口日志。


那么这样一来,变成了文件的形式就可以很方便的获取了。

所以,最终使用一行命令得到我们想要的结果。大家可以参照去写。

start "C:\Program Files\natapp\zjw\3389\natapp.exe" -log="C:\\Program Files\natapp\log\log_3389.txt" -loglevel="INFO" -authtoken="authtoken"

问题二


倒是能够从文件获取域名和端口了,那我们怎么及时的能够知道这个信息呢?用户又怎么能够及时的知道这些信息呢?当然,这免不了写代码。

语言我选择Powershell。windows自带,不用装任何的环境。

我最初的想法是通过邮件发送给我自己,但是总觉得别扭,首先我都懒得登邮件,而且基本每天我都要通过邮件去获取最新的域名和端口,内心特别拒绝。

所以最开始试用了一段时间之后,放弃了一段时间。

直到我发现了 i996,诞生了一个新的想法。
i996的子域名和本地映射端口都是可以自定义的,那我可以起一个好记的子域名,然后部署一个web服务,主页用于存放我的最新的域名和地址,这样一来我只需要访问i996的地址就能拿到最新的域名和端口。而对于用户来说,入口也只有i996一个。

最后,写个脚本定时重启natapp,从日志获取最新的域名和端口更新到主页,自此问题解决。

Powershell脚本

# 结束所有的natapp进程
Get-Process -Name natapp | foreach-object{$_.Kill()} -ErrorAction Continue# 定义日志的存放地址
$natapp_3389_log_zjw = "C:\Program Files\natapp\log\3389\log_3389_zjw.txt"
$natapp_3389_log_sd = "C:\Program Files\natapp\log\3389\log_3389_sd.txt"
$natapp_80_log = "C:\Program Files\natapp\log\80\log_80.txt"# nginx主页
$home_page = "C:\Program Files\nginx-1.21.4\html\index.html"
# 模板主页
$template_page = "C:\Program Files\natapp\index.html"# 启动隧道
cmd.exe /c start "natapp.exe" "-log=$($natapp_3389_log_zjw)" "-loglevel=INFO" "-authtoken=***"
cmd.exe /c start "natapp.exe" "-log=$($natapp_80_log)" "-loglevel=INFO" "-authtoken=***"
cmd.exe /c start "natapp.exe" "-log=$($natapp_3389_log_sd)" "-loglevel=INFO" "-authtoken=***"# 等待五秒
Start-Sleep 5# 启动完成的关键字
$key_words = "established at "# 获取最后一行的服务器地址
$natapp_3389_log_txt_zjw = Get-Content $natapp_3389_log_zjw -Encoding UTF8
$natapp_3389_row_zjw = $natapp_3389_log_txt_zjw[$natapp_3389_log_txt_zjw.Count - 1]
$natapp_3389_server_zjw = $natapp_3389_row_zjw.Substring($natapp_3389_row_zjw.LastIndexOf($key_words) + $key_words.Length)
Write-Host $natapp_3389_server_zjw# 获取最后一行的服务器地址
$natapp_3389_log_txt_sd = Get-Content $natapp_3389_log_sd -Encoding UTF8
$natapp_3389_row_sd = $natapp_3389_log_txt_sd[$natapp_3389_log_txt_sd.Count - 1]
$natapp_3389_server_sd = $natapp_3389_row_sd.Substring($natapp_3389_row_sd.LastIndexOf($key_words) + $key_words.Length)
Write-Host $natapp_3389_server_sd# 获取最后一行的服务器地址
$natapp_80_log_txt = Get-Content $natapp_80_log -Encoding UTF8
$natapp_80_row = $natapp_80_log_txt[$natapp_80_log_txt.Count - 1]
$natapp_80_server = $natapp_80_row.Substring($natapp_80_row.LastIndexOf($key_words) + $key_words.Length)
Write-Host $natapp_80_server# 读取模板HTML,替换内置占位的服务器地址
$html_content = Get-Content $template_page -Encoding UTF8 -Raw
$html_content = $html_content.Replace("#natapp_3389_zjw#", "$($natapp_3389_server_zjw) => 192.168.0.111:3389").Replace("#natapp_3389_sd#","$($natapp_3389_server_sd) => 192.168.0.2:3389").Replace("#natapp_80#", "$($natapp_80_server) => 192.168.0.110")# 更新到Nginx主页
Set-Content -Encoding UTF8 -Value $html_content -Path $home_page

这样一来,脚本执行,就会关闭natapp的进程,重新启动并更新到nginx的主页中,效果如下,当然样式什么的不重要,重要的是思想成立:

最后只需要设置windows计划任务,将这个脚本定时执行就可以了,建议一天执行两次。

那么以上就是本次分享的内容,有什么疑问或者更好的建议,欢迎大家留言探讨。

NATAPP + i996 内网穿透相关推荐

  1. NatApp免费内网穿透

    natapp提供一个免费的可用的公网域名,将本地主机映射上公网,全面支持HTTPS协议以及本地SSL证书,支持WSS协议,同时支持HTTP/2 WEB协议,支持微信小程序本地开发,全面自动支持泛子域名 ...

  2. 使用natapp实现内网穿透详细教程

    使用natapp来实现内网穿透 业务场景 当我们的项目是部署在本地的时候,如何让其他用户(不在同一个局域网之下)来进行调用呢?这时我们就可以使用内网穿透将自己的IP通过映射成相应的地址,然后再通过映射 ...

  3. Mac使用NATAPP完成内网穿透

    一.内网穿透 最近做支付需要提供回调接口给第三方回调,此时就需要一个大家都能访问的外网环境,于是就做了内网穿透. 内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和 ...

  4. natapp实现内网穿透(详解)

    一.内网穿透与natapp 1.1 什么是内网穿透? 内网穿透简单来说就是将内网外网通过natapp隧道打通,让内网的数据让外网可以获取.比如常用的办公室软件等,一般在办公室或家里,通过拨号上网,这样 ...

  5. 使用NATAPP做内网穿透

    初衷:写这篇文章初衷是因为我的测试微服务的时候很麻烦,总是需要在本地启动很多,于是我使用nacos的命名空间区分了环境,那么我想让云端的可以调到我本地我就需要用到内网穿透,那么我随之想到的就是花生壳的 ...

  6. NATAPP.CN 内网穿透教程

    1.先注册账号. 2.点击购买隧道,先选择免费隧道,试用一下. 3.配置隧道 4.然后下载客户端,客户端不能双击打开,需要在进行配置.   windows ,点击开始->运行->命令行提示 ...

  7. 【NATAPP】natapp内网穿透_麻瓜教程~~~下载——使用——快捷方式

    文章目录 NATAPP内网穿透 什么是内网穿透? 1.客户端下载 2.官网注册登录(实名制) 3.生成网络地址 快捷方式: NATAPP内网穿透 什么是内网穿透? 官网:https://natapp. ...

  8. Linux之NATAPP内网穿透工具安装和使用

    一.natapp简介   内网穿透的原理其实很简单,就是通过具有固定公网IP地址的中转服务器实现流量转发.我们常用的向日葵.teamviewer都是类似的原理,只不过这些远程桌面工具是客户端到客户端的 ...

  9. 域名解析和内网穿透实验

    MQTT相关实验 第一节:Mosquitto 相关实验 第二节:域名解析和内网穿透实验 第三节:OneNET 相关实验 Gitee仓库地址: https://gitee.com/zhj0125/MQT ...

最新文章

  1. android8 Notification
  2. Top K算法问题的实现
  3. 双边分支网络:兼顾特征和分类的长尾问题解决方案
  4. Python应用实战-Python提升运行速度技巧总结
  5. Linux作者批评英特尔指令集,英特尔回应 Linus Torvalds 对 AVX512 的批评
  6. mysql 主键个数
  7. 413.等差数列划分(力扣leetcode) 博主可答疑该问题
  8. Performing User-Managed Database-18.4、Restoring Datafiles and Archived Redo Logs
  9. ssh详细原理流程及配置
  10. 字符集,字体,编码,代码页,输入法
  11. 一分钟读懂dB、dBm、dBw的区别
  12. 虚拟服务器与域名怎么解析,服务器和虚拟主机的绑定域名解析
  13. Emacs中学习gdb调试
  14. 唯一分解之Pollard-Rho算法
  15. k8s 部署 owncloud
  16. 我们为什么要结婚?(
  17. 兵棋系列2----兵棋游戏中地图滑动和委托消息
  18. id 重启event_windows server 2008 R2服务器自动重启,事件ID:6008和事件ID:5
  19. 北京软件开发商城app系统软件开发大概多少钱
  20. Win8应用开发笔记(1):谈谈Windows RT

热门文章

  1. 【面试算法】——字符串问题(一)
  2. 微信公众号文章如何使用其他字体
  3. 虚拟机上安装苹果系统
  4. JDictSelectTag 字典标签用法
  5. 蔡勒公式和基姆拉尔森计算公式
  6. Win10《芒果TV》商店内测版更新至v3.7.65.0:跨平台UI新体验,铺路SP
  7. Adobe Illustrator(AI)中画波浪线选择端点以及编辑的问题
  8. 计算机表格计算公式总分,word中怎么算总分 word里怎么计算总分
  9. PDF在转Excel免费的!在线工具!轻松搞定
  10. 命令Ubuntu常用防火墙