术语表
查阅 NPS 管理和配置中的角色、隧道、连接证书、认证、流量和访问控制术语
本页解释 NPS 管理界面和配置文档中的专有名词,以及容易混淆的字段。新增、编辑、保存等通用操作,以及版本、备注等含义明确的字段不再重复说明。
角色与对象
- NPS 服务端:通常部署在有公网入口的设备上,负责接收 NPC 连接、监听隧道入口并转发流量。
- NPC 客户端:运行在内网设备上的进程,主动连接 NPS,并从所在网络访问目标服务。
- 客户端:Web 管理中保存的一条逻辑记录,包含验证密钥、配额和所属隧道。NPC 使用对应密钥接入这条记录。
- 访问端:最终使用隧道的人或设备。私密代理和 P2P 模式下,访问端也要运行 NPC。
- 隧道:一条转发规则,描述入口、所属客户端、目标地址和转发方式。“隧道”本身不表示使用了 TLS 或端到端加密。
- 客户端 ID:NPS 为逻辑客户端分配的内部数字编号,用于关联隧道;连接 NPC 时使用的是客户端验证密钥。
- 客户端状态:NPC 是否已连接 NPS。在线表示控制连接可用,不代表每个目标服务都能访问。
- 运行状态:某条隧道是否启用并正在监听或等待连接。
- 允许客户端通过配置文件连接:允许该客户端通过
npc.conf提交并创建隧道配置。关闭后,Web 中创建的隧道仍可使用。 - 管理员 / 用户:管理员管理全局配置和所有客户端;普通用户只管理分配给自己的客户端及隧道。
隧道类型
- TCP 隧道:将 NPS 的一个 TCP 监听端口转发到 NPC 可访问的目标,适用于 SSH、远程桌面、数据库等。
- UDP 隧道:将 NPS 收到的 UDP 数据转发到 NPC 可访问的目标。服务端防火墙需要放行对应 UDP 端口。
- HTTP(S) 隧道:按域名和 URL 路径把请求反向代理到内网站点,多个站点可以共享 NPS 的 HTTP/HTTPS 端口。域名仍需自行解析到 NPS。
- HTTP 正向代理:浏览器或应用显式配置代理后,通过 NPC 所在网络访问应用指定的 HTTP/HTTPS 资源。它与发布固定内网站点的 HTTP(S) 隧道方向不同。
- SOCKS5 代理:支持 SOCKS5 的应用通过 NPC 所在网络连接应用指定的目标。只有配置了该代理的应用会经过 NPS。
- 私密代理:访问端运行 NPC,并用隧道访问密钥连接内网 TCP 服务。业务流量由 NPS 中转,但不必为每条隧道开放单独的公网端口。
- P2P 连接:NPS 协调 NAT 穿透,尝试让访问端与提供服务的 NPC 直接传输业务流量。能否直连取决于双方网络和 NAT 类型。
- 文件服务:由 NPC 将本地路径中的文件通过 HTTP 提供出来,不提供文件同步或备份能力。
- 透明代理:P2P 访问端的一种本地接入方式,不是 Web 中单独创建的隧道类型。
具体配置参阅配置示例 。
地址、端口与路由
- IP 地址:设备在网络上的地址,例如
203.0.113.10。连接 NPS 时,可以填写它的 IP 地址,也可以填写指向它的域名。 - 端口:一台设备上区分不同网络服务的数字编号。例如
nps.example.com:8025中,8025是端口。 - localhost / 本机地址:
localhost是表示本机的名称,127.0.0.1和::1是表示本机的 IP 地址。从哪台设备使用它们,就指向哪台设备本身。 - 客户端连接协议:NPC 与 NPS 桥接连接使用的
TCP或KCP,与隧道中业务服务的协议无关。 - 客户端连接端口:NPC 连接 NPS 的桥接端口,即
bridge_port;TLS 桥接使用独立的tls_bridge_port。 - 服务端 IP:开启多 IP 支持后,指定某条隧道绑定的本机监听地址。
0.0.0.0表示监听所有 IPv4 地址。 - 服务端对外地址:用于生成客户端命令和隧道访问地址的公网 IP 或域名,不含端口和路径。它不会自动配置 DNS、监听地址或防火墙。
- 服务端监听端口:NPS 为 TCP、UDP、HTTP 正向代理或 SOCKS5 等隧道开放的入口端口;留空时可自动分配。
- 目标地址:最终业务服务的
IP:端口。目标在 NPC 本机时可只填端口;TCP 每行填写一个目标时按轮询方式转发。 - 由 NPS 服务端连接目标:开启后由 NPS 所在主机直连目标;关闭后由 NPC 从其所在网络连接目标。
- 访问地址:访问端实际使用的 NPS 域名或 IP、端口及路径组合。
- 出口地址:NPS 观察到的 NPC 连接来源地址,通常是 NAT 后的公网出口地址。
- 内网地址:NPC 向 NPS 上报的本机私网地址,不一定能从 NPS 或公网直接访问。
- 域名:便于记忆的网络名称,例如
nps.example.com,通常通过 DNS(将域名对应到 IP 地址的系统)查找设备地址。HTTP(S) 隧道也用域名匹配请求中的Host;只在 NPS 中填写域名,不会自动建立域名与 IP 地址的对应关系。 - URL 路径前缀:HTTP(S) 隧道的路由条件。留空按
/匹配,多条规则同时匹配时使用最长前缀。 - 移除的 URL 路径前缀:转发前从请求路径中去掉指定前缀;文件服务也可用它映射本地相对路径。
- 改写请求头:转发 HTTP 请求前,按“名称: 值”新增或覆盖请求头。
- 改写 Host 请求头:替换发给目标站点的
Host;留空时保留访问端的原始值。 - PROXY 协议版本:在 TCP 连接开头向目标传递原始来源地址的 V1/V2 协议。目标服务必须支持所选版本;它与 HTTP 代理或
X-Forwarded-For无关。 - 自动跳转 HTTPS(301):对匹配的 HTTP 请求返回永久重定向,引导访问 HTTPS。
- P2P 端口:NPS 用于 P2P 协调和 NAT 穿透的 UDP 端口范围起点。
- 本地路径:文件服务在 NPC 设备上读取文件的目录。
密钥、账号与传输选项
- 客户端验证密钥:NPC 接入某条逻辑客户端记录时使用的唯一凭据;新增客户端时可自动生成。
- 公共验证密钥:
nps.conf中的public_vkey,供 NPC 通过配置文件临时提交客户端和隧道。它是共享凭据,不应当公开。 - 隧道访问密钥:私密代理和 P2P 隧道双方约定的共享密钥,同一 NPS 内应保持唯一。
- Web API 鉴权密钥:
nps.conf中的auth_key,用于生成 Web API 请求签名,不用于 NPC 连接或访问隧道。 - 代理认证用户名 / 密码:SOCKS5、HTTP 正向代理和 HTTP(S) 域名转发的访问认证;用户名和密码都填写时启用。
- Web 登录用户名 / 密码:普通用户登录管理界面的账号。两项都留空时,可使用用户名
user和客户端验证密钥登录。 - IP 白名单授权密码:HTTP 域名转发中,名单外访问者通过授权页后将当前 IP 加入白名单所用的密码。
- 快捷连接码 / TLS 快捷连接码:将备注、服务端地址、客户端验证密钥和 TLS 开关打包成一段供 NPC 导入的文字。新版 TLS 连接码还包含服务端公钥指纹。连接码使用 Base64 编码,没有加密,其中包含验证密钥,需要妥善保管。
- HTTPS 证书 / 私钥:NPS 为对应域名终止 HTTPS 时使用的 PEM 内容,或 NPS 主机上的文件路径。它们与 NPC 到 NPS 的 TLS 桥接配置不同。
- 加密:隧道配置中的业务数据加密选项,不等同于 HTTPS 或 TLS 桥接。
- 压缩:在 NPS 与 NPC 的转发链路上压缩数据,以 CPU 开销减少可压缩数据的传输量。
连接证书与身份验证
- TLS:保护网络通信的加密协议。启用证书验证后,还可以确认连接的是受信任的服务端。TLS 1.2 和 TLS 1.3 是这个协议的不同版本。
- 桥接连接 / TLS 桥接:NPC 与 NPS 之间用来传送连接管理信息和转发数据的连接。使用 TLS 加密的桥接连接称为 TLS 桥接。
- 桥接端口:NPS 接收 NPC 连接的入口端口。普通连接使用
bridge_port,TLS 加密连接使用tls_bridge_port,通常为8025。 - 服务端身份验证 / 证书验证:NPC 检查服务端提供的证书,确认对方是自己信任的 NPS。这样可以避免只建立了加密连接,却连到了冒充的服务端。
- 服务端证书:用于证明服务端身份的电子文件,其中记录了公钥、有效期、适用的域名或 IP 地址等信息。NPC 需要检查这些信息后才能信任它。
- CA:负责签发证书的机构。信任某个 CA,表示愿意按照证书验证规则,接受它签发的证书。
- 公共 CA:向公众提供证书签发服务的机构,通常已被操作系统或浏览器信任。NPC 可以使用操作系统信任的 CA 验证服务端证书。
- 私有 CA:由自己或组织内部管理的证书签发机构。操作系统通常不会预先信任它,需要将 CA 证书交给 NPC,并用
tls_ca_file指定。 - 自签名证书:由证书持有者自己签发的证书。NPS 可以自动生成这种证书;NPC 可通过事先保存的公钥指纹确认是否应当信任它。
- 证书链:一组前后关联的证书,用于检查服务端证书是否可以追溯到受信任的 CA。NPS 的证书文件先放服务端证书,再按顺序放所需的中间证书。
- 中间证书:连接服务端证书与受信任 CA 的证书。证书提供方通常会将所需的中间证书与服务端证书合并到一个文件中,例如
fullchain.pem。 - 公钥 / 私钥:配套使用的两部分密钥。公钥可以随证书公开;私钥需要保密,服务端用它证明自己确实持有证书对应的密钥。
- 公钥指纹:根据公钥计算出的一串识别码,用于核对服务端提供的公钥。NPS 使用 SHA-256 计算,结果为 64 个十六进制字符。用同一公钥更新证书时,指纹保持不变;更换公钥后,需要更新 NPC 保存的指纹。
- PEM:用文本保存证书或密钥的格式。证书内容通常以
-----BEGIN CERTIFICATE-----开头;文件扩展名本身不能保证内容格式正确。 - SAN:证书中记录适用域名和 IP 地址的字段。NPC 检查证书名称时,以这里记录的名称或地址为准。
- CN / O / C:证书中的名称字段,分别表示通用名称、组织名称和国家。更改这些字段不会自动更改 SAN,也不能代替 SAN 中的域名或 IP 地址设置。
- RSA:一种生成和使用公钥、私钥的算法。NPS 自动生成证书时,使用长度为 2048 位的 RSA 密钥。
- 十六进制字符:用数字
0–9和字母a–f表示数值的写法。文档中“64 个十六进制字符”指一共 64 个数字或字母,而不是 64 位二进制数据。 - SHA-256:将数据计算成固定长度识别值的算法。NPS 用它计算公钥指纹;公钥指纹与整张证书的指纹计算范围不同。
- DER:用二进制保存证书或公钥等数据的编码格式。计算 NPS 公钥指纹时,使用 DER 格式的公钥信息。
- SubjectPublicKeyInfo(SPKI):证书中记录公钥及其算法的部分。NPS 对这部分的 DER 数据计算 SHA-256,得到公钥指纹。
- SNI:客户端在建立 TLS 连接时,告诉服务端自己要访问哪个域名的信息,方便服务端选择证书。NPC 使用域名时发送 SNI,使用 IP 地址时不发送。
- TLS 握手:正式传送数据前,双方交换证书并确定加密方式的过程。NPC 会在这个过程中按配置验证服务端证书。
- 前置代理:放在 NPS 前面、代为接收连接的服务器。如果由它负责与 NPC 建立 TLS 连接,NPC 收到的就是代理提供的证书,指纹也应取自该证书。
配置步骤见为 NPC 连接 NPS 配置证书 。
连接方式、工具与文件
- TCP:按顺序可靠传送数据的网络协议。NPS 的 TLS 桥接和 NPC 的 HTTP、SOCKS5 出站代理都使用 TCP 连接。
- KCP:NPS 支持的另一种网络传输协议,使用 UDP(一种逐个发送数据包的网络协议)传送数据。本项目的 TLS 桥接不能与 KCP 同时使用。
- 出站代理:NPC 借助另一台代理服务器连接 NPS。通常用于 NPC 所在网络无法直接访问外部地址的情况。
- HTTP CONNECT:让 HTTP 代理建立到指定地址和端口的转发连接的方法。连接建立后,NPC 可以通过它与 NPS 进行 TLS 握手。
- SOCKS5:通过代理转发网络连接的协议。作为 NPC 出站代理时,代理代替 NPC 连接 NPS,NPC 仍可通过它验证 NPS 的证书。
- 命令行 / 命令行参数:命令行是在终端中输入文字命令来操作程序的方式;参数是在启动命令后附加的设置,例如
./npc -tls_enable=true中的-tls_enable=true。 - GUI / 图形客户端:通过窗口、按钮和输入框操作的程序界面。NPC 图形客户端可以保存连接地址、验证密钥和证书验证设置。
- 系统服务:由操作系统管理、在后台运行的程序。NPC 可以通过交互菜单注册为系统服务。
- OpenSSL:处理证书和加密连接的命令行工具。文档用它从证书计算公钥指纹,或查看服务端实际提供的证书。
- Base64:把数据转换成一段便于复制的文字的编码方式。它不提供加密,任何拿到连接码的人都能还原其中的验证密钥等内容。
- Docker / 容器:Docker 是运行和管理容器的工具;容器是与其他程序相对隔离的应用运行环境。替换容器时,需要另行保存希望保留的文件。
- 挂载 / 持久化挂载:将容器中的目录对应到运行 Docker 的机器上的目录,或由 Docker 管理的存储空间。将 NPS 的整个
conf目录这样保存,替换容器后仍能使用原来的配置、证书和私钥。 - NPS 运行目录:NPS 存放
conf文件夹的目录,也是查找服务端证书相对路径的起点。启动日志中the config path is:后面的路径就是它,可以通过-conf_path指定。 - 当前工作目录:程序查找相对路径时使用的起点,会受启动方式影响,不一定是程序文件所在的目录。NPC 的命令行和图形客户端从这里查找 CA 证书文件;NPS 的证书文件使用上面所说的 NPS 运行目录。
- 相对路径 / 绝对路径:相对路径从指定目录开始查找,例如
certs/root-ca.pem;绝对路径完整写出文件位置,例如/etc/nps/certs/root-ca.pem。npc.conf中的 CA 相对路径从配置文件所在目录查找,命令行和图形客户端则从程序当前工作目录查找。 - 文件权限
0600/ 目录权限0700:在 Linux 等系统中,0600表示普通账号中只有文件所有者可以读写;0700表示普通账号中只有目录所有者可以进入、读取和修改。系统管理员可能拥有额外权限。Windows 使用自己的访问权限设置。
流量、带宽与连接数
- 入站流量 / 出站流量:NPS 转发层累计记录的两个方向的应用数据字节数,不等同于网卡总流量或云厂商账单。
- 流量统计:客户端或隧道累计传输了多少数据。
- 流量限制:客户端所有隧道共享的累计配额,单位 MiB,按入站与出站之和计算。
0表示不限制,配额不会按月自动重置。 - 带宽 / 网速:一段时间内的数据传输速率,页面数值会随采样窗口波动。
- 带宽限制:客户端所有隧道共享的传输速率上限,单位 KiB/s。
0表示不限制。 - 当前连接数:某个客户端当前占用的转发连接数。
- 最大连接数:单个客户端所有隧道共享的并发连接上限。调低上限不会立即中断已有连接。
- 已建立 TCP 连接数 / UDP 连接数:NPS 主机操作系统报告的协议连接统计,不只统计某一条隧道。
- 最大隧道数:一个客户端可以创建的隧道数量配额。
- 新连接频率限制:按单条 TCP 隧道、来源 IP 和时间窗口统计连接尝试,超限后临时封禁。它不统计已建立连接内的请求数,也不判断登录是否成功。
- 时间窗口内新连接数上限:一个来源 IP 在窗口内允许发起的新连接次数。填
0表示继承服务端默认值。 - 封禁时长:来源 IP 触发新连接频率限制后,自动拒绝其新连接的时间。
- 流量数据持久化:按
flow_store_interval定期保存累计流量,使重启 NPS 后仍能保留计数。
IP 访问控制
- 全局 IP 黑名单:对 NPS 入口统一生效的来源 IPv4 拒绝列表,每行一个地址,不支持 IP 范围或 CIDR。
- 客户端 IP 黑名单:对某个客户端名下隧道生效的来源 IP 拒绝列表。
- IP 白名单:客户端级的 HTTP 授权名单。结合授权密码使用时,名单外访问者先看到授权页。
- TCP 公开访问:TCP 隧道接受未被黑名单或频率限制拦截的来源连接。
- TCP 仅白名单访问:TCP 隧道只接受“允许的 IP / CIDR”中的来源;名单为空时拒绝全部连接。
- 允许的 IP / CIDR:TCP 访问白名单,支持单个 IP 和 CIDR,可按行或逗号分隔。名单内来源跳过新连接频率限制,但全局和客户端黑名单仍然生效。
- 继承服务端默认设置:单条 TCP 隧道使用全局的新连接数、时间窗口和封禁时长默认值。
- 到期时间:到达指定时间后自动停用客户端;留空表示永不过期。
“IP 白名单”用于 HTTP 授权,“TCP 仅白名单访问”用于限制 TCP 隧道来源,两者是不同的功能。
系统指标
- 负载:NPS 主机操作系统的 1、5、15 分钟平均负载。它不是 CPU 使用率百分比,通常应结合 CPU 核数判断。
- 处理器:NPS 主机的 CPU 使用率。
- 内存 / 虚拟内存:页面显示 NPS 主机整体内存使用率;底层指标名称为 virtual memory,并非 Go 进程堆内存。
- 交换空间:NPS 主机的 swap 或页面文件使用率。