在日常的开发过程中,我们会经常向客户或者其他人演示本地网站服务,在不想买服务器的情况下,可以采用这种内网穿透映射工具,很方便的展示我们所开发的网站。下面就记录一下我使用natappnps两个工具的使用方法,做一个总结。

内网穿透

简单来说就是将内网外网通过natapp隧道打通,让内网的数据让外网可以获取。

应用场景

  • 微信本地开发调试
  • 手机APP本地开发调试
  • 快速项目DEMO演示
  • TCP转发
  • 穿透防火墙

natapp使用

natapp是一个基于ngrok的国内高速内网映射工具,反向代理软件,通过在公网和本地运行的 Web 服务器之间建立一个安全的通道。natapp 可捕获和分析所有通道上的流量,便于后期分析和重放。

注册购买

  • 登录natapp官网,注册一个账号

  • 选择一个隧道类型,一般是免费的,如果你想自定义二级域名,可以选择VIP_1型号的隧道

natapp
natapp
  • 填写隧道名称,选择协议,填写端口,就购买成功了
natapp
natapp

配置地址端口

  • 打开左边导航我的隧道,进入列表配置,进行详细设置
natapp
natapp
  • 修改本地网站服务的地址和端口,点击修改即可
natapp
natapp
  • 复制authtoken值到剪切板

安装配置

windows使用配置

下载页面选择你本地系统的软件包,点击下载解压缩。

natapp文件夹下面新建一个配置文件config.ini,写入一下内容:

1
2
3
4
5
6
7
8
9
#将本文件放置于natapp同级目录 程序将读取 [default] 段
#在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置
#命令行参数 -config= 可以指定任意config.ini文件
[default]
authtoken=XXX #对应一条隧道的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 非代理上网用户请务必留空

把刚才复制的authtoken填写到配置文件对于的地方。

启动natapp.exe就可以看到命令行窗口出现成功的提示。

natapp
natapp

打开线上地址,就可以看到内网的服务已经映射到外网,可以正常访问了。

natapp
natapp

Linux使用配置

  • 下载软件包
1
2
3
4
5
6
7
8
9
# 32位
wget http://download.natapp.cn/assets/downloads/clients/2_3_9/natapp_linux_386_2_3_9.zip

# 64位
wget http://download.natapp.cn/assets/downloads/clients/2_3_9/natapp_linux_amd64_2_3_9.zip

# 解压
unzip natapp_linux_amd64_2_3_9.zip
mv natapp_linux_amd64_2_3_9 natapp
  • 启动运行
1
2
cd natapp
./natapp -authtoken=xxxxx
  • 后台运行方法
1
nohup ./natapp -authtoken=xxx -log=stdout -loglevel=ERROR &
  • 检查是否运行
1
ps -ef|grep natapp

如果有进程,就说明后台运行成功。

nps使用

刚才说到的是第三方的natapp软件,有免费版,但是功能极少,功能多又都收费,我在网上又发现一些开源的内网映射工具。比如非常受欢迎的nps,很强大。

简介

nps一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。

下载安装

注意:演示服务端使用centos7系统,客户端使用win10系统。

服务端配置

下载完服务器压缩包后,解压,然后进入解压后的文件夹。

1
2
3
4
wget https://github.com/ehang-io/nps/releases/download/v0.26.6/linux_amd64_server.tar.gz
tar -xzvf linux_amd64_server.tar.gz
mv linux_amd64_server nps
cd nps

配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[common]
server_addr=127.0.0.1:8024
conn_type=tcp
vkey=123
auto_reconnection=true
max_conn=1000
flow_limit=1000
rate_limit=1000
basic_username=11
basic_password=3
web_username=user
web_password=1234
crypt=true
compress=true
#pprof_addr=0.0.0.0:9999

安装启动

1
2
./nps install
nps start

客户端配置

  • 开启服务端,假设公网服务器ip为1.1.1.1,配置文件中bridge_port为8024,配置文件中web_port为8080
  • 访问1.1.1.1:8080
  • 在客户端管理中创建一个客户端,记录下验证密钥
  • 内网客户端运行(windows使用cmd运行加.exe)

下载解压后,进入目录,运行./npc -server=1.1.1.1:8024 -vkey=客户端的密钥

示例讲解

比如说,在内网上面运行着一个服务,地址是http://127.0.0.1:3000,这时候我想通过外网域名test.example.com访问。下面就介绍如何进行配置,提过外网访问。

本地启动服务

首先就是本地启动这个服务,可以提过游览器访问本地服务。

创建解析

在云计算服务商网站,创建一条dns解析A记录,把test.example.com解析到1.1.1.1服务器上面。

创建客户端

  • 打开http://1.1.1.1:8080
  • 点击客户端导航,添加一个客户端,填写名称,密钥,点击新增按钮保存
nps
nps
  • 点击配置
nps-config
nps-config
  • 填写内网ip和端口
nps-config
nps-config
  • 使用nginx进行反向代理即可

打开游览器,输入域名test.example.com,即可访问。

写在最后

今天的演示到此结束,本次演示均在本地,只是用于学习使用。