一、简介

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

源码地址:https://github.com/cnlh/nps

发布地址:https://github.com/cnlh/nps/releases

通常内网穿透工具都有服务端和客户端,安装要求如下:

  • 服务端:需要安装在一个有公网IP的服务器上,系统为Linux/Windows/Mac均可。
  • 客户端:一般安装在一个内网的VPS服务器或Windows/Mac/Linux电脑上使用。

二、服务端配置

1、修改配置文件

conf/nps.conf 如无特殊需求,无需修改。

#web管理端口
web_port
#web界面管理密码
web_password
#服务端客户端通信端口
bridge_port
#ssl certFile绝对路径
https_default_cert_file
#ssl keyFile绝对路径
https_default_key_file
#域名代理https代理监听端口
https_proxy_port
#域名代理http代理监听端口
http_proxy_port
#客户端与服务端连接方式kcp或tcp
bridge_type

2、nps server启动

nps.exe start
#重启/停止服务端
nps.exe stop|restart

服务端运行nps test,无报错后nps start启动服务端。

然后打开地址http://ip:8080访问管理界面,具体端口以自己修改的为准,再使用密码登录进去,默认用户名admin,默认密码为123。

3、nps server添加client

随便填就行,client config文件用得到,socks5、http代理时候需要用到basic认证帐号密码。

client状态:

得到客户端启动命令:

./npc.exe -server=192.168.91.1:8024 -vkey=adminkey -type=tcp

192.168.91.1为我服务器端的IP

三、客户端配置

1、Linux系统

#启动客户端,比如服务端公网IP为192.168.91.1,服务端配置文件中tcpport为8024

./npc -server=192.168.91.1:8024 -vkey=客户端的密钥

2、Windows系统

#启动客户端,比如服务端公网IP为192.168.91.1,服务端配置文件中tcpport为8024

npc.exe -server=192.168.91.1:8024 -vkey=客户端的密钥

四、使用场景

关于使用场景,Github文档写的很清楚了,这里大概的说下。

1、tcp隧道模式

适用:想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射,或者做微信公众号开发、小程序开发等。

详细教程→点击查看

2、udp隧道模式

适用:在非内网环境下使用内网dns,或者需要通过udp访问内网机器等。

详细教程→点击查看

3、http代理模式

适用:在外网使用HTTP代理访问内网站点。

详细教程→点击查看

4、socks5代理模式

适用:搭建一个内网穿透55,在外网如同使用内网v皮n一样访问内网资源或者设备。

详细教程→点击查看

五、使用测试

1、TCP隧道

两种配置方式:server web配置和client config文件配置。其一即可。

(1)、server web配置

点击tunnel创建隧道

增加tcp隧道:

隧道建立后,连接server ip 192.168.91.1的7000端口,即连接到内网192.168.91.149的3389端口。

(2)、client config文件配置

config文件在nps client启动时加载即可。

[common] 
server_addr=x.x.x.x:8024 
conn_type=tcp 
vkey=adminkey 
auto_reconnection=true 
crypt=true 
compress=true 
[tcp] 
mode=tcp 
target_addr=192.168.91.149:3389 
server_port=7000

client 的config文件无法重载,故,只能启动时候加载上所有配置,不建议用config文件方式进行隧道配置,不灵活,推荐使用server web配置方式。

2、UDP隧道

UDP隧道配置和TCP过程一样,mode改成UDP即可。

3、socks5内网代理

两种配置方式:server web配置和client config文件配置。其一即可。

(1)、server web配置

增加socks5:

代理设置完毕后,连接server ip 192.168.91.1的9000端口即可代理到内网中。

在nps server添加client时,设置了basic权限认证admink/admink,部分浏览器插件如SwitchyOmega不支持s5的basic认证,建议使用proxychains或者Proxifier进行代理。

proxychains配置:

socks5 x.x.x.x 9000 admink admink

(2)、client config文件配置

config文件在nps client启动时加载即可。

[common] 
server_addr=x.x.x.x:8024 
conn_type=tcp 
vkey=adminkey 
auto_reconnection=true 
basic_username=admink 
basic_password=admink 
crypt=true 
compress=true 
[socks5] 
mode=socks5 
server_port=9000

client 的config文件无法重载,故,只能启动时候加载上所有配置,不建议用config文件方式进行socks5代理配置,不灵活,推荐使用server web配置方式。

4、http内网代理

http内网代理和socks5过程一样,mode改成httpProxy即可。

5、内网文件访问服务

内网文件访问配置只能在client config中进行。

config文件在nps client启动时加载即可。

