简介:
NPS是一款轻量级,高性能,功能强大的内网穿透工具。目前支持,域名解析,TCP、UDP、HTTP、SOCKS5代理、私密代理、支持snappy压缩、站点保护、加密传输、多路复用、header修改,支持WEB图形化管理界面等。
事前准备:
- 一台公网服务器
- 对应的操作系统使用的程序:https://github.com/cnlh/nps/releases
- 一台物理机+两台虚拟机模拟内网主机(NAT模式)。
拓扑图:
服务端:
#本次试验的centos服务器
wget https://github.com/ehang-io/nps/releases/download/v0.26.5/freebsd_amd64_server.tar.gz
tar -zxvf linux_amd64_server.tar.gz
./nps install
./nps start #启动
./nps stop #停止
./nps restart #重启
安装完成→启动访问:公网IP:8080 -登录,默认用户名密码:admin 123
也可以在配置文件里面修改:/nps/conf/nps.conf
#web
web_host=a.o.com
web_username=admin
web_password=Test123
web_port = 8080
web_ip=0.0.0.0
找到对应的配置进行修改
./nps reload #重新载入配置文件
登录后主页-客户端-新建一般默认就可以。
客户端:
安装同理上面,需要选择客户端版本。
shell终端输入:./npc -server=公网IP:8024(默认隧道端口) -vkey=5lwxh3opkvhgffin(统一验证秘钥) -type=tcp
如果需要更换命令内容需要先卸载./npc uninstall,再重新注册
启动成功后就有日志打印出来:
到服务端查看,是否在线;
一、搭建HTTP代理通道;
此时我们需要访问内网的另一台主机的WEB服务,我们就需要设置HTTP隧道。
- 点击客户端-主机-隧道,我们设置服务端口为:8765。
- 此时我们需要本地浏览器设置代理去访问内网的主机。
使用火狐代理插件,没有插件也可以直接在浏览器设置里面修改
使用开启代理,输入内网web地址:
二、想将公网服务器的8787端口,作为socks5代理,达到访问内网任意资源的效果
- 大概步骤:客户端隧道中添加socks5代理,端口号填写为8787,保存
- 使用全局代理工具(sockes5)例如Proxifier-在配置文件中添加代理IP和端口
连接内网服务器的3389端口
三、其他设置
域名解析
假设场景:
- 有一个域名xxxx.com,有一台公网机器ip为x.x.x.x
- 两个内网开发站点127.0.0.1:81,127.0.0.1:82
- 想通过(http|https://)a.proxy.com访问127.0.0.1:81,通过(http|https://)b.proxy.com访问127.0.0.1:82
使用步骤
- 将*.proxy.com解析到公网服务器1.1.1.1
- 点击刚才创建的客户端的域名管理,添加两条规则规则:1、域名:a.proxy.com,内网目标:127.0.0.1:81,2、域名:b.proxy.com,内网目标:127.0.0.1:82
tcp隧道
适用范围: ssh、远程桌面等tcp连接场景
假设场景: 想通过访问公网服务器1.1.1.1的8001端口,连接内网机器10.1.50.101的22端口,实现ssh连接
使用步骤
- 在刚才创建的客户端隧道管理中添加一条tcp隧道,填写监听的端口(8001)、内网目标ip和目标端口(10.1.50.101:22),保存。
- 访问公网服务器ip(1.1.1.1),填写的监听端口(8001),相当于访问内网ip(10.1.50.101):目标端口(22),例如:ssh -p 8001 root@1.1.1.1
udp隧道
适用范围: 内网dns解析等udp连接场景
假设场景: 内网有一台dns(10.1.50.102:53),在非内网环境下想使用该dns,公网服务器为1.1.1.1
使用步骤
- 在刚才创建的客户端的隧道管理中添加一条udp隧道,填写监听的端口(53)、内网目标ip和目标端口(10.1.50.102:53),保存。
- 修改需要使用的dns地址为1.1.1.1,则相当于使用10.1.50.102作为dns服务器
http正向代理
适用范围: 在外网环境下使用http正向代理访问内网站点
假设场景: 想将公网服务器1.1.1.1的8004端口作为http代理,访问内网网站
使用步骤
- 在刚才创建的客户端隧道管理中添加一条http代理,填写监听的端口(8004),保存。
- 在外网环境的本机配置http代理,ip为公网服务器ip(1.1.1.1),端口为填写的监听端口(8004),即可访问了
注意:对于私密代理与p2p,除了统一配置的客户端和服务端,还需要一个客户端作为访问端提供一个端口来访问
其他的有空再试试吧。其他设置是官方文档里的。
具体参考文档:https://ehang-io.github.io/nps/