natcross2

内网穿透工具


natcross是做什么的?

  • 需要自己提供硬件支持、部署的内网穿透工具
  • 提供TCP协议类型的内网穿透服务,包括但不限于http(s)、数据库连接、ssh等协议
  • 支持https协议转http协议与应用交互方式
  • 支持无加密、控制端口加密交互、数据加密交互方式
  • 主要服务场景,需要将内网的应用开放到公网,如微信小程序开发调试、支付回调等
  • 支持HTTP根据host进行反向代理;目标依然是内网应用,只是可以根据HTTP协议header中的host字段区分选择目标应用(注意:只是有人提出来了HTTP监听统一端口并用域名访问的问题,并且有做的价值才补充的该功能;没做负载功能,这个是内网穿透,不是nginx,更不建议直接用在生产上,需要负载的可以自己去实现)

打包使用

服务端-ServerApp打包:

# 修改ServerApp.java中serviceIp为公网服务器的IPmvn clean compile package -PserverApp

客户端-ClientApp打包:

mvn clean compile package -PclientApp

安装

  1. 需要一台可在公网访问的机器,并将控制端口(默认 servicePort 10010)、数据端口(如tomcat,开放公网 listenPort 8081端口,外网连接时要对应数据端口8081)开放出来
  2. 将ServerApp.jar包放在公网可访问的机器并运行,打包前需要修改serviceIp为公网服务器的IP
  3. 将clientApp为入口进行运行,destIp:destPort为要开放的内网应用,如本地的tomcat(127.0.0.1:8080)
  4. 用浏览器访问serviceIp:listenPort便可以访问到内网的tomcat

参数解释

CommonConstants:

字段 解释
serviceIp 公网服务器的IP
servicePort 服务端的控制端口,主要用来与客户端进行指令交互
listenPort 服务端的监听端口,也就是部署完成后,在外网访问 serviceIp:listenPort 的方式对内网应用进行访问
destIp 要开放到公网的内网应用所在机器的IP
destPort 要开放到公网的内网应用的端口
aesKey 交互密钥key,保证数据的秘密性,可以查看 SecretInteractiveModel.java 中的fullMessage和checkAutograph中确认密钥的使用方式。
如果你使用了secretAll方式进行部署,这个key还是数据加密的key,可以在 SecretPassway.java 中确认密钥的使用方式
注意使用长度,windows版本的java只能用最大128长度的密钥
tokenKey 交互签名key,签名同aesKey

ServerApp:

字段 解释
sslKeyStorePath ssl证书的路径,默认方法只支持pkcs12的证书格式,使用这个证书可以做到https协议转http协议
sslKeyStorePassword 证书密码
createServerSocket 创建socket的方式,主要针对普通socket和sslSocket的方式进行封装,结合ssl证书使用

ClientApp:

字段 解释
#secretHttpRoute:routes http方式,根据不同host路由选择不同的目标应用

内网穿透思路

因NAT网内CLIENT可以正常连接到SERVER端,并且能够保持一段时间的长连接,则由CLIENT发起连接,建立SOCKET对,在SERVER收到外部请求时,可以通过已经建立好的SOCKET将数据传输给CLIENT,CLIENT使用相同的方式将数据发送给指定的网络程序,网络程序回发数据后则按原路返回给请求方。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-knGiNgKB-1641384650414)(./doc/sequence.svg)]

相关技术

技术 体现点
Socket 核心技术概念
NIO nio.NioHallows,使用Selector作为注册监听器(多路复用),有事件唤起后会创建子线程进行异步处理
TCP粘包、拆包的解决 channel.LengthChannel,此处用的是一个大端序列的长度加消息内容的方式
线程管控 clientside.ClientControlThread、serverside.client.ClientServiceThread、serverside.listen.ServerListenThread作为独立管控及子线程异步处理的主要体现,亦可通过executor包下相关类进行追踪
HTTP路由 api.socketpart.HttpRouteSocketPart#routeHost,一个简单的对host头部字段的处理应用
消息加密 对AES、MD5联合的使用示例,channel.SecretInteractiveChannel、model.SecretInteractiveModel,对实际消息进行加密,增加辅助字段保证消息的真实性、准确性和完整性
计数门闩 utils.CountWaitLatch,类CountDownLatch,增加了countUp,不只受初始化的值决定,可以增加、减少,主要用来解决nio.NioHallows唤醒后批量channel注册的问题(等下,怎么感觉可以用读写锁来解决呢?)
线程池 虽然用了线程池,但默认的是Executors.newCachedThreadPool()来生成的,具体的还是需要根据机器来自定义线程池,主要还是对子线程的管控体现吧

