NPS工具介绍
NPS工具是一款使用go语言编写的轻量级、功能强大的内网穿透工具。支持TCP、UDP流量转发,支持内网HTTP、SOCKS5代理,同时支持snappy压缩(节省带宽和流量)、站点保护、加密传输、多路复用、header修改等。同时还支持web图形化管理。该工具使用简单,相比于FRP,NPS是图形化界面,因此配置更加简单
root@ls4jtubcnt opt\]#wget
root@ls4jtubcnt conf\]# netstat -tulnp  访问:http://vps ip:8081/,并输入以上/etc/nps/conf/nps.confg配置文件下设置的用户名和密码  如下 , 便是登录成功后 , 整个 nps web 控制面板的实际效果图 , 因为当前暂时还没有任何客户端在线 , 所以才全部显示为  客户端,新建一个客户端的链接方式( 注意此处的这个 用户名和密码 , 只有在进行 socks5 和 http 代理时才会用到)  以下是客户端创建成功后的样子 , 特别注意下这个 id, 后面的所有隧道代理和socks5代理都会基于这个 id 来创建  客户端下执行命令: . /npc -server=106.13.218.47:8024 -vkey=yxznk7q02rirabtz -type=tcp  发现客户端已在线,表示已与服务器端进行了连接  ### tcp隧道 适用范围: ssh、远程桌面,数据库等tcp连接场景 假设场景: 想通过访问公网服务器1.1.1.1的2022端口,连接内网机器192.168.126.128:的22端口,实现ssh连接 使用步骤 * 在刚才创建的客户端隧道管理中添加一条tcp隧道,填写监听的端口(2022)、内网目标ip和目标端口(192.168.126.128:22),保存  * 访问公网服务器ip(1.1.1.1),填写的监听端口(2022),相当于访问内网ip(192.168.126.128):目标端口(22)  ### 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服务器 ### socks5代理 适用范围: 在外网环境下如同使用vpn一样访问内网设备或者资源 假设场景: 想将公网服务器1.1.1.1的3538端口作为socks5代理,达到访问内网任意设备或者资源的效果 使用步骤 * 在刚才创建的客户端隧道管理中添加一条socks5代理,填写监听的端口(3538),保存  * 在外网环境的本机配置socks5代理(例如使用proxifier进行全局代理),ip为公网服务器ip(1.1.1.1),端口为填写的监听端口(3438),即可畅享内网了 添加代理服务器 菜单栏点击Proxy Servers图标---add,这里添加socks代理,填写socks服务端的ip和端口\[ 一定要记得此处的代理是有账号密码的,也就是我们开始创建客户端配置时设置的那个账号密码
单击Proxification Rules图标---add,这里设置如果访问192.168.126.* 目标内网段,这个ip段则走socks5代理
勾选我们添加的代理规则,默认的代理规勾选为Direct!!!记得

这样我们就能直接访问目标内网的机器,像在本地一样开burp做渗透测试
或者使用SocksCap64进行全局代理socks5
注意 经过socks5代理,当收到socks5数据包时socket已经是accept状态。表现是扫描端口全open,建立连接后短时间关闭。若想同内网表现一致,建议远程连接一台设备。
http正向代理
适用范围: 在外网环境下使用http正向代理访问内网站点
假设场景: 想将公网服务器1.1.1.1的9999端口作为http代理,访问内网网站
使用步骤
- 在刚才创建的客户端隧道管理中添加一条http代理,填写监听的端口(9999),保存。

- 在外网环境的本机配置http代理,ip为公网服务器ip(1.1.1.1),端口为填写的监听端口(9999),即可访问了
注意:对于私密代理与p2p,除了统一配置的客户端和服务端,还需要一个客户端作为访问端提供一个端口来访问
私密代理
适用范围: 无需占用多余的端口、安全性要求较高可以防止其他人连接的tcp服务,例如ssh。
假设场景: 无需新增多的端口实现访问内网服务器10.1.50.2的22端口
使用步骤
-
在刚才创建的客户端中添加一条私密代理,并设置唯一密钥secrettest和内网目标10.1.50.2:22
-
在需要连接ssh的机器上以执行命令
./npc -server=1.1.1.1:8024 -vkey=vkey -type=tcp -password=secrettest -local_type=secret
如需指定本地端口可加参数-local_port=xx,默认为2000
注意: password为web管理上添加的唯一密钥,具体命令可查看web管理上的命令提示
假设10.1.50.2用户名为root,现在执行ssh -p 2000 [email protected]即可访问ssh
p2p服务
适用范围: 大流量传输场景,流量不经过公网服务器,但是由于p2p穿透和nat类型关系较大,不保证100%成功,支持大部分nat类型。nat类型检测
假设场景:
想通过访问使用端机器(访问端,也就是本机)的2000端口---->访问到内网机器 10.2.50.2的22端口
使用步骤
-
在nps.conf中设置p2p_ip(nps服务器ip)和p2p_port(nps服务器udp端口) 注:若 p2p_port 设置为6000,请在防火墙开放6000~6002(额外添加2个端口)udp端口
-
在刚才刚才创建的客户端中添加一条p2p代理,并设置唯一密钥p2pssh
-
在使用端机器(本机)执行命令
./npc -server=1.1.1.1:8024 -vkey=123 -password=p2pssh -target=10.2.50.2:22Copy to clipboardErrorCopied
如需指定本地端口可加参数-local_port=xx,默认为2000
注意: password为web管理上添加的唯一密钥,具体命令可查看web管理上的命令提示
假设内网机器为10.2.50.2的ssh用户名为root,现在在本机上执行ssh -p 2000 [email protected]即可访问机器2的ssh,如果是网站在浏览器访问127.0.0.1:2000端口即可。