在日常的开发过程中,我们会经常向客户或者其他人演示本地网站服务,在不想买服务器的情况下,可以采用这种内网穿透映射工具,很方便的展示我们所开发的网站。下面就记录一下我使用
natapp
和nps
两个工具的使用方法,做一个总结。
# 内网穿透
简单来说就是将内网外网通过natapp隧道打通,让内网的数据让外网可以获取。
# 应用场景
- 微信本地开发调试
- 手机APP本地开发调试
- 快速项目DEMO演示
- TCP转发
- 穿透防火墙
# natapp使用
natapp (opens new window)是一个基于ngrok (opens new window)的国内高速内网映射工具,反向代理软件,通过在公网和本地运行的 Web 服务器之间建立一个安全的通道。natapp 可捕获和分析所有通道上的流量,便于后期分析和重放。
# 注册购买
登录natapp官网,注册一个账号
选择一个隧道类型,一般是免费的,如果你想自定义二级域名,可以选择VIP_1型号的隧道
- 填写隧道名称,选择协议,填写端口,就购买成功了
# 配置地址端口
- 打开左边导航我的隧道,进入列表配置,进行详细设置
- 修改本地网站服务的地址和端口,点击修改即可
- 复制authtoken值到剪切板
# 安装配置
# windows使用配置
在下载页面 (opens new window)选择你本地系统的软件包,点击下载解压缩。
在natapp
文件夹下面新建一个配置文件config.ini
,写入一下内容:
#将本文件放置于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 非代理上网用户请务必留空
2
3
4
5
6
7
8
9
把刚才复制的authtoken填写到配置文件对于的地方。
启动natapp.exe
就可以看到命令行窗口出现成功的提示。
打开线上地址,就可以看到内网的服务已经映射到外网,可以正常访问了。
# Linux使用配置
- 下载软件包
# 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
2
3
4
5
6
7
8
9
- 启动运行
cd natapp
./natapp -authtoken=xxxxx
2
- 后台运行方法
nohup ./natapp -authtoken=xxx -log=stdout -loglevel=ERROR &
- 检查是否运行
ps -ef|grep natapp
如果有进程,就说明后台运行成功。
# nps使用
刚才说到的是第三方的natapp软件,有免费版,但是功能极少,功能多又都收费,我在网上又发现一些开源的内网映射工具。比如非常受欢迎的nps
,很强大。
# 简介
nps (opens new window)一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。
# 下载安装
注意:演示服务端使用centos7系统,客户端使用win10系统。
# 服务端配置
下载完服务器压缩包后,解压,然后进入解压后的文件夹。
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
2
3
4
配置文件:
[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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
安装启动
./nps install
nps start
2
# 客户端配置
- 开启服务端,假设公网服务器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
- 点击客户端导航,添加一个客户端,填写名称,密钥,点击新增按钮保存
- 点击配置
- 填写内网ip和端口
- 使用nginx进行反向代理即可
打开游览器,输入域名test.example.com
,即可访问。
# 写在最后
今天的演示到此结束,本次演示均在本地,只是用于学习使用。