带Web面板的轻量级,高性能内网穿透工具:nps搭建教程
说明:内网穿透工具之前已经介绍了不少了,比如Frp
、lanproxy
、Holer
等,现在再介绍个带Web
面板的穿透工具nps
,之前叫easyProxy
,只是改名了而已,该工具是一款使用go
语言编写的轻量级、功能强大的内网穿透服务器。支持tcp
、udp
流量转发,支持内网http
、socks5
代理,同时支持snappy
压缩(节省带宽和流量)、站点保护、加密传输、多路复用、header
修改等。同时还支持web
图形化管理。
服务器端
下载
从 release 下载和服务器匹配的最新版本到 ,如果对于Linux
服务器还是不知道怎么选择的,这里拿Vultr
、搬瓦工大多数VPS
为例。先使用命令getconf LONG_BIT
获取系统版本,32
位就选386
,64
就选amd64
,具体还是以实际情况为准。
服务端使用
这里博主使用的是Vultr Linux x64
服务器,直接使用命令:
1 | #记得复制前先将下面链接替换成当前最新版地址 |
配置文件参数如下:
1 | #web管理端口 |
启动 && 验证
1 | # 启动命令 |
然后打开地址http://ip:8080
访问管理界面,具体端口以自己修改的为准,再使用密码登录进去,默认为123
。
1 | #如果打不开Web界面,就需要开启防火墙,一般CentOS系统出现情况最多 |
对于有些服务器,比如阿里云,谷歌云等,还需要在服务器管理面板上开放Web
端口才行。
开机启动
1 | tee /lib/systemd/system/nps.service <<-'EOF' |
一键安装脚本(macos/linux)
1 | bash -c "$(wget -O - http://static.xinshangshangxin.com/shell-tools/nps/nps.sh)" |
客户端
下载客户端
从 release 下载 npc
最新版本 到
无配置启动
1 | ${nps_dir}/npc -server=${server} -vkey=${vkey} |
一键安装启动脚本(macos/linux)
1 | bash -c "$(wget -O - http://static.xinshangshangxin.com/shell-tools/nps/npc.sh)" |
使用场景
关于使用场景,Github
文档写的很清楚了,这里大概的说下。
1、tcp隧道模式
1 | 适用:想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射,或者做微信公众号开发、小程序开发等。 |
详细教程→点击查看。
2、udp隧道模式
1 | 适用:在非内网环境下使用内网dns,或者需要通过udp访问内网机器等。 |
详细教程→点击查看。
3、http代理模式
1 | 适用:在外网使用HTTP代理访问内网站点。 |
详细教程→点击查看。
4、socks5代理模式
1 | 适用:搭建一个内网穿透55,在外网如同使用内网v皮n一样访问内网资源或者设备。 |
详细教程→点击查看。
相关功能
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
。
1 | ./(nps|npc) start|stop|restart|status 若有其他参数可加其他参数 |
11、KCP协议支持KCP
是一个快速可靠协议,能以比TCP
浪费10%-20%
的带宽的代价,换取平均延迟降低30%-40%
,在弱网环境下对性能能有一定的提升。可在app.conf
中修改bridgeType
为kcp
。
- 当服务端为
kcp
时,客户端连接时也需要加上参数-type=kcp
。
该工具很强大,更多的使用可以自行研究,如果有人知道Frp
管理面板的话,可以给博主提供下。