内网穿透工具natcross2相关推荐

  1. NatApp 内网穿透工具简单使用介绍说明

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

  2. FastTunnel - 打造人人都能搭建的内网穿透工具

    FastTunnel是用.net core开发的一款跨平台内网穿透工具,它可以实现将内网服务暴露到公网供自己或任何人访问. 与其他穿透工具不同的是:FastTunnel项目致力于打造一个易于扩展.易于 ...

  3. 采用.NET CORE的全异步模式打造一款免费的内网穿透工具--NSmartProxy

    什么是NSmartProxy? NSmartProxy是一款免费的内网穿透工具. 特点 跨平台,客户端和服务端均可运行在MacOS,Linux,Windows系统上: 使用方便,配置简单: 多端映射, ...

  4. 启动go服务_内网穿透工具 FRP公网服务端、内网客户端快速配置文件说明

    内网穿透工具 FRP 公网服务端.内网客户端 frps.ini .frpc.ini 配置文件常用设置展示及说明 公网服务端 frps.ini 配置文件常用设置 公网服务端配置文件:frps.ini [ ...

  5. 钉钉开放平台:内网穿透工具 - 服务器免费打造教程

    钉钉开放平台:内网穿透工具 - 服务器免费打造教程 让全世界的人都可以访问到你本地电脑上的网站,老程序员亲自演示

  6. 内网穿透工具_utools让你3步搭建一个内网穿透工具

    文章简介 在日常生活中,我们经常会因为各种需要下载各种APP.例如,备忘录需要下载备忘录软件,时间管理需要番茄时间法类的软件,内网穿透需要自行配置.这些软件可能我们只是为了一时的使用,用完就不会再用了 ...

  7. 推荐 4 款超好用的内网穿透工具,总有一款适合你

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 1前言 本文以渗透的视角,总结几种个人常用的内网穿透,内网代理工具,介绍其简单原理和使用方法. 0x01 nps- ...

  8. 推荐一下十三款内网穿透工具(超全)

    由于最近需要进行web开发调试,涉及到微信支付必须要有一个固定的公网地址才可以接收到返回结果,所以需要内网穿透工具,于是简单了解了一下,确实有几家做的比较好的. 目前国内所有内网穿透软件大全 花生壳 ...

  9. 永久免费 内网穿透工具 傻瓜式配置

    永久免费 内网穿透工具   傻瓜式配置 使用教程 配合工具:网云穿 先官网注册:点击访问注册 1.进入官网首页,点击右上方注册 2.注册后,我们在官网领取隧道 3.领取完隧道会直接让我们跳转控制台,配 ...

最新文章

  1. 颤抖吧,打工人!深信服推出员工离职倾向、工作摸鱼监测系统!
  2. 14个顶级开发社区 [程序员]
  3. C# 操作XML入门
  4. Binder实用指南(一) - 理解篇
  5. git pull ---rebase
  6. 使用eclipse调试hive mapreduce
  7. 02.XMemcached的使用
  8. ASP.net MVC redis完整示例(含集合,哈希,sortedset)
  9. Matlab颜色对照(RGB三元组、十六进制表示)
  10. spring视频教程下载
  11. 计算机系统数据备份与恢复,系统数据备份和恢复制度
  12. 密歇根州立大学被黑 个人信息和社保号码被盗
  13. hping3对某网站发起ddos攻击
  14. vander范德蒙德行列式
  15. 列向量和行向量看待矩阵乘法
  16. PWM波控制舵机总结
  17. Expiring 1 record(s) for canalEtl_hn-0: 30017 ms has passed since batch creation plus linger time
  18. Can‘t load /home/Iot/.rnd into RNG
  19. CWDM, DWDM,CCWDM 如何选择?
  20. 【计算机网络】运输层

热门文章

  1. 佩尔方程以及hdu6222
  2. PDF合并在电脑上怎样实现?PDF合并的方法有哪些?
  3. winrar压缩过滤文件及文件夹
  4. 关于x>y?x:y的含义
  5. 天津成考计算机水平考试,天津市成考《计算机基础考试大纲》(高中起点)
  6. mysql的column是什么意思_column意思 数据库中的column是什么意思
  7. 最后1天|宏基因组分析第8期(报名直播课免费参加线下2020.7)
  8. 【物联网】AT指令|AT返回错误|AT 指令 收发短信和GPRS上网 SIM508/548
  9. 常见的拖垮中小公司技术团队的10宗罪
  10. 招商银行笔试题之跳格子游戏