请问,快解析内网穿透好用吗?

在开发微信公众号或者小程序时,腾讯服务器的回调地址需要是外网的真实备案域名才能回调成功,作为本地开发调试时,有经验的开发者通常都是编写代码后上传服务器进行运行调试,但这对于新手开发者,这样开发效率太低。所以本文推荐把本地开发的项目,通过nps的域名反向代理,实现外网访问本地开发项目。

nps这个开源项目的简要介绍:

NPS 是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持 tcp、udp 流量转发,可支持任何 tcp、udp 上层协议(访问内网网站、本地支付接口调试、ssh 访问、远程桌面,内网dns解析等等……),此外还支持内网 http 代理、内网 socks5 代理p2p 等,并带有功能强大的 web 管理端。

它能实现的功能有很多,而要解决我们这里的问题,只需要它里面的一个功能,做微信公众号开发、小程序开发等----> 域名代理模式。

首先查看官方文档   把工具下载下来。然后进行部署。

首先您要有一个vps空间,或者阿里云,腾讯云之类的服务器,并已经通过备案和域名已经解析到80端口上。做开发的朋友,一般都会有 自己的测试服务器吧,这个不多说。

用这个服务器安装nps的 服务器端安装包。安装后,windows系统会在c:\program

1、下载服务器端包,把服务器安装包 从这里下载 

下载完服务器压缩包后,解压,然后进入解压后的文件夹 如果发现没有启动成功,可以使用nps(.exe) stop,然后运行nps.(exe)运行调试, 访问服务端ip:web服务端口(默认为8080) 使用用户名和密码登陆(默认admin/123,正式使用一定要更改)

2、本地电脑安装客户端安装包,把安装包解压后,进入cmd命令行,cd到解压的目录路径下。

  • 下载客户端安装包并解压,进入到解压目录

  • 点击web管理中客户端前的+号,复制启动命令

3、进入服务器端web管理后台,添加客户端和域名,得到配置参数。

访问服务端ip:web服务端口(默认为8080)
,内网目标:,内网目标:,即可成功

https: 如需使用https请在配置文件中将https端口设置为443,和将对应的证书文件路径添加到配置文件中,上面添加的这条记录将会把http、https都转发到内网目标

适用范围: ssh、远程桌面等tcp连接场景

内网目标,负载均衡时多个目标,逗号隔开

本代理支持根据URL将同一域名转发到不同的内网服务器,可在web中或客户端配置文件中设置,此参数也可忽略,例如在客户端配置文件中

如果将一些危险性高的端口例如ssh端口暴露在公网上,可能会带来一些风险,本代理支持限制ip访问。

使用方法: 在配置文件/cnlh/,有一台公网机器ip为访问访问解析到公网服务器,内网目标:,内网目标:,即可成功

https: 如需使用https请在配置文件中将https端口设置为443,和将对应的证书文件路径添加到配置文件中,上面添加的这条记录将会把http、https都转发到内网目标

适用范围: ssh、远程桌面等tcp连接场景

内网目标,负载均衡时多个目标,逗号隔开

本代理支持根据URL将同一域名转发到不同的内网服务器,可在web中或客户端配置文件中设置,此参数也可忽略,例如在客户端配置文件中

如果将一些危险性高的端口例如ssh端口暴露在公网上,可能会带来一些风险,本代理支持限制ip访问。

使用方法: 在配置文件nps.conf中设置ip_limit=true,设置后仅通过注册的ip方可访问。

ip注册: 在需要访问的机器上,运行客户端

time为有效小时数,例如time=2,在当前时间后的两小时内,本机公网ip都可以访问nps代理.

注意: 本机公网ip并不是一成不变的,请自行注意有效期的设置,同时同一网络下,多人也可能是在公用同一个公网ip。

为防止恶意大量长连接,影响服务端程序的稳定性,可以在web或客户端配置文件中为每个客户端设置最大连接数。该功能针对socks5http正向代理域名代理tcp代理私密代理生效。

  • 使用时将需要复用的端口设置为与bridge_port一致即可,将自动识别。
  • 如需将web管理的端口也复用,需要配置web_host也就是一个二级域名以便区分

