<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>扩展功能配置指南 on NPS Plus</title><link>/extend/feature/index.html</link><description>Recent content in 扩展功能配置指南 on NPS Plus</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Fri, 02 Oct 2026 14:15:40 +0800</lastBuildDate><atom:link href="/extend/feature/index.xml" rel="self" type="application/rss+xml"/><item><title>向 HTTP 后端传递访问者真实 IP</title><link>/extend/feature/real-ip.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/real-ip.html</guid><description>&lt;p&gt;HTTP(S) 隧道默认由 NPC 连接内网服务，因此后端看到的 TCP 来源通常是 NPC 所在主机，而不是公网访问者。开启来源头后，NPS 会把访问者地址写入 HTTP 请求头，供后端应用或反向代理恢复真实 IP。&lt;/p&gt;</description></item><item><title>Web 配置何时生效</title><link>/extend/feature/hot-reload.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/hot-reload.html</guid><description>&lt;p&gt;NPS 将 Web 管理数据与进程启动配置分开处理。客户端、HTTP(S) 隧道和普通隧道的大多数 Web 修改会直接更新运行时数据，不需要重启整个 NPS。&lt;/p&gt;&#10;&lt;h2 id="生效范围"&gt;生效范围&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;操作&lt;/th&gt;&#10; &lt;th scope="col"&gt;生效方式&lt;/th&gt;&#10; &lt;th scope="col"&gt;对现有连接的影响&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;修改 HTTP(S) 隧道的目标、Host、请求头或 URL 路径&lt;/td&gt;&#10; &lt;td&gt;保存后供后续请求读取&lt;/td&gt;&#10; &lt;td&gt;已进入转发的请求不变&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;修改普通隧道&lt;/td&gt;&#10; &lt;td&gt;NPS 停止并重新启动该隧道监听&lt;/td&gt;&#10; &lt;td&gt;新连接使用新配置；应按业务类型验证长连接&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;启用/停用隧道&lt;/td&gt;&#10; &lt;td&gt;打开或关闭对应监听&lt;/td&gt;&#10; &lt;td&gt;停用后不再接受新连接&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;修改客户端限速、认证和访问名单&lt;/td&gt;&#10; &lt;td&gt;保存后更新客户端运行数据&lt;/td&gt;&#10; &lt;td&gt;新请求/后续传输按相应功能执行&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;修改 NPC 配置文件创建的隧道&lt;/td&gt;&#10; &lt;td&gt;修改 &lt;code&gt;npc.conf&lt;/code&gt; 后重新连接&lt;/td&gt;&#10; &lt;td&gt;Web 不是这类配置的持久化来源&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;修改 &lt;code&gt;nps.conf&lt;/code&gt; / &lt;code&gt;npc.conf&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;重启对应进程&lt;/td&gt;&#10; &lt;td&gt;取决于被重启的进程和隧道&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="推荐操作"&gt;推荐操作&#10;&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;修改前记录原值和隧道 ID。&lt;/li&gt;&#10;&lt;li&gt;保存后从新的连接验证，不要只观察已有 SSH、WebSocket 或数据库长连接。&lt;/li&gt;&#10;&lt;li&gt;涉及监听端口、协议或客户端连接参数时安排维护窗口。&lt;/li&gt;&#10;&lt;li&gt;修改 &lt;code&gt;nps.conf&lt;/code&gt; 后重启 NPS；修改 &lt;code&gt;npc.conf&lt;/code&gt; 后重启或重连 NPC。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;“热更新”不表示所有配置都无损切换。尤其是普通隧道编辑会重新创建监听，启动失败时应检查端口占用、&lt;a href="/extend/feature/port-allowlist.html"&gt;端口白名单&lt;/a&gt;&#10;和 NPS 日志。&lt;/p&gt;</description></item><item><title>查看客户端的出口与内网地址</title><link>/extend/feature/client-address.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/client-address.html</guid><description>&lt;p&gt;客户端列表提供“出口地址”和“内网地址”，两者用于判断 NPC 从哪里接入以及它在内网使用了哪块网卡。&lt;/p&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;数据来源&lt;/th&gt;&#10; &lt;th scope="col"&gt;常见值&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;出口地址&lt;/td&gt;&#10; &lt;td&gt;NPS 接受桥接连接时实际看到的远端 IP&lt;/td&gt;&#10; &lt;td&gt;公网 IP、NAT 网关地址或上游代理地址&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;内网地址&lt;/td&gt;&#10; &lt;td&gt;NPS 上线后向 NPC 请求，NPC 优先上报当前桥接连接使用的本地 IPv4&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;192.168.1.20&lt;/code&gt;、&lt;code&gt;10.0.0.8&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="使用方法"&gt;使用方法&#10;&lt;/h2&gt;&#10;&lt;p&gt;进入 Web 管理的“客户端列表”，展开或查看对应客户端。地址可用于：&lt;/p&gt;</description></item><item><title>查看和保存隧道流量统计</title><link>/extend/feature/traffic-statistics.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/traffic-statistics.html</guid><description>&lt;p&gt;Web 管理会显示客户端以及各隧道的“入站流量”和“出站流量”，适合比较隧道用量、判断异常增长，并为&lt;a href="/extend/feature/traffic-limit.html"&gt;流量限制&lt;/a&gt;&#10;设置基线。&lt;/p&gt;&#10;&lt;h2 id="统计口径"&gt;统计口径&#10;&lt;/h2&gt;&#10;&lt;p&gt;统计发生在 NPS 的转发读写路径中，记录应用数据经过隧道时的字节数。它不是操作系统网卡计数，也不是云厂商账单，因此以下内容会造成差异：&lt;/p&gt;</description></item><item><title>查看客户端当前传输速度</title><link>/extend/feature/client-bandwidth.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/client-bandwidth.html</guid><description>&lt;p&gt;客户端列表中的“网速”显示该客户端最近一个采样周期内经过 NPS 限速器的聚合吞吐量，用于快速发现突发流量或验证带宽限制是否生效。&lt;/p&gt;&#10;&lt;h2 id="如何读取"&gt;如何读取&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;统计对象是单个客户端下的汇总流量，不是单条隧道。&lt;/li&gt;&#10;&lt;li&gt;采样约每秒更新一次，短请求可能在刷新页面时已经回落到零。&lt;/li&gt;&#10;&lt;li&gt;页面按字节速率自动换算显示；它不是 bit/s，和网络运营商常用的 Mbps 口径不同。&lt;/li&gt;&#10;&lt;li&gt;上传、下载、协议开销以及压缩/加密会使其与操作系统或云监控数值不同。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;如需稳定验证，可通过该客户端的一条 TCP 或 HTTP(S) 隧道持续传输较大文件，同时观察客户端列表。限制值的精确单位和换算见&lt;a href="/extend/feature/bandwidth-limit.html"&gt;带宽限制&lt;/a&gt;&#10;。容量规划应以主机网卡、云监控或专业监控系统为准，本页面数据用于运行观察。&lt;/p&gt;</description></item><item><title>查看 NPC 版本与兼容性</title><link>/extend/feature/version-check.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/version-check.html</guid><description>&lt;p&gt;NPC 在握手时会向 NPS 上报发行版本，NPS 也会返回核心协议版本摘要。Web 管理的客户端列表会显示在线 NPC 的版本，便于发现混用版本。&lt;/p&gt;&#10;&lt;h2 id="当前兼容行为"&gt;当前兼容行为&#10;&lt;/h2&gt;&#10;&lt;p&gt;当前产品的核心版本基线为 &lt;code&gt;0.26.0&lt;/code&gt;。握手会完成版本交换，但核心版本不一致时仍会兼容放行；&lt;strong&gt;版本不同不会单独导致连接被拒绝&lt;/strong&gt;。连接失败应先检查客户端验证密钥、桥接地址、协议、TLS 设置和网络连通性。&lt;/p&gt;</description></item><item><title>提高 Linux 并发连接容量</title><link>/extend/feature/linux-limits.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/linux-limits.html</guid><description>&lt;p&gt;高并发隧道同时受进程文件描述符、监听队列、临时端口、连接跟踪和内存限制。只有监控或日志表明达到系统上限时才应调整；单纯增大参数不能弥补 CPU、内存或带宽不足。&lt;/p&gt;</description></item><item><title>防止 Web 管理登录被暴力破解</title><link>/extend/feature/web-protection.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/web-protection.html</guid><description>&lt;p&gt;Web 管理登录内置按来源 IP 的失败次数保护。某个 IP 在 60 秒内累计失败达到 10 次后，后续登录会被拒绝；距离最近一次失败满 60 秒后计数重置，登录成功也会清除该 IP 的记录。&lt;/p&gt;</description></item><item><title>加密 NPC 与 NPS 之间的连接</title><link>/extend/feature/encrypted-transport.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/encrypted-transport.html</guid><description>&lt;p&gt;TLS 桥接用于加密 NPC 与 NPS 之间的控制和多路复用链路，避免桥接流量以明文形式经过网络。它不等同于 HTTP(S) 隧道的站点证书配置。&lt;/p&gt;&#10;&lt;h2 id="服务端配置"&gt;服务端配置&#10;&lt;/h2&gt;&#10;&lt;p&gt;在 &lt;code&gt;nps.conf&lt;/code&gt; 中设置：&lt;/p&gt;</description></item><item><title>为 NPC 连接 NPS 配置证书</title><link>/extend/feature/bridge-tls-certificates.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/bridge-tls-certificates.html</guid><description>&lt;p&gt;本页介绍如何为 NPC（客户端）与 NPS（服务端）之间的连接配置证书（用于证明服务端身份的电子文件）。这些设置用于桥接连接（NPC 与 NPS 之间传送连接管理信息和转发数据的连接）。&lt;/p&gt;</description></item><item><title>为 HTTP(S) 站点设置访问密码</title><link>/extend/feature/site-protection.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/site-protection.html</guid><description>&lt;p&gt;HTTP(S) 隧道共用服务端入口。对于开发预览、临时管理页等不应公开访问的站点，可以使用客户端的“代理认证用户名”和“代理认证密码”启用 HTTP Basic Auth。&lt;/p&gt;&#10;&lt;h2 id="配置方式"&gt;配置方式&#10;&lt;/h2&gt;&#10;&lt;p&gt;在 Web 管理中编辑站点所属的客户端，同时填写：&lt;/p&gt;</description></item><item><title>改写 HTTP 后端收到的 Host</title><link>/extend/feature/host-rewrite.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/host-rewrite.html</guid><description>&lt;p&gt;公网域名与内网站点绑定的虚拟主机名不一致时，可使用“改写 Host 请求头”让后端命中正确站点。例如访问者请求 &lt;code&gt;preview.example.com&lt;/code&gt;，但内网 Nginx 只接受 &lt;code&gt;app.internal.example&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>新增或覆盖 HTTP 后端请求头</title><link>/extend/feature/request-header.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/request-header.html</guid><description>&lt;p&gt;HTTP(S) 隧道的“改写请求头”可以在转发前新增请求头，或覆盖后端将收到的同名请求头。常见用途包括给内网应用传递固定环境标识、关闭上游缓存或补充反向代理约定字段。&lt;/p&gt;</description></item><item><title>自定义 HTTP 隧道的 404 页面</title><link>/extend/feature/custom-404.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/custom-404.html</guid><description>&lt;p&gt;HTTP 隧道已经匹配域名规则，但客户端不可用、流量超限或目标连接失败时，会以 &lt;code&gt;404 Not Found&lt;/code&gt; 返回内置错误页。自定义模板位于项目目录：&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-79515c7c-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="text" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-79515c7c-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;web/static/page/error.html&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="自定义方法"&gt;自定义方法&#10;&lt;/h2&gt;&#10;&lt;p&gt;该模板会编译进 NPS 二进制。修改已安装程序运行目录中的同名文件不会生效，必须在项目中修改模板后重新构建并替换 NPS：&lt;/p&gt;</description></item><item><title>限制客户端可累计使用的流量</title><link>/extend/feature/traffic-limit.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/traffic-limit.html</guid><description>&lt;p&gt;流量限制按客户端累计“入站流量 + 出站流量”，适合给租户或设备设置总用量配额。它不是按月自动重置的计费系统。&lt;/p&gt;&#10;&lt;h2 id="开启并配置"&gt;开启并配置&#10;&lt;/h2&gt;&#10;&lt;p&gt;先在服务端 &lt;code&gt;nps.conf&lt;/code&gt; 开放 Web 配置项并重启 NPS：&lt;/p&gt;</description></item><item><title>限制客户端的传输速度</title><link>/extend/feature/bandwidth-limit.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/bandwidth-limit.html</guid><description>&lt;p&gt;带宽限制为客户端级共享限速器，客户端下所有隧道的读写流量共同消耗额度。它适合防止单个客户端占满 NPS 出口，不用于保证最低带宽或按隧道分配权重。&lt;/p&gt;&#10;&lt;h2 id="开启并配置"&gt;开启并配置&#10;&lt;/h2&gt;&#10;&lt;p&gt;在服务端 &lt;code&gt;nps.conf&lt;/code&gt; 中开放 Web 配置项并重启：&lt;/p&gt;</description></item><item><title>将新连接轮询到多个后端</title><link>/extend/feature/load-balancing.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/load-balancing.html</guid><description>&lt;p&gt;HTTP(S) 隧道和 TCP 隧道可配置多个“目标地址（IP:端口）”。NPS 按轮询顺序为新连接选择目标，适合把无状态服务分散到多台内网主机。&lt;/p&gt;&#10;&lt;h2 id="web-配置"&gt;Web 配置&#10;&lt;/h2&gt;&#10;&lt;p&gt;新增或编辑隧道，在目标地址中每行填写一个目标：&lt;/p&gt;</description></item><item><title>自动分配服务端监听端口</title><link>/extend/feature/auto-port.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/auto-port.html</guid><description>&lt;p&gt;在 Web 管理中新增需要监听端口的隧道时，“服务端监听端口（留空自动分配）”可以不填。NPS 会选择当时可绑定的端口，并在保存成功后显示实际端口。&lt;/p&gt;&#10;&lt;h2 id="分配规则"&gt;分配规则&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;配置了 &lt;code&gt;allow_ports&lt;/code&gt; 时，只在允许列表中随机选择并逐个检查。&lt;/li&gt;&#10;&lt;li&gt;未配置 &lt;code&gt;allow_ports&lt;/code&gt; 时，最多尝试 1000 次随机端口，自动范围从 &lt;code&gt;1024&lt;/code&gt; 开始。&lt;/li&gt;&#10;&lt;li&gt;TCP、HTTP 正向代理和 SOCKS5 等模式检查 TCP 端口；UDP 隧道检查 UDP 端口。&lt;/li&gt;&#10;&lt;li&gt;私密代理和 P2P 不依赖独立公网监听端口，不需要用此功能规划端口。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;如果找不到可用端口，新增会失败并提示端口可能已占用或不在允许范围。端口检测与真正启动监听之间存在很短的竞争窗口，极端并发创建时仍可能启动失败。&lt;/p&gt;</description></item><item><title>复制普通隧道配置</title><link>/extend/feature/tunnel-copy.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/tunnel-copy.html</guid><description>&lt;p&gt;隧道列表页的“复制”适合快速创建目标、客户端和访问策略相同，但公网监听端口不同的普通隧道。&lt;/p&gt;&#10;&lt;h2 id="复制内容"&gt;复制内容&#10;&lt;/h2&gt;&#10;&lt;p&gt;复制后会创建新的隧道 ID 并立即启用，包含原隧道的：&lt;/p&gt;</description></item><item><title>向 TCP 后端传递访问者真实 IP</title><link>/extend/feature/tcp-real-ip.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/tcp-real-ip.html</guid><description>&lt;p&gt;普通 TCP 转发会由 NPC 连接目标服务，因此后端默认只能看到 NPC 的地址。需要保留公网访问者地址时，应根据业务协议选择 PROXY 协议或 HTTP 请求头。&lt;/p&gt;&#10;&lt;h2 id="方案选择"&gt;方案选择&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;场景&lt;/th&gt;&#10; &lt;th scope="col"&gt;推荐方式&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;数据库、自定义 TCP 协议、TCP 模式承载的 HTTP&lt;/td&gt;&#10; &lt;td&gt;PROXY v1 或 v2&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;NPS 的 HTTP(S) 域名隧道&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;X-Forwarded-For&lt;/code&gt; / &lt;code&gt;X-Real-IP&lt;/code&gt;，参见&lt;a href="/extend/feature/real-ip.html"&gt;获取用户真实 IP&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;SSH、RDP 等后端不支持 PROXY 协议&lt;/td&gt;&#10; &lt;td&gt;不要开启；改由应用审计、VPN 或支持该协议的前置代理处理&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="在-nps-中启用"&gt;在 NPS 中启用&#10;&lt;/h2&gt;&#10;&lt;p&gt;新增或编辑 TCP 隧道，在“PROXY 协议版本”中选择：&lt;/p&gt;</description></item><item><title>限制隧道可使用的服务端端口</title><link>/extend/feature/port-allowlist.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/port-allowlist.html</guid><description>&lt;p&gt;为了防止用户任意占用服务端端口，可在 &lt;code&gt;nps.conf&lt;/code&gt; 中配置 &lt;code&gt;allow_ports&lt;/code&gt;，把普通隧道的“服务端监听端口”限制在指定集合内：&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-4bd415fe-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="ini" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-4bd415fe-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;allow_ports&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;9001-9009,10001,11000-12000&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;修改后重启 NPS。忽略或留空表示不限制；配置项使用英文逗号分隔单个端口或闭区间，不要加入空格。&lt;/p&gt;</description></item><item><title>批量映射 TCP 或 UDP 端口</title><link>/extend/feature/port-range.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/port-range.html</guid><description>&lt;p&gt;NPC 配置文件可用一段配置批量创建多个 TCP 或 UDP 隧道，适合映射连续服务端口。Web 管理不接受端口范围，需要逐条创建。&lt;/p&gt;&#10;&lt;h2 id="配置示例"&gt;配置示例&#10;&lt;/h2&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-6ac4e0ac-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="ini" data-td-line-count="4"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-6ac4e0ac-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[tcp]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;tcp&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;server_port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;9001-9009,10001,11000-12000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;target_port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;8001-8009,10002,13000-14000&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;展开后的端口按位置一一对应：&lt;code&gt;9001 -&amp;gt; 8001&lt;/code&gt;、&lt;code&gt;9002 -&amp;gt; 8002&lt;/code&gt;，依此类推。UDP 只需将 &lt;code&gt;mode&lt;/code&gt; 改为 &lt;code&gt;udp&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>批量映射到其他内网主机</title><link>/extend/feature/remote-port-range.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/remote-port-range.html</guid><description>&lt;p&gt;端口范围默认映射到 NPC 本机。需要转发到 NPC 可访问的另一台内网主机时，在范围映射中增加 &lt;code&gt;target_ip&lt;/code&gt;：&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-f754f811-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="ini" data-td-line-count="5"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-f754f811-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[tcp]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;tcp&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;server_port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;9001-9009,10001,11000-12000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;target_port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;8001-8009,10002,13000-14000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;target_ip&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;10.1.50.2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;展开后例如 &lt;code&gt;9001 -&amp;gt; 10.1.50.2:8001&lt;/code&gt;。忽略 &lt;code&gt;target_ip&lt;/code&gt; 时目标为 NPC 本机 &lt;code&gt;127.0.0.1&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>使用 UDP/KCP 连接 NPS</title><link>/extend/feature/kcp.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/kcp.html</guid><description>&lt;p&gt;KCP 使用 UDP 承载 NPC 与 NPS 之间的桥接连接。在低丢包、低抖动且 UDP 畅通的专线或内网中，它可能降低部分交互延迟；公网、移动网络或受限网络不一定更快。&lt;/p&gt;&#10;&lt;h2 id="服务端配置"&gt;服务端配置&#10;&lt;/h2&gt;&#10;&lt;p&gt;在 &lt;code&gt;nps.conf&lt;/code&gt; 中设置并重启 NPS：&lt;/p&gt;</description></item><item><title>用泛域名转发多个子域名</title><link>/extend/feature/wildcard-domain.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/wildcard-domain.html</guid><description>&lt;p&gt;泛域名规则用一条 HTTP(S) 隧道接收同一后缀下的多个子域名。例如 &lt;code&gt;*.proxy.com&lt;/code&gt; 可让 &lt;code&gt;a.proxy.com&lt;/code&gt;、&lt;code&gt;b.proxy.com&lt;/code&gt; 等转发到同一目标。&lt;/p&gt;&#10;&lt;h2 id="配置步骤"&gt;配置步骤&#10;&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;在 DNS 服务商添加 &lt;code&gt;*.proxy.com&lt;/code&gt; 的 A/AAAA 记录，指向 NPS 服务端。&lt;/li&gt;&#10;&lt;li&gt;在 Web 管理新增 HTTP(S) 隧道，把“域名”填写为 &lt;code&gt;*.proxy.com&lt;/code&gt;。&lt;/li&gt;&#10;&lt;li&gt;填写目标地址；如使用 HTTPS，配置覆盖这些子域名的通配符证书和私钥。&lt;/li&gt;&#10;&lt;li&gt;另行创建 &lt;code&gt;proxy.com&lt;/code&gt; 规则，因为 &lt;code&gt;*.proxy.com&lt;/code&gt; 不包含根域名本身。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;NPC 配置文件示例：&lt;/p&gt;</description></item><item><title>按 URL 路径选择不同后端</title><link>/extend/feature/url-prefix.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/url-prefix.html</guid><description>&lt;p&gt;同一个域名可以创建多条 HTTP(S) 隧道规则，通过“URL 路径前缀”把请求分给不同内网服务。例如 API、静态资源和默认站点可以共用一个公网域名。&lt;/p&gt;&#10;&lt;h2 id="配置示例"&gt;配置示例&#10;&lt;/h2&gt;&#10;&lt;p&gt;为 &lt;code&gt;app.example.com&lt;/code&gt; 创建三条规则：&lt;/p&gt;</description></item><item><title>限制客户端的并发连接数</title><link>/extend/feature/connection-limit.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/connection-limit.html</guid><description>&lt;p&gt;“最大连接数”限制单个客户端同时占用的转发连接，避免一个客户端通过大量长连接耗尽 NPS 文件描述符或内存。限制对 SOCKS5、HTTP 正向代理、HTTP(S)、TCP、UDP 和私密代理生效。&lt;/p&gt;</description></item><item><title>限制客户端可创建的隧道数</title><link>/extend/feature/tunnel-limit.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/tunnel-limit.html</guid><description>&lt;p&gt;“最大隧道数”限制单个客户端可以创建的隧道规则总数，适合多用户环境防止某个账号占用过多监听端口或域名规则。&lt;/p&gt;&#10;&lt;h2 id="开启并配置"&gt;开启并配置&#10;&lt;/h2&gt;&#10;&lt;p&gt;在 &lt;code&gt;nps.conf&lt;/code&gt; 中设置并重启 NPS：&lt;/p&gt;</description></item><item><title>让桥接、站点与管理端共用一个端口</title><link>/extend/feature/port-reuse.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/port-reuse.html</guid><description>&lt;p&gt;端口复用可以让明文 TCP 桥接、HTTP(S) 隧道入口和 Web 管理共用一个 TCP 端口，适合公网只允许开放少量端口的环境。NPS 会根据连接开头的协议特征分流。&lt;/p&gt;</description></item><item><title>用一条桥接连接承载多个隧道</title><link>/extend/feature/multiplexing.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/multiplexing.html</guid><description>&lt;p&gt;NPS 的业务转发默认使用多路复用，不需要在 Web 或配置文件中另行开启。NPC 与 NPS 建立数据桥接后，多个 TCP、HTTP(S)、SOCKS5 等业务连接会作为独立逻辑流共享这条连接。&lt;/p&gt;</description></item><item><title>用环境变量启动 NPC</title><link>/extend/feature/environment-variables.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/environment-variables.html</guid><description>&lt;p&gt;无配置文件模式下，NPC 可从环境变量读取服务端地址和客户端验证密钥，适合容器、systemd &lt;code&gt;EnvironmentFile&lt;/code&gt; 或密钥注入平台。&lt;/p&gt;&#10;&lt;h2 id="支持的变量"&gt;支持的变量&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;环境变量&lt;/th&gt;&#10; &lt;th scope="col"&gt;含义&lt;/th&gt;&#10; &lt;th scope="col"&gt;示例&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;NPC_SERVER_ADDR&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;NPS 桥接地址，包含端口&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;nps.example.com:8024&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;NPC_SERVER_VKEY&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;客户端验证密钥&lt;/td&gt;&#10; &lt;td&gt;Web 管理中该客户端的密钥&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;Shell 示例：&lt;/p&gt;</description></item><item><title>采集 NPS 与 NPC 性能分析数据</title><link>/extend/feature/pprof.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/pprof.html</guid><description>&lt;p&gt;pprof 提供 CPU、堆内存、协程、锁等运行时数据，适合诊断 NPS/NPC CPU 异常、内存增长或协程阻塞。它默认关闭，接口没有登录认证，不能直接暴露到公网。&lt;/p&gt;&#10;&lt;h2 id="nps-服务端"&gt;NPS 服务端&#10;&lt;/h2&gt;&#10;&lt;p&gt;在 &lt;code&gt;nps.conf&lt;/code&gt; 中只监听回环地址，然后重启 NPS：&lt;/p&gt;</description></item><item><title>调整 NPC 断线检测时间</title><link>/extend/feature/disconnect-timeout.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/disconnect-timeout.html</guid><description>&lt;p&gt;NPS 与 NPC 的多路复用数据桥接每 5 秒发送一次探测包。&lt;code&gt;disconnect_timeout&lt;/code&gt; 表示允许连续未收到探测响应的&lt;strong&gt;次数&lt;/strong&gt;，不是秒数；默认 &lt;code&gt;60&lt;/code&gt;，约 5 分钟后判定桥接失效。&lt;/p&gt;</description></item><item><title>检测 NAT 类型并评估 P2P 直连条件</title><link>/extend/feature/nat-detection.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/nat-detection.html</guid><description>&lt;p&gt;NPC 可以通过 STUN 检测当前网络的 NAT 类型。这项结果适合在配置 P2P 连接前做初步判断，不代表两端一定能建立直连。&lt;/p&gt;&#10;&lt;h2 id="开始检测"&gt;开始检测&#10;&lt;/h2&gt;&#10;&lt;p&gt;在将要运行 NPC 的设备和网络中执行：&lt;/p&gt;</description></item><item><title>检查 npc.conf 中的隧道是否在运行</title><link>/extend/feature/config-status.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/config-status.html</guid><description>&lt;p&gt;NPC 的 &lt;code&gt;status&lt;/code&gt; 命令用本地 &lt;code&gt;npc.conf&lt;/code&gt; 连接 NPS，然后逐项显示配置文件中的隧道是否已在 NPS 上创建或运行。它适合排查“NPC 已启动，但某条配置没有生效”的问题。&lt;/p&gt;&#10;&lt;h2 id="运行前提"&gt;运行前提&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;NPC 使用 &lt;code&gt;npc.conf&lt;/code&gt; 模式启动，而不是只传入 &lt;code&gt;-server&lt;/code&gt; 和 &lt;code&gt;-vkey&lt;/code&gt;。&lt;/li&gt;&#10;&lt;li&gt;配置文件中的 &lt;code&gt;[common]&lt;/code&gt; 包含正确的 &lt;code&gt;server_addr&lt;/code&gt;、&lt;code&gt;vkey&lt;/code&gt; 和 &lt;code&gt;conn_type&lt;/code&gt;。&lt;/li&gt;&#10;&lt;li&gt;运行中的配置模式 NPC 至少成功连接过一次，并写入状态命令所需的临时验证信息。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;在 NPC 所在主机执行：&lt;/p&gt;</description></item><item><title>让 NPC 通过 HTTP 或 SOCKS5 代理连接 NPS</title><link>/extend/feature/outbound-proxy.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/outbound-proxy.html</guid><description>&lt;p&gt;当 NPC 所在网络只允许通过企业代理访问外部地址时，可以让 NPC 先连接上游 HTTP 或 SOCKS5 代理，再由代理连接 NPS 的桥接端口。&lt;/p&gt;&#10;&lt;p&gt;这里配置的是 &lt;strong&gt;NPC 出站代理&lt;/strong&gt;，不是对外提供 HTTP 正向代理或 SOCKS5 隧道。&lt;/p&gt;</description></item><item><title>在群晖 NAS 上运行 NPC</title><link>/extend/feature/synology.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/synology.html</guid><description>&lt;p&gt;在支持 Container Manager 的群晖 NAS 上，建议使用 NPC 容器。官方镜像提供 &lt;code&gt;linux/amd64&lt;/code&gt;、&lt;code&gt;linux/arm&lt;/code&gt; 和 &lt;code&gt;linux/arm64&lt;/code&gt; 平台；实际可用性仍取决于 NAS 型号、DSM 版本以及 Container Manager 支持范围。&lt;/p&gt;</description></item><item><title>用白名单和限频保护 TCP 隧道</title><link>/extend/feature/tcp-access-control.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/tcp-access-control.html</guid><description>&lt;p&gt;NPS 可以在接收 TCP 隧道的新连接时，根据来源 IP 执行以下一种策略：&lt;/p&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;访问模式&lt;/th&gt;&#10; &lt;th scope="col"&gt;适用场景&lt;/th&gt;&#10; &lt;th scope="col"&gt;新连接处理&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;公开访问&lt;/td&gt;&#10; &lt;td&gt;必须对外公开的 SSH、数据库或其他 TCP 服务&lt;/td&gt;&#10; &lt;td&gt;允许所有来源，可按每个来源 IP 限制新连接频率&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;仅白名单访问&lt;/td&gt;&#10; &lt;td&gt;只允许办公网、VPN 出口或固定管理设备访问&lt;/td&gt;&#10; &lt;td&gt;只允许命中 IP/CIDR 白名单的来源，不再执行新连接限频&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;该功能只作用于 &lt;code&gt;mode=tcp&lt;/code&gt; 的普通 TCP 隧道。隧道内可以承载 SSH、HTTP、HTTPS 或数据库协议，但 HTTP(S) 域名隧道、HTTP 正向代理、SOCKS5、UDP、P2P、私密代理、NPC 接入和 Web 管理都不在适用范围内。&lt;/p&gt;</description></item><item><title>HTTP 响应缓存（未实现）</title><link>/extend/feature/http-cache.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/feature/http-cache.html</guid><description>&lt;p&gt;&lt;code&gt;nps.conf&lt;/code&gt; 保留了 HTTP(S) 隧道的内存缓存配置：&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-b92b8fd6-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="ini" data-td-line-count="2"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-b92b8fd6-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;http_cache&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;http_cache_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;100&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;&lt;code&gt;http_cache_length&lt;/code&gt; 表示最多保留的缓存条目数，使用 LRU 淘汰；&lt;code&gt;0&lt;/code&gt; 表示不限制条目数。修改后需要重启 NPS。&lt;/p&gt;&#10;&lt;h2 id="当前版本状态"&gt;当前版本状态&#10;&lt;/h2&gt;&#10;&lt;p&gt;当前版本不会填充可供后续请求命中的响应缓存。因此即使开启以上参数，也&lt;strong&gt;不能把它作为可用的静态文件缓存功能部署&lt;/strong&gt;。&lt;/p&gt;</description></item></channel></rss>