[common] 
server_addr=x.x.x.x:8024 
conn_type=tcp 
vkey=adminkey 
auto_reconnection=true 
basic_username=admink 
basic_password=admink 
crypt=truecompress=true 
[file]mode=file 
server_port=8888 
local_path=C:\\ 
strip_pre=/fileservice/

local_path配置内网机要设置文件服务的目录。

server_port配置一个server ip上的端口。

strip_pre配置访问文件服务的path。

启动

npc.exe -config=npc.conf

成功启动:

浏览器中访问:http://x.x.x.x:8888/fileservice/

目前只能做文件访问,还做不到文件管理。

六、相关功能

1、数据压缩支持

由于是内网穿透,内网客户端与服务端之间的隧道存在大量的数据交换,为节省流量,加快传输速度,由此本程序支持SNNAPY形式的压缩。

  • 所有模式均支持数据压缩,可以与加密同时使用
  • 开启此功能会增加cpu和内存消耗
  • 在server端加上参数-compress=snappy(或在web管理中设置)

2、加密传输

如果公司内网防火墙对外网访问进行了流量识别与屏蔽,例如禁止了ssh协议等,通过设置配置文件,将服务端与客户端之间的通信内容加密传输,将会有效防止流量被拦截。

  • 开启此功能会增加cpu和内存消耗
  • 在server端加上参数-crypt=true(或在web管理中设置)

3、站点保护

域名代理模式所有客户端共用一个http服务端口,在知道域名后任何人都可访问,一些开发或者测试环境需要保密,所以可以设置用户名和密码,nps将通过Http Basic Auth来保护,访问时需要输入正确的用户名和密码。

  • web管理中可配置

4、host修改

由于内网站点需要的host可能与公网域名不一致,域名代理支持host修改功能,即修改request的header中的host字段。

  • 在web管理中设置

5、自定义header

支持对header进行新增或者修改,以配合服务的需要。

6、404页面配置

支持域名解析模式的自定义404页面,修改/web/static/page/error.html中内容即可,暂不支持静态文件等内容。

7、流量限制

支持客户端级流量限制,当该客户端入口流量与出口流量达到设定的总量后会拒绝服务,域名代理会返回404页面,其他会拒绝连接。

8、带宽限制

支持客户端级带宽限制,带宽计算方式为入口和出口总和,权重均衡。

9、负载均衡

本代理支持域名解析模式的负载均衡,在web域名添加或者编辑中内网目标分行填写多个目标即可实现轮训级别的负载均衡。

10、守护进程

本代理支持守护进程,使用示例如下,服务端客户端所有模式通用,支持linux、darwin、windows。

./(nps|npc) start|stop|restart|status 若有其他参数可加其他参数 (nps|npc).exe start|stop|restart|status 若有其他参数可加其他参数

11、KCP协议支持

KCP是一个快速可靠协议,能以比TCP浪费10%-20%的带宽的代价,换取平均延迟降低30%-40%,在弱网环境下对性能能有一定的提升。可在app.conf中修改bridgeType为kcp。

  • 当服务端为kcp时,客户端连接时也需要加上参数-type=kcp。

该工具很强大,更多的使用可以自行研究,如果有人知道Frp管理面板的话,可以给博主提供下。

七、防御方案

  1. 加强内网攻击检测
  2. 部署apt设备和蜜罐设备
  3. 捕捉内网攻击行为

参考文章

https://mp.weixin.qq.com/s/NTBd8AI92yG4Au7W5W9Ktw

https://blog.csdn.net/superDE009/article/details/99700179

