访问控制与配额
NPS 的访问控制分为管理面保护、客户端资源配额和代理访问策略。先限制谁能操作管理面,再限制每个客户端可以创建和消耗的资源,最后保护公开代理入口。
Web 管理面保护
生产环境不要将 Web 面板裸露在公网。推荐保持:
web_ip=127.0.0.1
web_open_ssl=false
然后使用 HTTPS 反向代理、VPN 或受控管理网段访问。确需远程直连时,绑定受控网卡并启用 web_open_ssl=true、证书和私钥路径。
首次启动会随机生成 web_password、auth_key 和 auth_crypt_key。这些值不可提交到仓库或写入公开截图。可额外开启图形验证码:
open_captcha=true
同一来源连续登录失败会被短时限制;这只是补充措施,不能替代网络隔离。
客户端和用户状态
管理员可为客户端和用户设置启用状态、到期时间、最大连接数、最大隧道数、带宽和累计流量限制。
| 控制项 | 作用 | 前提 |
|---|---|---|
| 最大连接数 | 限制客户端名下同时转发的数据连接。 | allow_connection_num_limit=true |
| 最大客户端数 | 限制普通用户可拥有的客户端数量;管理员分配和用户自建共用。0 表示不限制。 | 用户字段 MaxClientNum |
| 最大隧道数 | 限制普通隧道和 Host 域名规则的总数。 | allow_tunnel_num_limit=true |
| 带宽限制 | 限制客户端总传输速率,单位 KiB/s。 | allow_rate_limit=true |
| 流量限制 | 限制入口和出口累计流量,单位 MiB。 | allow_flow_limit=true |
| 到期时间 | 到期后暂停客户端或用户及其资源。 | 无额外开关 |
普通用户的 MaxClientNum 会统计其名下所有客户端,MaxTunnelNum 会统计这些客户端下的普通隧道和 Host 规则。管理员分配客户端与普通用户自建客户端都占用同一 MaxClientNum;客户端级限制只统计该单个客户端。详细归属关系和到期边界见用户体系。
IP 白名单与黑名单
NPS 支持三层来源控制:
- 全局黑名单:在「全局设置」配置,命中后所有入口拒绝该来源。
- 客户端黑名单:只影响该客户端名下的隧道和 Host 规则。
- 客户端白名单:仅允许登记来源访问,可直接填写 IP,或设置授权密码让访问者通过授权页登记当前公网 IP。
严格 IP 策略依赖 NPS 实际看到的来源 IP。若 NPS 位于 CDN、反向代理或四层负载均衡之后,先确认源地址传递方式;不要把可由任意客户端伪造的 HTTP Header 当作网络访问控制依据。
代理认证
HTTP 正向代理、SOCKS5 与域名代理共享所属客户端的 Basic 认证用户名和密码。公开 SOCKS5 或 HTTP 正向代理时必须设置强密码,并同时配合防火墙和 IP 白名单,避免成为开放代理。
TCP 后端如需感知真实访问来源,可使用 PROXY Protocol;后端必须显式支持该协议。
端口与本地转发限制
使用 allow_ports 限制客户端可创建的服务端监听端口:
allow_ports=9001-9009,10001,11000-12000
使用 allow_local_proxy=false 禁止规则转发到 NPS 服务器本机。开启本地转发后,规则创建者可能访问 NPS 所在网络可达的服务,应仅向可信管理员授予该权限。域名代理的网络边界见域名代理与路由。
公共验证密钥
public_vkey 可让没有预建客户端的连接使用公共密钥。除非明确需要临时接入,建议保持为空或删除该配置;使用独立客户端 VerifyKey 才能追踪归属、配额和到期状态。
审计与故障排查
- 配额或状态变更后,检查客户端和用户列表中的状态、到期时间、连接数和流量。
- 访问被拒绝时,检查全局黑名单、客户端黑名单、白名单、到期和配额,不要只检查隧道端口。
- 发生异常流量时,立即暂停受影响客户端,保留日志和
conf/备份,再分析来源。 - API 自动化应使用独立、可轮换的
auth_key,并将调用端限制在管理网络。
