luler 一、简介 NPS 是一款轻量级、高性能、功能强大的内网穿透工具 协议支持全面,兼容几乎所有常用协议,例如tcp、udp、http(s)、socks5、p2p、http代理等等 自带Web管理界面,可以展示流量、系统信息、即时带宽、客户端版本等信息,客户端和服务端连接上后,后续可在线管理配置端口映射关系 扩展能力强大,支持缓存、压缩、加密、流量限制、带宽限制、端口复用等 修复优化版本开源地址参考:https://github.com/yisier/nps 该工具的基本架构可参考下图: 二、安装(Docker方式) 1. 服务端安装 服务端主机需要安装好Docker、docker-compose软件环境 拉取代码,主要目的就是拉取conf基础配置 git clone https://github.com/yisier/nps 进入nps代码目录,新建docker-compose.yml配置文件,配置内容如下: services: nps: image: yisier1/nps container_name: nps network_mode: host restart: always volumes: - ./conf:/conf (可选)主要修改的配置conf/nps.conf,默认会需要占用80、443、8024、8080等端口 默认端口和web管理端配置 漏洞位置安全加固(必须) 配置完成,即可一键启动服务端 docker-compose up -d 查看启动情况,正常启动参考下图 2. 登录服务端管理后台,创建客户端配置 服务端启动后,可访问地址:http://ip:8081/,账号密码就是conf/nps.conf配置中的web_username、web_password参数 新增一个客户端,会生成唯一验证秘钥,客户端通过该秘钥就能连接上服务端了 3. 客户端启动 客户端主机也需要安装好Docker、docker-compose软件环境 新建docker-compose.yml配置文件,配置内容如下: services: npc: image: yisier1/npc container_name: npc restart: always network_mode: host #新接入的客户端只需配置修改下面不同的vkey配置即可,默认开启了tls流量加密 command: -server=100.100.xxx.xxx:8025 -vkey=a1efa114df -tls_enable=true 配置完成,执行客户端一键启动命令 docker-compose up -d 客户端成功启动参考下面截图 客户端成功连接服务端,后台显示在线状态 三、使用示例 可以在线新建域名解析(不建议直接用,最好加一层nginx反代)、TCP隧道、UDP隧道、各种代理(需要使用客户端主机去访问目标服务的时候可以设置)等 这里以TCP隧道为例,目的:新建一个TCP隧道,穿透内网中的mysql服务 后台新增TCP隧道配置 外网连接mysql测试 这里以HTTP代理为例,目的:新增一个HTTP代理服务,使用这个代理就能让客户端帮忙转发请求 新增一个HTTP代理,指定要使用的客户端即可 测试使用这个HTTP代理,实际访问目标服务就是客户端ip,在一些爬虫类等对ip有严格限制的服务中可以应用起来 curl -x http://服务端ip:28955 ipinfo.io 四、总结 NPS 是一个功能非常完善的内网穿透工具,可以满足大多数内网穿透场景和需求 提供了在线管理后台,使得接入、配置、监控、管理非常方便 客户端接入方便,提供各种操作系统的客户端接入一键接入,推荐docker接入方式 长期运行较为稳定,流量加密、长连接、心跳检测、自动重连等特性,保障了安全和性能