系统架构
NPS 由服务端 nps、内网客户端 npc 和可选的 NPC GUI 组成。服务端负责公网监听、认证、隧道调度和 Web 管理;客户端负责连接服务端并访问内网目标。
组件关系
公网访问者
|
+--> NPS Web 管理面板 :8081
+--> NPS 代理入口 :80/:443/隧道端口
|
Bridge :8024/:8025
|
NPC 内网客户端
|
内网目标服务
Bridge 连接类型
客户端建立 Bridge 连接后,先发送版本和 VerifyKey 完成认证,再按连接类型进入对应的数据通道:
| 类型 | 用途 |
|---|---|
main | 控制连接、心跳、UDP 协商、客户端局域网地址上报 |
chan | 普通 TCP/UDP/HTTP/SOCKS5 数据通道,使用多路复用 |
conf | 客户端配置交换和状态查询 |
rgst | 注册或探测客户端地址 |
sert | Secret 私密代理连接 |
file | 文件访问通道 |
p2pm | P2P 中继和 NAT 协商 |
认证失败、握手超时或协议读取异常时,服务端会主动关闭连接。客户端主连接每 5 秒发送心跳;连接中断后会按重连策略重新建立 Bridge。
数据持久化
服务端使用 JSON 文件保存运行配置和管理数据,默认位于 conf/:
| 文件 | 内容 |
|---|---|
nps.conf | 服务端端口、Web、TLS、权限和限制开关 |
clients.json | 客户端、VerifyKey、认证、流量和连接限制 |
tasks.json | TCP/UDP/代理/文件等隧道任务 |
hosts.json | HTTP(S) 域名、路径和证书规则 |
users.json | 普通用户、客户端归属和用户级配额 |
修改 Web 面板中的客户端、隧道或域名后,服务端会更新对应 JSON 数据。升级前应完整备份 conf/ 目录,回滚时也必须恢复同一目录下的配置和数据文件。
请求路径选择
- TCP、UDP、HTTP 正向代理和 SOCKS5:访问服务端为任务分配的公网端口。
- HTTP(S) 域名代理:先将域名解析到服务端,再由 Host 和路径规则选择客户端目标。
- Secret:访问端使用相同密钥启动本地端口,服务端只负责匹配连接。
- P2P:服务端负责协商,实际直连是否成功取决于双方 NAT 类型和防火墙。
- 文件访问:服务端端口映射到客户端本地目录,必须限制目录范围和访问来源。
安全边界
Bridge 端口使用 VerifyKey 认证,Web 管理使用 web_username/web_password,HTTP/SOCKS5 代理认证使用客户端的 Basic 认证配置。公网部署建议:
- 只开放实际使用的端口。
- 为管理面板、代理和客户端设置强密码或密钥。
- 对 Web、Bridge 和代理端口配置防火墙、IP 白名单或反向代理限制。
- 定期备份
conf/,并保护其中的密钥和证书文件。