npc支持环境变量渲染以适应在某些特殊场景下的要求。

在无配置文件启动模式下: 设置环境变量

直接执行./npc即可运行

在配置文件启动模式下:

在配置文件中填入相应的环境变量名称,npc将自动进行渲染配置文件替换环境变量

当客户端以配置文件模式启动时,支持多节点的健康检查。配置示例如下

health关键词必须在开头存在

第一种是http模式,也就是以get的方式请求目标+url,返回状态码为200表示成功

第一种是tcp模式,也就是以tcp的方式与目标建立连接,能成功建立连接表示成功

如果失败次数超过health_check_max_failed,nps则会移除该npc下的所有该目标,如果失败后目标重新上线,nps将自动将目标重新加入。

健康检查目标,多个以逗号(,)分隔
健康检查url,仅http模式适用

本代理前会在每一个请求中添加了这两个 header。

在web管理中的修改将实时使用,无需重启客户端或者服务端

在web管理中将显示客户端的连接地址

可统计显示每个代理使用的流量,由于压缩和加密等原因,会和实际环境中的略有差异

客户端与服务端版本对比

为了程序正常运行,客户端与服务端的版本必须一致,否则将导致客户端无法成功连接致服务端。

测试环境: 1M带宽云服务器,理论125kb/s,带宽与代理无关,与服务器带宽和内网客户端外网带宽关系较大。

为了最大化的提升效率和并发,客户端与服务端之间仅两条tcp连接,减少建立连接的时间消耗和多余socket连接对机器性能的影响。

注意: 为保证安全,时间戳的有效范围为20秒内,所以每次提交请求必须重新生成。

如果想获取authKey,服务端提供获取authKey的接口

将返回加密后的authKey,采用aes cbc加密,请使用与服务端配置文件中cryptKey相同的密钥进行解密

  • 解密串编码方式 十六进制

  • 此文档近期可能更新较慢,建议自行抓包

为方便第三方扩展,在web模式下可利用webAPI进行相关操作,详情见

欢迎参与到制作docker、图标、文档翻译等工作

  • 如果遇到bug可以直接提交至dev分支
  • 使用遇到问题可以通过issues反馈
  • 项目处于开发阶段,还有很多待完善的地方,如果可以贡献代码,请提交 PR 至 dev 分支
  • 如果有新的功能特性反馈,可以通过issues或者qq群反馈

# 可选步骤,建docker源修改为阿里云

-> 用来访问内网穿透服务

  • 我们可以通过 访问本地电脑映射的服务
  •  # 这里使用自己的域名
     
     
     # 这里使用自己的域名
     # 这里根据你的lanproxy配置,改成 外网接口 的值,在lanproxy后台网页上配置,后面配置
     
     
    • 用前面 conf//ffay/ 来访问我们的内网服务了的,用浏览器打开看看

      为什么要使用docker?

      使用docker主要是为了不破坏服务端环境,只是给 lanproxy 安装了一个 jdk8 的环境,不影响其他服务继续运行;而且使用 docker 还可以很方便的转移到其它机器上面部署,只要把 Dockerfile 拷贝过去就可以了。

      这样搭建,服务器重启的话需要手动重启 lanproxy 吗?

      不需要,在服务端启动 docker 容器的脚本下,我添加了 --restart unless-stopped 参数,只要 docker 服务启动了,容器就会跟着启动,如果你不需要这个需求,可以去掉这个参数

      前不久看到花生壳的公告,说从4月1日开始,免费版将不提供80端口映射,实际上我用这个映射最大的需求就是做微信调试,去掉80端口就不能做微信调试了,不满足我的需求了,当然,花生壳还是不错的,如果能满足你的需求,还是可以省时省力完成内网穿透的

      以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    我要回帖

    更多关于 网云穿内网穿透 的文章

     

    随机推荐