搭建NPS内网穿透(包含NPC用户端部署)
介绍
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器
- 协议支持全面,兼容几乎所有常用协议,例如tcp、udp、http(s)、socks5、p2p、http代理...
- 全平台兼容(linux、windows、macos、群辉等),支持一键安装为系统服务
- 控制全面,同时支持服务端和客户端控制
- https集成,支持将后端代理和web服务转成https,同时支持多证书
- 操作简单,只需简单的配置即可在web ui上完成其余操作
- 展示信息全面,流量、系统信息、即时带宽、客户端版本等
- 扩展功能强大,该有的都有了(缓存、压缩、加密、流量限制、带宽限制、端口复用等等)
- 域名解析具备自定义header、404页面配置、host修改、站点保护、URL路由、泛解析等功能
- 服务端支持多用户和用户注册功能
项目地址:https://github.com/ehang-io/nps
安装
NPS
去项目下载区,挑选server端(根据你的服务器来选):https://github.com/ehang-io/nps/releases
我拿比较普遍的amd64架构来演示
mkdir nps
cd nps
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
tar -zxf linux_amd64_server.tar.gz
vim conf/nps.conf
appname = nps
#Boot mode(dev|pro)
runmode = dev
#HTTP(S) proxy port, no startup if empty
http_proxy_ip=0.0.0.0
http_proxy_port=180 #最好和我一样改成180,这样不会占用80端口影响你的http服务
https_proxy_port=1443 #最好和我一样改成1443,这样不会占用443端口影响你的https服务
https_just_proxy=true
#default https certificate setting
https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key
##bridge 这一块是设置server和客户端通信的,不需要修改
bridge_type=tcp
bridge_port=8024
bridge_ip=0.0.0.0
#公共密码,客户端可以使用该密码连接到服务器
#连接后,服务器将能够打开相关端口,并根据自己的配置文件解析相关域名。
#可以不改,没什么影响
public_vkey=123
#Traffic data persistence interval(minute)
#Ignorance means no persistence
#flow_store_interval=1
# log level LevelEmergency->0 LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7
log_level=7
#log_path=nps.log
#是否限制IP访问,true或false或忽略(可以不用管,为了安全也可以开)
#ip_limit=true
#p2p
#p2p_ip=127.0.0.1
#p2p_port=6000
#web
web_host=a.o.com (有域名可以写,不改等后面cf反代也可以)
web_username=你的用户名
web_password=你的密码
web_port = web访问的端口
web_ip=0.0.0.0
web_base_url=
web_open_ssl=false
web_cert_file=conf/server.pem
web_key_file=conf/server.key
# if web under proxy use sub path. like http://host/nps need this.
#web_base_url=/nps
#Web API未认证的IP地址(auth_crypt_key的长度必须为16)
如果需要,删除注释
# auth_key =测试
auth_crypt_key =加密密钥,随便写一串密文,不要默认!这个必须改!不然不安全!
#allow_ports=9001-9009,10001,11000-12000
#Web management multi-user login
allow_user_login=false
allow_user_register=false
allow_user_change_username=false
#extension
allow_flow_limit=false
allow_rate_limit=false
allow_tunnel_num_limit=false
allow_local_proxy=false
allow_connection_num_limit=false
allow_multi_ip=false
system_info_display=false
#cache
http_cache=false
http_cache_length=100
#get origin ip
http_add_origin_header=false
#pprof debug options
#pprof_ip=0.0.0.0
#pprof_port=9999
#client disconnect timeout
disconnect_timeout=60
~
修改完配置后,输入./nps install
安装NPS
安装完成后输入sudo ./nps start
启动NPS,至此服务端就安装完成了,可以访问ip:你设置的端口进行访问和管理了。
NPC
部署过程和服务端其实差不多,
首先下载客户端安装包并解压,进入到解压目录
点击web管理中客户端前的+号,复制启动命令
执行启动命令,linux直接执行即可
cd npc(到你安装客户端的目录)
./npc install 后面跟着你web管理端复制的命令,从-server开始
./npc start 后面跟着你web管理端复制的命令,从-server开始
windows将./npc换成npc.exe用powershell执行
打赏: 支付宝
本人所有文章均为技术分享,均用于防御为目的的记录,所有操作均在实验环境下进行,请勿用于其他用途,否则后果自负。 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
官方版本很久没有维护了,存在越权漏洞。漏洞原理是利用伪造两个参数auth_key、timestamp来完成越权操作的,在这里我顺便也补充一下修复方式,修复方式是注释掉auth_crypt_key,并修改auth_key的值为随机值,auth_key记得去掉注释