内网穿透工具--NPS
一、简介
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管理面板的话,可以给博主提供下。
七、防御方案
- 加强内网攻击检测
- 部署apt设备和蜜罐设备
- 捕捉内网攻击行为
参考文章
https://mp.weixin.qq.com/s/NTBd8AI92yG4Au7W5W9Ktw
https://blog.csdn.net/superDE009/article/details/99700179
内网穿透工具--NPS的更多相关文章
- 一款带Web面板的轻量级、高性能内网穿透工具:nps使用教程
说明:内网穿透工具之前已经介绍了不少了,比如Frp.lanproxy.Holer等,现在再介绍个带Web面板的穿透工具nps,之前叫easyProxy,只是改名了而已,该工具是一款使用go语言编写的轻 ...
- 钉钉内网穿透工具在windows的使用。
钉钉内网穿透工具在windows环境下使用 1.WIN+R,然后cmd,调出dos控制台 2.进入内网穿透程序ding.exe所在目录 3.执行 ./ding.exe -config=ding.cfg ...
- 分享一个内网穿透工具frp
首先简单介绍一下内网穿透: 内网穿透:通过公网,访问局域网里的IP地址与端口,这需要将局域网里的电脑端口映射到公网的端口上:这就需要用到反向代理,即在公网服务器上必须运行一个服务程序,然后在局域网中需 ...
- 内网穿透工具--frp
对于没有公网 IP 的内网用户来说,远程管理或在外网访问内网机器上的服务是一个问题. 今天给大家介绍一款好用内网穿透工具 FRP,FRP 全名:Fast Reverse Proxy.FRP 是一个使用 ...
- 【代理】内网穿透工具 frp&frps
frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发. ### frp 的作 ...
- rein 多平台支持的超便携端口转发与内网穿透工具
介绍 本程序主要用于进行反向代理IP地址和端口,功能类似于 nginx 的 stream 模式和rinetd 的功能:在(1.0.5)版本开始,rein支持内网穿透,这一功能类似于frp 和ngrok ...
- windows(Linux)创建”内网穿透“工具(通过自定义域名访问部署于内网的 web 服务,可以用于调试微信支付,支付宝支付,微信公众号等开发项目)
此方法需要自有服务器和域名,如果没有这些的开发者, 可以参考钉钉提供的内网穿透方式:https://www.cnblogs.com/pxblog/p/13862376.html 一.准备工作 1.域名 ...
- cpolar——安全的内网穿透工具
什么是cpolar? cpolar是一种安全的内网穿透云服务,它将内网下的本地服务器通过安全隧道暴露至公网,使得公网用户可以正常访问内网服务. 它能用在哪些场景? 微信公众号开发,实时断点调试微信消息 ...
- 使用NATAPP内网穿透工具
准备资料 netapp客户端 百度云下载: 官网下载:https://natapp.cn/#download 按照自己的需求进行下载 可以访问到本地的web服务 下载后解压,获得natapp_wind ...
随机推荐
- 加密模块hashlib+日志模块logging
目录 1.hashlib 加密模块 1.hashlib模块基本使用 1.2 详细操作 ①md5加密模式 ②sha256复杂加密模式 ③加盐操作(普通加盐) ④加盐操作(动态加盐) 2.logging ...
- 【第二十三期】春招实习阶段性总结(阿里云已OC)
本人算是一个半路出家找工作的菜鸡了,现在手中阿里云云原生offer.百度度小满offer.腾讯PCG二面环节.美团点评等offer环节.希望我的经历分享能对各位或之后准备春招的同学有帮助. 个人背景 ...
- CentOS8 固定IP无法访问外网问题解决(ping: www.hao123.com: Name or service not known)
CentOS8虚拟机用了一段时间后,需要安装telnet-server服务,却无法正常安装.之前安装ftp服务是没有问题的,安装问题如下: 错误提示,无法下载相关元数据:网上也是0.0B/s.那么可能 ...
- 通俗理解.NET 6 Minimal APIs
.NET 6,微软称为"最快的.NET",带有了许多令人兴奋的新功能.语言和性能改进.这是自 .NET Core 3.1 以来的第一个 LTS 版本,将支持三年. 本次大版本发布, ...
- scrapy的介绍、组件、数据流
scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量代码,就能够快速的抓取到数据内容. scrapy使用了twisted异步网络框架来处理网络通讯,来加快我们的下载速 ...
- RabbitMQ安装以及简单操作应用(针对Windows和C#)
1.RabbitMQ安装 1.1下载并安装Erlang https://www.erlang.org/downloads 一直点next就安装好了.我直接使用了默认的安装目录.否则的话,应该需要配置一 ...
- 不知道这10个术语,你还敢说会JavaScript?
每个行业,都有业内"行话",不了解这些行话的人,很难融入到行业中,也永远装不了逼. 从Curry到Closes,有很多JavaScript行话(该领域中使用的特殊词汇)知道这些行话 ...
- spring 核心容器api
spring api : https://docs.spring.io/spring-framework/docs/current/javadoc-api/ BeanFactory 才是 Spring ...
- Qt:QJsonObject
0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...
- omnet++:官方文档翻译总结(三)
翻译总结自:Turning it Into a Real Network - OMNeT++ Technical Articles 接官方文档翻译总结(二),本节主要是真实网络的搭建 Part 4 - ...