内网穿透工具--NPS的更多相关文章

  1. 一款带Web面板的轻量级、高性能内网穿透工具:nps使用教程

    说明:内网穿透工具之前已经介绍了不少了,比如Frp.lanproxy.Holer等,现在再介绍个带Web面板的穿透工具nps,之前叫easyProxy,只是改名了而已,该工具是一款使用go语言编写的轻 ...

  2. 钉钉内网穿透工具在windows的使用。

    钉钉内网穿透工具在windows环境下使用 1.WIN+R,然后cmd,调出dos控制台 2.进入内网穿透程序ding.exe所在目录 3.执行 ./ding.exe -config=ding.cfg ...

  3. 分享一个内网穿透工具frp

    首先简单介绍一下内网穿透: 内网穿透:通过公网,访问局域网里的IP地址与端口,这需要将局域网里的电脑端口映射到公网的端口上:这就需要用到反向代理,即在公网服务器上必须运行一个服务程序,然后在局域网中需 ...

  4. 内网穿透工具--frp

    对于没有公网 IP 的内网用户来说,远程管理或在外网访问内网机器上的服务是一个问题. 今天给大家介绍一款好用内网穿透工具 FRP,FRP 全名:Fast Reverse Proxy.FRP 是一个使用 ...

  5. 【代理】内网穿透工具 frp&frps

    frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发. ### frp 的作 ...

  6. rein 多平台支持的超便携端口转发与内网穿透工具

    介绍 本程序主要用于进行反向代理IP地址和端口,功能类似于 nginx 的 stream 模式和rinetd 的功能:在(1.0.5)版本开始,rein支持内网穿透,这一功能类似于frp 和ngrok ...

  7. windows(Linux)创建”内网穿透“工具(通过自定义域名访问部署于内网的 web 服务,可以用于调试微信支付,支付宝支付,微信公众号等开发项目)

    此方法需要自有服务器和域名,如果没有这些的开发者, 可以参考钉钉提供的内网穿透方式:https://www.cnblogs.com/pxblog/p/13862376.html 一.准备工作 1.域名 ...

  8. cpolar——安全的内网穿透工具

    什么是cpolar? cpolar是一种安全的内网穿透云服务,它将内网下的本地服务器通过安全隧道暴露至公网,使得公网用户可以正常访问内网服务. 它能用在哪些场景? 微信公众号开发,实时断点调试微信消息 ...

  9. 使用NATAPP内网穿透工具

    准备资料 netapp客户端 百度云下载: 官网下载:https://natapp.cn/#download 按照自己的需求进行下载 可以访问到本地的web服务 下载后解压,获得natapp_wind ...

随机推荐

  1. SpringBoot树获取方法总结

    最近项目中有需要获取全国行政区划省-市-区县-乡镇.街道办的树状结构数据,现将自己获取树的方法总结如下,有不到之处,敬请批评指正! 一.全国行政区划数据的整理以及获取 获取地址:https://pan ...

  2. 使用grpcui测试gRPC服务

    grpcui类似Swagger UI,可以用来测试gRPC服务,使用起来特别简单. 其原理是通过自动发现gRPC服务协议(当然前提是gRPC服务暴露了Protobuf协议),然后启动一个带界面的Web ...

  3. Solution -「多校联训」自动机

    \(\mathcal{Description}\)   Link.   有一个状态集为 \(V\) 的自动机,状态接收 (, ) 和 _(空格) 三种字符,分别编号为 \(0,1,2\),状态 \(u ...

  4. Solution -「CF 802C」Heidi and Library (hard)

    \(\mathcal{Descriptoin}\)   Link.   你有一个容量为 \(k\) 的空书架,现在共有 \(n\) 个请求,每个请求给定一本书 \(a_i\).如果你的书架里没有这本书 ...

  5. tep集成mitmproxy录制流量自动生成用例

    使用 操作过程非常简单,流程如下: ①配置过滤域名 必须配置,不然会有很多无效流量造成数据冗余. ②启动代理 「示例」使用了反向代理,tep自带FastApi启动Mock服务: 「实际」使用正向代理, ...

  6. io流复习+代码演示

    前置知识: 序列化和反序列化 1.序列化就是在保存数据时, 保存数据的值和数据类型 2.反序列化就是在恢复数据时, 恢复数据的值和数据类型 3.需要让某个对象支持序列化机制,则必须让其类是可序列化的, ...

  7. java宝典笔记(一)

    第四章java基础知识 4.1基本概念 一.java优点 1.面向对象(封装.继承.多态) 2.可移植性.平台无关,一次编译,到处运行.Windows,Linux,macos等.java为解释性语言, ...

  8. 【性能测试实战:jmeter+k8s+微服务+skywalking+efk】系列之:性能测试场景设计

    说明: 本文是基于虚拟机环境配置设计的 性能测试需求 总tps≥100 每个业务的rt<500ms 持续稳定跑50万业务量 单场景 目的:找到单场景的性能问题,为容量场景提供参考,如果低于容量场 ...

  9. 用图帮你了解https的原理

    Http存在的问题 上过网的朋友都知道,网络是非常不安全的.尤其是公共场所很多免费的wifi,或许只是攻击者的一个诱饵.还有大家平时喜欢用的万能钥匙,等等.那我们平时上网可能会存在哪些风险呢? 泄密, ...

  10. 微信小程序获取经纬度所在城市

    小程序的wx.getLocation()获得是经纬度并不包含地名,所以要通过经纬度用相应的地图转换出地名(本文使用的是百度地图) // 获取坐标 onLoad: function (options)  ...