<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>NPS 内网穿透 on NPS Plus</title><link>/index.html</link><description>Recent content in NPS 内网穿透 on NPS Plus</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Fri, 02 Oct 2026 14:15:40 +0800</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml"/><item><title>v0.26.40</title><link>/changelog/v0.26.40.html</link><pubDate>Thu, 01 Oct 2026 00:00:00 +0800</pubDate><guid>/changelog/v0.26.40.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;TCP 独立端口隧道新增访问控制：支持公开访问和 IPv4、IPv6、CIDR 白名单；白名单为空时拒绝全部连接&lt;/li&gt;&#10;&lt;li&gt;TCP 隧道新增按来源 IP 的滑动窗口连接限频和临时封禁，默认每 600 秒最多建立 600 个新连接并封禁 600 秒；支持在全局设置、单条隧道和 &lt;code&gt;npc.conf&lt;/code&gt; 中配置，Web 修改后无需重启且不影响已有连接&lt;/li&gt;&#10;&lt;li&gt;Web 管理端为客户端、各类隧道和全局设置页面新增中英文使用说明，并优化配置表单在桌面端和移动端的布局&lt;/li&gt;&#10;&lt;li&gt;Web 服务会在响应时自动压缩未预压缩的 CSS、JavaScript 静态资源&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;修复 P2P over UDP 服务端握手状态并发读写问题；增加无效报文校验、待处理会话数量限制、20 秒超时清理和安全关闭，避免竞态、状态泄漏及异常报文造成资源耗尽&lt;/li&gt;&#10;&lt;li&gt;普通客户端登录会持续校验客户端是否存在、启用且允许显示；客户端被停用、删除或隐藏后，已有会话立即失效&lt;/li&gt;&#10;&lt;li&gt;限制普通客户端修改自身状态、到期时间、流量和连接配额等管理员字段，并将全局设置限制为管理员访问&lt;/li&gt;&#10;&lt;li&gt;验证码校验失败后立即终止登录，防止继续执行账号密码认证&lt;/li&gt;&#10;&lt;li&gt;IP 白名单认证日志不再记录客户端密钥和授权密码等敏感信息&lt;/li&gt;&#10;&lt;li&gt;修复中英文界面的缺失或错误文案，批量删除确认提示按单条和多条分别显示，流量单位统一为 IEC 单位&lt;/li&gt;&#10;&lt;li&gt;修复 NPC、NPC SDK 和旧 GUI 构建目标相互冲突的问题，并将依赖 Docker 的 mux 测试隔离为集成测试&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;安全：&#10;&lt;ul&gt;&#10;&lt;li&gt;升级 &lt;code&gt;github.com/ulikunitz/xz&lt;/code&gt; 至 v0.5.8，修复 CVE-2021-29482&lt;/li&gt;&#10;&lt;li&gt;升级 &lt;code&gt;golang.org/x/net&lt;/code&gt; 至 v0.55.0，修复 CVE-2024-45338、CVE-2025-22870 和 CVE-2026-25681&lt;/li&gt;&#10;&lt;li&gt;升级 &lt;code&gt;golang.org/x/crypto&lt;/code&gt; 至 v0.52.0、&lt;code&gt;golang.org/x/image&lt;/code&gt; 至 v0.43.0、&lt;code&gt;golang.org/x/text&lt;/code&gt; 至 v0.39.0，修复 CVE-2025-22869、CVE-2026-42508、CVE-2026-46602 和 CVE-2026-56852&lt;/li&gt;&#10;&lt;li&gt;GUI 前端升级 Vite 至 v7.1.5、&lt;code&gt;@vitejs/plugin-vue&lt;/code&gt; 至 v5.2.4，修复 CVE-2025-58752&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;优化：&#10;&lt;ul&gt;&#10;&lt;li&gt;精简登录页和管理端的过期链接及说明，更新版权年份和运行日志文案&lt;/li&gt;&#10;&lt;li&gt;外网 IPv4 查询服务切换到 &lt;code&gt;v4.ipip.net&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Go 工具链和 Docker 构建环境升级至 1.25，GUI 发布流程升级至 Node.js 22&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Docker 部署（推荐）</title><link>/install/docker.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/install/docker.html</guid><description>&lt;div class="td-tabs td-tabs--shortcode" id="td-tabs-f123de13-0"&gt;&#10; &lt;div class="td-tabs__panel" id="td-tabs-f123de13-0-tab1" data-td-tabs-value="tab1" data-td-tabs-active&gt;&#10; &lt;div class="td-tabs__panel-title" aria-hidden="true"&gt;服务端&lt;/div&gt;&#10; &lt;div class="td-tabs__panel-body"&gt;&lt;p&gt;先拉取镜像：&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-f123de13-tabs0-tab1-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-f123de13-tabs0-tab1-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker pull yisier1/nps&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;&amp;lt;本机conf目录&amp;gt;&lt;/code&gt; 替换为实际路径（例如 &lt;code&gt;/root/nps/conf&lt;/code&gt;）：&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-f123de13-tabs0-tab1-fence-1" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="7"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-f123de13-tabs0-tab1-fence-1-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --restart&lt;span class="o"&gt;=&lt;/span&gt;always &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name nps &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --net&lt;span class="o"&gt;=&lt;/span&gt;host &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v &amp;lt;本机conf目录&amp;gt;:/conf &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /etc/localtime:/etc/localtime:ro &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; yisier1/nps&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;div class="td-tabs__panel" id="td-tabs-f123de13-0-tab2" data-td-tabs-value="tab2"&gt;&#10; &lt;div class="td-tabs__panel-title" aria-hidden="true"&gt;客户端&lt;/div&gt;&#10; &lt;div class="td-tabs__panel-body"&gt;&lt;p&gt;先拉取镜像：&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-f123de13-tabs0-tab2-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-f123de13-tabs0-tab2-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker pull yisier1/npc&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;&amp;lt;&amp;gt;&lt;/code&gt; 内的值替换为实际配置：&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-f123de13-tabs0-tab2-fence-1" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="7"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-f123de13-tabs0-tab2-fence-1-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --restart&lt;span class="o"&gt;=&lt;/span&gt;always &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name &amp;lt;自定义名称&amp;gt; &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --net&lt;span class="o"&gt;=&lt;/span&gt;host &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; yisier1/npc &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -server&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;服务端IP:端口&amp;gt; &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -vkey&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;客户端验证密钥&amp;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;/div&gt;&#10; &lt;/div&gt;&#10;&lt;/div&gt;</description></item><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>v0.26.38</title><link>/changelog/v0.26.38.html</link><pubDate>Mon, 24 Aug 2026 00:00:00 +0800</pubDate><guid>/changelog/v0.26.38.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;GUI 客户端（npc-gui）迁移到 Wails v3&lt;/li&gt;&#10;&lt;li&gt;GUI 客户端新增版本自动更新：启动时自动检查 GitHub 最新 release，支持一键下载并热替换当前可执行文件后自动重启&#10;&lt;img src="/image/new/gui.png" alt="img.png" loading="lazy" decoding="async"&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;客户端内网地址为 192.169.x.x 等非标准私网段时，Web 面板客户端列表不显示本机 IP &lt;a href="https://github.com/yisier/nps/issues/348"&gt;#348&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>/install/binary.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/install/binary.html</guid><description>&lt;p&gt;从项目发布页下载对应系统版本。服务端 (&lt;code&gt;nps&lt;/code&gt;) 和客户端 (&lt;code&gt;npc&lt;/code&gt;) 使用单独的压缩包。&lt;/p&gt;&#10;&lt;div class="td-tabs td-tabs--shortcode" id="td-tabs-15c1eb67-0"&gt;&#10; &lt;div class="td-tabs__panel" id="td-tabs-15c1eb67-0-tab1" data-td-tabs-value="tab1" data-td-tabs-active&gt;&#10; &lt;div class="td-tabs__panel-title" aria-hidden="true"&gt;服务端&lt;/div&gt;&#10; &lt;div class="td-tabs__panel-body"&gt;&lt;blockquote&gt;&#10;&lt;p&gt;首次启动时 &lt;code&gt;nps&lt;/code&gt; 会在可执行文件同级目录自动生成 &lt;code&gt;conf/nps.conf&lt;/code&gt;，并随机生成 &lt;code&gt;web_password&lt;/code&gt;、&lt;code&gt;auth_key&lt;/code&gt;、&lt;code&gt;auth_crypt_key&lt;/code&gt;。Web 管理界面的登录密码请在 &lt;code&gt;conf/nps.conf&lt;/code&gt; 或启动日志中查看。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Linux 或 macOS：&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-15c1eb67-tabs0-tab1-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-15c1eb67-tabs0-tab1-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./nps -server&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;Windows：&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-15c1eb67-tabs0-tab1-fence-1" data-td-code data-td-code-auto-id&#10; data-td-language="powershell" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-15c1eb67-tabs0-tab1-fence-1-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;exe&lt;/span&gt; &lt;span class="n"&gt;-server&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;img class="td-image" src="/image/new/server.png" alt="服务端管理菜单" loading="lazy" decoding="async"&gt;&lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;div class="td-tabs__panel" id="td-tabs-15c1eb67-0-tab2" data-td-tabs-value="tab2"&gt;&#10; &lt;div class="td-tabs__panel-title" aria-hidden="true"&gt;客户端&lt;/div&gt;&#10; &lt;div class="td-tabs__panel-body"&gt;&lt;blockquote&gt;&#10;&lt;p&gt;运行目录中没有 &lt;code&gt;conf/npc.conf&lt;/code&gt; 时，客户端无参数启动会进入交互菜单；存在该文件时会直接按配置文件运行。需要强制使用其他配置文件时传入 &lt;code&gt;-config=/实际路径/npc.conf&lt;/code&gt;。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Linux 或 macOS：&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-15c1eb67-tabs0-tab2-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-15c1eb67-tabs0-tab2-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./npc&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;Windows：&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-15c1eb67-tabs0-tab2-fence-1" data-td-code data-td-code-auto-id&#10; data-td-language="powershell" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-15c1eb67-tabs0-tab2-fence-1-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;npc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exe&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;img class="td-image" src="/image/new/cmd.png" alt="客户端管理菜单" loading="lazy" decoding="async"&gt;&lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;div class="td-tabs__panel" id="td-tabs-15c1eb67-0-tab3" data-td-tabs-value="tab3"&gt;&#10; &lt;div class="td-tabs__panel-title" aria-hidden="true"&gt;客户端（GUI）&lt;/div&gt;&#10; &lt;div class="td-tabs__panel-body"&gt;&lt;blockquote&gt;&#10;&lt;p&gt;通过 Web 管理界面的【快捷连接码】，或手动填写 &lt;code&gt;-server&lt;/code&gt;、&lt;code&gt;-vkey&lt;/code&gt; 等参数配置客户端。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;img class="td-image" src="/image/new/gui.png" alt="GUI 客户端" loading="lazy" decoding="async"&gt;&lt;/div&gt;&#10; &lt;/div&gt;&#10;&lt;/div&gt;</description></item><item><title>v0.26.37</title><link>/changelog/v0.26.37.html</link><pubDate>Sat, 08 Aug 2026 00:00:00 +0800</pubDate><guid>/changelog/v0.26.37.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;NPC 安装到系统服务失败 BUG &lt;a href="https://github.com/yisier/nps/issues/338"&gt;#338&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;隧道实际未运行但面板提示「启动成功」、运行状态始终为关闭的问题 &lt;a href="https://github.com/yisier/nps/issues/339"&gt;#339&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;配置 &lt;code&gt;allow_ports&lt;/code&gt; 后随机生成端口问题 &lt;a href="https://github.com/yisier/nps/issues/339"&gt;#339&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Web 面板&lt;code&gt;languages.xml&lt;/code&gt;使用 NPS 版本号作为缓存标识 &lt;a href="https://github.com/yisier/nps/issues/342"&gt;#342&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;客户端、隧道、域名解析修改接口支持修改流量数据 &lt;a href="https://github.com/yisier/nps/issues/341"&gt;#341&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>/install/source.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/install/source.html</guid><description>&lt;p&gt;需要 Go 1.25.0 及以上，具体版本要求以仓库根目录的 &lt;code&gt;go.mod&lt;/code&gt; 为准。&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-8c157226-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="4"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-8c157226-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/yisier/nps.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; nps&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go build -o nps cmd/nps/nps.go&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go build -o npc cmd/npc/npc.go&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;</description></item><item><title>v0.26.36</title><link>/changelog/v0.26.36.html</link><pubDate>Sun, 12 Jul 2026 00:00:00 +0800</pubDate><guid>/changelog/v0.26.36.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;新增客户端内网地址上报功能,客户端列表展示 npc 内网地址 &lt;a href="https://github.com/yisier/nps/issues/333"&gt;#333&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Web 管理端客户端/隧道/域名列表业务字段支持服务端排序（备注、状态、在线等）&lt;a href="https://github.com/yisier/nps/issues/254"&gt;#254&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;优化：&#10;&lt;ul&gt;&#10;&lt;li&gt;不再依赖外部 &lt;code&gt;web&lt;/code&gt; 目录的静态文件&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;客户端/服务端在线更新失败 BUG&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;nps -server&lt;/code&gt; 安装成功后 &lt;code&gt;web_port&lt;/code&gt; 未正常显示BUG &lt;a href="https://github.com/yisier/nps/issues/317"&gt;#317&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Bridge 握手增加 10s 读超时，校验失败/读失败立即关闭连接，减轻端口扫描导致的连接与 goroutine 堆积 &lt;a href="https://github.com/yisier/nps/issues/281"&gt;#281&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;解决私密代理和P2P连接的TLS启用问题 &lt;a href="https://github.com/yisier/nps/issues/143"&gt;#143&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;HTTP 正向代理 Basic 认证 BUG&lt;a href="https://github.com/yisier/nps/issues/133"&gt;#133&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;SOCKS5 用户名密码认证 BUG &lt;a href="https://github.com/yisier/nps/issues/133"&gt;#133&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;客户端建连失败后半连接假死、需手动重启 npc BUG &lt;a href="https://github.com/yisier/nps/issues/115"&gt;#115&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.35</title><link>/changelog/v0.26.35.html</link><pubDate>Sat, 04 Jul 2026 00:00:00 +0800</pubDate><guid>/changelog/v0.26.35.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;客户端列表、隧道列表、域名解析列表支持多选批量删除 &lt;a href="https://github.com/yisier/nps/issues/287"&gt;#287&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;HTTP 代理在 SVN 客户端无法正常检出 &lt;a href="https://github.com/yisier/nps/issues/336"&gt;#336&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;新增/编辑隧道时无提示且不跳转，重复点击会产生多条记录 &lt;a href="https://github.com/yisier/nps/issues/334"&gt;#334&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;mips/mipsle 架构运行出现 Illegal instruction 错误 &lt;a href="https://github.com/yisier/nps/issues/331"&gt;#331&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;优化：&#10;&lt;ul&gt;&#10;&lt;li&gt;隧道、域名解析编辑页的客户端 ID 改为下拉选择 &lt;a href="https://github.com/yisier/nps/issues/334"&gt;#334&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.34</title><link>/changelog/v0.26.34.html</link><pubDate>Thu, 04 Jun 2026 00:00:00 +0800</pubDate><guid>/changelog/v0.26.34.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;nps -server&lt;/code&gt; 管理脚本欢迎语显示当前版本号,更新版本时比对版本，已是最新则直接退出，避免无谓覆盖 &lt;a href="https://github.com/yisier/nps/issues/328"&gt;#328&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;npc&lt;/code&gt; 管理脚本欢迎语显示当前版本号，新增 &lt;code&gt;[5] 更新客户端&lt;/code&gt; 选项，更新并替换 npc 二进制&lt;/li&gt;&#10;&lt;li&gt;客户端新增到期时间字段，创建/修改客户端时可选填写，到期后自动暂停客户端 &lt;a href="https://github.com/yisier/nps/issues/322"&gt;#322&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;Dashboard IO 速率采集阻塞请求 500ms，改为后台采集缓存，消除 Sleep 等待&lt;/li&gt;&#10;&lt;li&gt;ServerStatus 切片并发读写不安全，添加 RWMutex 保护&lt;/li&gt;&#10;&lt;li&gt;flowSession goroutine 泄漏，改为仅在 StartNewServer 启动一次&lt;/li&gt;&#10;&lt;li&gt;GetTunnel 双重遍历 sync.Map 性能问题，合并为单次 Range&lt;/li&gt;&#10;&lt;li&gt;Bridge Client 字段并发读写不安全，添加 Mutex 保护&lt;/li&gt;&#10;&lt;li&gt;TLS ClientHello recordLen 无上限，添加 16KB 限制防止内存耗尽&lt;/li&gt;&#10;&lt;li&gt;SOCKS5 地址解析未检查 Read 返回值，改用 io.ReadFull&lt;/li&gt;&#10;&lt;li&gt;文件存储 panic 改为错误日志，defer 清理临时文件防止泄漏&lt;/li&gt;&#10;&lt;li&gt;GenerateServerPort 可能无限循环，限制 1000 次重试&lt;/li&gt;&#10;&lt;li&gt;P2P UDP 无超时永久阻塞，添加 30s ReadDeadline&lt;/li&gt;&#10;&lt;li&gt;P2P goroutine 退出控制改用 context，修复潜在泄漏&lt;/li&gt;&#10;&lt;li&gt;客户端 UDP ReadFrom 错误后未退出，修复无效数据继续处理&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/yisier/nps/issues/324"&gt;#324&lt;/a&gt;&#10; 隧道/域名解析/UDP 流量始终为 0&lt;/li&gt;&#10;&lt;li&gt;muxPackager buffer pool 泄漏：UnPack() 错误路径未归还 windowBuff 导致内存持续增长&lt;/li&gt;&#10;&lt;li&gt;bridge 客户端重连时旧 WORK_CHAN/WORK_FILE mux 未关闭，底层连接和 goroutine 永不释放&lt;/li&gt;&#10;&lt;li&gt;pmux 连接超时泄漏：process() channel 发送超时后连接未关闭，且 ACCEPT_TIME_OUT 单位错误（10ns 应为 10s）&lt;/li&gt;&#10;&lt;li&gt;pmux 关闭流程 panic：加 done channel + WaitGroup 保证 Close() 等所有 process() 退出后再 close conn channel；process() 入口设 ReadDeadline 防止阻塞读导致 wg.Wait() 死锁；PortListener 加 done channel 唤醒 Accept()&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;优化：ioutil.WriteFile → os.WriteFile、rand.Seed → rand.New 本地随机源&lt;/li&gt;&#10;&lt;/ul&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>v0.26.33</title><link>/changelog/v0.26.33.html</link><pubDate>Sat, 23 May 2026 00:00:00 +0800</pubDate><guid>/changelog/v0.26.33.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;配置文件自动生成：启动时若 conf 目录或 nps.conf 不存在，自动创建并写入默认配置，方便 Docker 部署&lt;/li&gt;&#10;&lt;li&gt;首次启动默认 web_username/admin、web_password、auth_key、auth_crypt_key 均改为随机生成，并打印到终端，提升安全性&lt;/li&gt;&#10;&lt;li&gt;Web 静态文件打包进可执行文件 + 静态文件 URL 加入版本号参数，升级后自动刷新缓存，部署无需单独拷贝 web 目录&lt;/li&gt;&#10;&lt;li&gt;精简发布包：去除打包时冗余的 conf/nps.conf、web 目录&lt;/li&gt;&#10;&lt;li&gt;清理失效配置项：移除 appname、runmode、https_default_cert_file、https_default_key_file、https_just_proxy&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/yisier/nps/issues/184"&gt;#184&lt;/a&gt;&#10; 限速导致隧道中断：UpdateClient 在 RateLimit=0 时创建零速率令牌桶导致永久阻塞&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/yisier/nps/issues/159"&gt;#159&lt;/a&gt;&#10; 关闭隧道端口仍可用：StopServer 错误时提前返回未更新状态 + 重复 OpenTask case 导致隧道被自动重启&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/yisier/nps/issues/170"&gt;#170&lt;/a&gt;&#10; TCP 负载均衡只有一个后端可达：GetRandomTarget 未处理 \r 换行符和尾部空行&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/yisier/nps/issues/319"&gt;#319&lt;/a&gt;&#10; 客户端列表不显示实时网速：NowRate 计算逻辑错误，改为统计每秒实际消耗字节数&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/yisier/nps/issues/306"&gt;#306&lt;/a&gt;&#10; &lt;a href="https://github.com/yisier/nps/issues/316"&gt;#316&lt;/a&gt;&#10; TCP Basic 认证与域名解析冲突：移除 TCP 隧道 Basic 认证探测，域名解析继续使用客户端 Basic 认证&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.32</title><link>/changelog/v0.26.32.html</link><pubDate>Fri, 27 Mar 2026 00:00:00 +0800</pubDate><guid>/changelog/v0.26.32.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;客户端注册参数未正确处理[快捷启动命令]和[TLS快捷启动命令] &lt;a href="https://github.com/yisier/nps/issues/303"&gt;#303&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;修复https反向代理bug，感谢&lt;a href="https://github.com/okawao"&gt;okawao&lt;/a&gt;&#10; 的 PR&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.31</title><link>/changelog/v0.26.31.html</link><pubDate>Mon, 23 Mar 2026 00:00:00 +0800</pubDate><guid>/changelog/v0.26.31.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;域名解析记录开关功能 &lt;a href="https://github.com/yisier/nps/issues/314"&gt;#314&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;TCP隧道增加Basic认证 &lt;a href="https://github.com/yisier/nps/issues/306"&gt;306&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;新增隧道出现secret mode keys must be unique &lt;a href="https://github.com/yisier/nps/issues/301"&gt;301&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>v0.26.30</title><link>/changelog/v0.26.30.html</link><pubDate>Thu, 12 Mar 2026 00:00:00 +0800</pubDate><guid>/changelog/v0.26.30.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;http 协议 websocket 错误，感谢&lt;a href="https://github.com/xiaozonglong"&gt;xiaozonglong&lt;/a&gt;&#10; 提供的 home assistant 环境 ,&lt;a href="https://github.com/yisier/nps/issues/268"&gt;#268&lt;/a&gt;&#10;,&lt;a href="https://github.com/yisier/nps/issues/296"&gt;#296&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;域名解析中，主机url点击无法跳转非80端口 &lt;a href="https://github.com/yisier/nps/issues/311"&gt;311&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;新增的主机配置页面，客户端ID异常 &lt;a href="https://github.com/yisier/nps/issues/310"&gt;#310&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;自动 HTTPS(301) 按照 &lt;code&gt;https_proxy_port&lt;/code&gt; 配置的端口号跳转&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>使用说明</title><link>/client/use.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/client/use.html</guid><description>&lt;h2 id="启动方式选择"&gt;启动方式选择&#10;&lt;/h2&gt;&#10;&lt;p&gt;NPC 按以下顺序选择启动方式：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&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;-config=/path/to/npc.conf&lt;/code&gt; 时，按指定配置文件连接。&lt;/li&gt;&#10;&lt;li&gt;无参数启动时，如果默认位置存在 &lt;code&gt;conf/npc.conf&lt;/code&gt;，按该文件连接；否则进入交互菜单。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Windows 的默认配置位置相对于 &lt;code&gt;npc.exe&lt;/code&gt; 所在目录；Linux 和 macOS 的默认位置相对于启动时的当前工作目录。为避免系统服务或脚本改变工作目录，配置文件模式建议使用绝对路径：&lt;/p&gt;</description></item><item><title>使用说明</title><link>/server/nps_use.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/server/nps_use.html</guid><description>&lt;h2 id="web-管理"&gt;Web 管理&#10;&lt;/h2&gt;&#10;&lt;p&gt;访问 Web 管理界面：&lt;code&gt;http://服务端 IP:Web 管理端口&lt;/code&gt;（默认端口为 &lt;code&gt;8081&lt;/code&gt;）。启用 &lt;code&gt;web_open_ssl&lt;/code&gt; 后改用 HTTPS；配置了 &lt;code&gt;web_base_url&lt;/code&gt; 时还要附加该路径。&lt;/p&gt;</description></item><item><title>v0.26.29</title><link>/changelog/v0.26.29.html</link><pubDate>Sat, 24 Jan 2026 00:00:00 +0800</pubDate><guid>/changelog/v0.26.29.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GUI 客户端，基于 Wails 开发，&lt;a href="https://github.com/yisier/nps/blob/master/cmd/npc/npc-gui/README.md"&gt;点击查看了解更多&lt;/a&gt;&#10;，需要 WebView2 运行时，可通过两种方式添加客户端。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;方式1：直接输入快捷启动命令即可&lt;/li&gt;&#10;&lt;li&gt;方式2：手动添加客户端，输入-server -vkey等参数&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;img class="td-image" src="/image/new/gui.png" alt="img.png" loading="lazy" decoding="async"&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;Android 包未构建到 Release &lt;a href="https://github.com/yisier/nps/issues/72"&gt;72&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.28</title><link>/changelog/v0.26.28.html</link><pubDate>Sat, 06 Dec 2025 00:00:00 +0800</pubDate><guid>/changelog/v0.26.28.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;【全局参数】页面新增&lt;code&gt;服务地址&lt;/code&gt;配置项，用于客户端命令地址显示、隧道访问地址显示 &lt;a href="https://github.com/yisier/nps/issues/293"&gt;293&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;【IP授权功能优化】，通过穿透的端口去提交 IP 认证，感谢 &lt;a href="https://github.com/Aqamoe"&gt;Aqamoe&lt;/a&gt;&#10; 的建议 &lt;a href="https://github.com/yisier/nps/issues/291"&gt;291&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;【重构限速器实现】提升性能和准确性&lt;/li&gt;&#10;&lt;/ul&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>v0.26.27</title><link>/changelog/v0.26.27.html</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0800</pubDate><guid>/changelog/v0.26.27.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;客户端新增【IP白名单】，可通过两种方式添加IP：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;方式1️⃣：在【客户端】新建/修改页面，配置IP授权密码，不在IP白名单的外网访问将被跳转到 IP 授权页面，输入正确的授权密码，即可完成添加 IP。&lt;/li&gt;&#10;&lt;li&gt;方式2️⃣：在【客户端】新建/修改页面，直接添加IP到白名单中。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;img class="td-image" src="/image/new/ip.png" alt="img.png" loading="lazy" decoding="async"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;客户端配置移除【压缩】和【加密】功能，此功能会显著提高内存和CPU占用率，&amp;ldquo;利大于弊&amp;rdquo;。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;客户端默认不再提供配置文件，&lt;em&gt;&lt;strong&gt;强烈推荐使用无配置文件模式启动客户端&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.26</title><link>/changelog/v0.26.26.html</link><pubDate>Fri, 15 Aug 2025 00:00:00 +0800</pubDate><guid>/changelog/v0.26.26.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;windows注册服务 使用tls无法连接 &lt;a href="https://github.com/yisier/nps/issues/269"&gt;269&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;域名解析自动HTTPS逻辑bug &lt;a href="https://github.com/yisier/nps/issues/273"&gt;273&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.25</title><link>/changelog/v0.26.25.html</link><pubDate>Wed, 28 May 2025 00:00:00 +0800</pubDate><guid>/changelog/v0.26.25.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;nps增加&lt;code&gt;nps(.exe) -server&lt;/code&gt; 命令，用于管理NPS服务，安装和卸载服务在 Linux 下需要有 sudo 权限，Windows 下需要有管理员权限。&lt;/p&gt;&#10;&lt;img class="td-image" src="/image/new/server.png" alt="img.png" loading="lazy" decoding="async"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;增加【TLS快捷启动命令】，可用于在tls模式下，快速启动客户端。 &lt;a href="https://github.com/yisier/nps/issues/257"&gt;257&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.24</title><link>/changelog/v0.26.24.html</link><pubDate>Wed, 16 Apr 2025 00:00:00 +0800</pubDate><guid>/changelog/v0.26.24.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;隧道支持复制功能，在隧道页面增加复制按钮，除了端口号为随机生成外，其他参数全部拷贝。&lt;a href="https://github.com/yisier/nps/issues/251"&gt;251&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;私密代理连接时服务端会报错退出，&lt;a href="https://github.com/yisier/nps/issues/250"&gt;250&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.23</title><link>/changelog/v0.26.23.html</link><pubDate>Fri, 11 Apr 2025 00:00:00 +0800</pubDate><guid>/changelog/v0.26.23.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;TCP 隧道支持 Proxy Protocol 协议来传递经过请求的真实 IP。&lt;/p&gt;&#10;&lt;img class="td-image" src="/image/new/protocol.png" alt="img.png" loading="lazy" decoding="async"&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;客户端较多时，协程增长过快，感谢 &lt;a href="https://github.com/yisier/nps/pull/244"&gt;@huanglei288766&lt;/a&gt;&#10; 的PR&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.22</title><link>/changelog/v0.26.22.html</link><pubDate>Thu, 23 Jan 2025 00:00:00 +0800</pubDate><guid>/changelog/v0.26.22.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;优化：&#10;&lt;ul&gt;&#10;&lt;li&gt;客户端注册系统服务时，（新版客户端注册方式，非 install 命令） 将按照 &lt;code&gt;npc-[vkey].log&lt;/code&gt; 格式保存日志，每个客户端VKEY单独一个日志文件，windows 日志位于 &lt;code&gt;npc.exe&lt;/code&gt; 同级目录下，linux 位于 &lt;code&gt;/var/log/&lt;/code&gt;目录。&lt;/li&gt;&#10;&lt;li&gt;域名模式，HTTPS证书支持上传文件和文件路径，系统将自动识别路径还是证书内容。 &lt;a href="https://github.com/yisier/nps/issues/175"&gt;#175&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;ipv6地址显示不全 &lt;a href="https://github.com/yisier/nps/issues/237"&gt;#237&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.21</title><link>/changelog/v0.26.21.html</link><pubDate>Tue, 07 Jan 2025 00:00:00 +0800</pubDate><guid>/changelog/v0.26.21.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;客户端列表页面新增【快捷启动命令】，此命令为连接地址+链接秘钥的base64编码，方便一键启动、一键安装客户端。&lt;/li&gt;&#10;&lt;li&gt;域名解析和隧道列表增加访问地址，可以点击隧道链接，直接网页打开。 &lt;a href="https://github.com/yisier/nps/issues/234"&gt;#234&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;优化：&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;修改vkey生成方式，由16位缩短至10位，截取uuid前10位，避免重复。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;优化客户端启动方式，当npc文件目录下无配置文件时，可直接双击运行客户端，输入命令完成启动、安装、卸载客户端，直接启动和安装服务时需要输入【快捷启动命令】，卸载服务、启动服务、停止服务时，只需输入隧道秘钥【vkey】即可。安装服务以 nps-client-vkey 方式命名 ，实现注册多个服务。&lt;/p&gt;&#10;&lt;img class="td-image" src="/image/new/cmd.png" alt="image" loading="lazy" decoding="async"&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.20</title><link>/changelog/v0.26.20.html</link><pubDate>Thu, 07 Nov 2024 00:00:00 +0800</pubDate><guid>/changelog/v0.26.20.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;新增：&#10;&lt;ul&gt;&#10;&lt;li&gt;客户端增加创建时间&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;修复：&#10;&lt;ul&gt;&#10;&lt;li&gt;客户端限速单位不统一 &lt;a href="https://github.com/yisier/nps/issues/185"&gt;#185&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;增加从下拉选择客户端,隧道列表排序,新增编辑后不会刷新界面 &lt;a href="https://github.com/yisier/nps/issues/183"&gt;#183&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;隧道数量限制无法统计域名映射 &lt;a href="https://github.com/yisier/nps/issues/209"&gt;#209&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>/server/configuration.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/server/configuration.html</guid><description>&lt;p&gt;NPS 从运行目录下的 &lt;code&gt;conf/nps.conf&lt;/code&gt; 读取配置。直接运行二进制时，运行目录通常是 NPS 可执行文件所在目录；安装为系统服务后通常是 &lt;code&gt;/etc/nps&lt;/code&gt;。使用 &lt;code&gt;-conf_path=/path/to/nps&lt;/code&gt; 可以指定新的运行目录，此时配置文件路径为 &lt;code&gt;/path/to/nps/conf/nps.conf&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>使用示例</title><link>/extend/example.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/example.html</guid><description>&lt;h2 id="统一准备工作"&gt;统一准备工作&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;开启 NPS 服务端，假设服务端公网 IP 为 &lt;code&gt;1.1.1.1&lt;/code&gt;，配置文件中的 &lt;code&gt;bridge_port&lt;/code&gt; 为 &lt;code&gt;8024&lt;/code&gt;，&lt;code&gt;web_port&lt;/code&gt; 为 &lt;code&gt;8080&lt;/code&gt;。&lt;/li&gt;&#10;&lt;li&gt;访问 &lt;code&gt;1.1.1.1:8080&lt;/code&gt;。&lt;/li&gt;&#10;&lt;li&gt;在客户端管理中新增一个客户端，记录客户端验证密钥。&lt;/li&gt;&#10;&lt;li&gt;在内网设备上运行 NPC（Windows 使用 CMD 运行 &lt;code&gt;.exe&lt;/code&gt; 文件）。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-bb0b8688-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-bb0b8688-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./npc -server&lt;span class="o"&gt;=&lt;/span&gt;1.1.1.1:8024 -vkey&lt;span class="o"&gt;=&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;strong&gt;注意：运行服务端后，请确保客户端设备能正常访问配置文件中的 &lt;code&gt;bridge_port&lt;/code&gt; 端口，可使用 Telnet、Netcat 等工具检查。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>v0.26.19</title><link>/changelog/v0.26.19.html</link><pubDate>Sat, 01 Jun 2024 00:00:00 +0800</pubDate><guid>/changelog/v0.26.19.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;golang 版本升级到 1.22。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;增加自动https，自动将http 重定向（301）到 https。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;客户端命令行方式启动支持多个隧道ID，使用逗号拼接，示例：&lt;code&gt;npc -server=xxx:8024 -vkey=ytkpyr0er676m0r7,iwnbjfbvygvzyzzt&lt;/code&gt;。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;移除 nps.conf 参数 &lt;code&gt;https_just_proxy&lt;/code&gt; ，调整 https 处理逻辑，如果上传了 https 证书，则由nps负责SSL（此方式可以获取真实IP），否则走端口转发模式（使用本地证书，nps 获取不到真实IP），如下图所示。&lt;/p&gt;&#10;&lt;img class="td-image" src="/image/new/https.png" alt="image" loading="lazy" decoding="async"&gt;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.18</title><link>/changelog/v0.26.18.html</link><pubDate>Tue, 27 Feb 2024 00:00:00 +0800</pubDate><guid>/changelog/v0.26.18.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;新增&lt;/strong&gt;&lt;/em&gt;：nps.conf 新增 &lt;code&gt;tls_bridge_port=8025&lt;/code&gt; 参数，当 &lt;code&gt;tls_enable=true&lt;/code&gt; 时，nps 会监听8025端口，作为 tls 的连接端口。客户端可以选择连接 tls 端口或者非 tls 端口：&lt;code&gt;npc.exe -server=xxx:8024 -vkey=xxx&lt;/code&gt; 或 &lt;code&gt;npc.exe -server=xxx:8025 -vkey=xxx -tls_enable=true&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.17</title><link>/changelog/v0.26.17.html</link><pubDate>Wed, 31 Jan 2024 00:00:00 +0800</pubDate><guid>/changelog/v0.26.17.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/em&gt;：考虑到 npc 历史版本客户端众多，版本号不同旧版本客户端无法连接，为了兼容，仓库版本号将继续沿用 0.26.xx&lt;/li&gt;&#10;&lt;/ul&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>v0.27.01（已作废）</title><link>/changelog/v0.27.01.html</link><pubDate>Tue, 02 Jan 2024 00:00:00 +0800</pubDate><guid>/changelog/v0.27.01.html</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;此版本已作废，功能移动到 v0.26.17。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;新增&lt;/strong&gt;&lt;/em&gt;：tls 流量加密，(客户端忽略证书校验，谨慎使用，客户端与服务端需要同时开启，或同时关闭)，使用方式：&#10;&lt;ul&gt;&#10;&lt;li&gt;服务端：nps.conf &lt;code&gt;tls_enable=true&lt;/code&gt;；&lt;/li&gt;&#10;&lt;li&gt;客户端：npc.conf &lt;code&gt;tls_enable=true&lt;/code&gt; 或者 &lt;code&gt;npc.exe -server=xxx -vkey=xxx -tls_enable=true&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.16</title><link>/changelog/v0.26.16.html</link><pubDate>Thu, 01 Jun 2023 00:00:00 +0800</pubDate><guid>/changelog/v0.26.16.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;修复&lt;/strong&gt;&lt;/em&gt;：https 流量不统计 Bug 修复。&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;新增&lt;/strong&gt;&lt;/em&gt;：新增全局黑名单IP，用于防止被肉鸡扫描端口或被恶意攻击。&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;新增&lt;/strong&gt;&lt;/em&gt;：新增客户端上次在线时间。&lt;/li&gt;&#10;&lt;/ul&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>v0.26.15</title><link>/changelog/v0.26.15.html</link><pubDate>Fri, 24 Feb 2023 00:00:00 +0800</pubDate><guid>/changelog/v0.26.15.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;修复&lt;/strong&gt;&lt;/em&gt;：更新程序 url 更改到当前仓库中&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;修复&lt;/strong&gt;&lt;/em&gt;：nps 在外部路径启动时找不到配置文件&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;新增&lt;/strong&gt;&lt;/em&gt;：增加 nps 启动参数，&lt;code&gt;-conf_path=D:\test\nps&lt;/code&gt;，可用于加载指定nps配置文件和web文件目录。&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;window 使用示例：&lt;/strong&gt;&lt;/em&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;直接启动：&lt;code&gt;nps.exe -conf_path=D:\test\nps&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;安装：&lt;code&gt;nps.exe install -conf_path=D:\test\nps&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;安装启动：&lt;code&gt;nps.exe start&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;linux 使用示例：&lt;/strong&gt;&lt;/em&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;直接启动：&lt;code&gt;./nps -conf_path=/app/nps&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;安装：&lt;code&gt;./nps install -conf_path=/app/nps&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;安装启动：&lt;code&gt;nps start -conf_path=/app/nps&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>v0.26.14</title><link>/changelog/v0.26.14.html</link><pubDate>Fri, 30 Dec 2022 00:00:00 +0800</pubDate><guid>/changelog/v0.26.14.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;修复&lt;/strong&gt;&lt;/em&gt;：API 鉴权漏洞修复&lt;/li&gt;&#10;&lt;/ul&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>/changelog/legacy.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/changelog/legacy.html</guid><description>&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;2022-12-19&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;修复&lt;/strong&gt;&lt;/em&gt;：某些场景下丢包导致服务端意外退出&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;优化&lt;/strong&gt;&lt;/em&gt;：新增隧道时，不指定服务端口时，将自动生成端口号&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;优化&lt;/strong&gt;&lt;/em&gt;：API返回ID，&lt;code&gt;/client/add/&lt;/code&gt;, &lt;code&gt;/index/addhost/&lt;/code&gt;, &lt;code&gt;/index/add/&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;优化&lt;/strong&gt;&lt;/em&gt;：域名解析、隧道页面，增加[唯一验证密钥]，方便搜查&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;2022-10-30&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;新增&lt;/strong&gt;&lt;/em&gt;：在管理面板中新增客户端时，可以配置多个黑名单IP，用于防止被肉鸡扫描端口或被恶意攻击。&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;优化&lt;/strong&gt;&lt;/em&gt;：0.26.12 版本还原了注册系统功能，使用方式和以前一样。无论是否注册了系统服务，直接执行 nps 时只会读取当前目录下的配置文件。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;2022-10-27&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;新增&lt;/strong&gt;&lt;/em&gt;：在管理面板登录时开启验证码校验，开启方式：nps.conf &lt;code&gt;open_captcha=true&lt;/code&gt;，感谢 &lt;a href="https://github.com/dongFangTuring"&gt;@dongFangTuring&lt;/a&gt;&#10; 提供的PR&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;2022-10-24&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;修复&lt;/strong&gt;&lt;/em&gt;：HTTP协议支持WebSocket（稳定性待测试）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;2022-10-21&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;修复&lt;/strong&gt;&lt;/em&gt;：HTTP协议下实时统计流量，能够精准的限制住流量（上下行对等）&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;优化&lt;/strong&gt;&lt;/em&gt;：删除HTTP隧道时，客户端已用流量不再清空&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;2022-10-19&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;em&gt;&lt;strong&gt;BUG&lt;/strong&gt;&lt;/em&gt;：在TCP协议下，流量统计有问题，只有当连接断开时才会统计流量。例如，限制客户端流量20m,当传输100m的文件时，也能传输成功。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;em&gt;&lt;strong&gt;修复&lt;/strong&gt;&lt;/em&gt;：TCP协议下实时统计流量，能够精准的限制住流量（上下行对等）&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;em&gt;&lt;strong&gt;优化&lt;/strong&gt;&lt;/em&gt;：删除TCP隧道时，客户端已用流量不再清空&lt;/p&gt;&#10;&lt;img class="td-image" src="/image/new/tcp_limit.png" alt="image" loading="lazy" decoding="async"&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;2022-09-14&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;修改NPS工作目录为当前可执行文件目录（即配置文件和nps可执行文件放在同一目录下，直接执行nps文件即可），去除注册系统服务，启动、停止、升级等命令&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&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>Web API 鉴权</title><link>/extend/api.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/api.html</guid><description>&lt;p&gt;在 &lt;code&gt;nps.conf&lt;/code&gt; 中配置 &lt;code&gt;auth_key&lt;/code&gt; 即可启用 API 鉴权（首次启动自动生成）。&lt;/p&gt;&#10;&lt;h2 id="鉴权方式"&gt;鉴权方式&#10;&lt;/h2&gt;&#10;&lt;p&gt;每个请求需附带两个参数：&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;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;auth_key&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;md5(配置文件中的 auth_key + 当前时间戳)&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;timestamp&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;当前 unix 时间戳（秒）&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;strong&gt;20 秒&lt;/strong&gt;，每次请求须重新生成。&lt;/p&gt;</description></item><item><title>NPC SDK 文档</title><link>/client/npc_sdk.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/client/npc_sdk.html</guid><description>&lt;div class="td-code td-code--untitled" id="td-code-6fdbb7f9-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="" data-td-line-count="20"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-6fdbb7f9-fence-0-viewport" data-td-code-viewport&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;命令行模式启动客户端&#10;从 v0.26.10 开始，此函数会阻塞，直到客户端退出返回，请自行管理是否重连&#10;p0-&amp;gt;服务端地址&#10;p1-&amp;gt;客户端验证密钥（vkey）&#10;p2-&amp;gt;连接类型（tcp or udp）&#10;p3-&amp;gt;连接代理&#10;&#10;extern GoInt StartClientByVerifyKey(char* p0, char* p1, char* p2, char* p3);&#10;&#10;查看当前启动的客户端状态，在线为1，离线为0&#10;extern GoInt GetClientStatus();&#10;&#10;关闭客户端&#10;extern void CloseClient();&#10;&#10;获取当前客户端版本&#10;extern char* Version();&#10;&#10;获取日志，实时更新&#10;extern char* Logs();&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&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>增强功能</title><link>/server/nps_extend.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/server/nps_extend.html</guid><description>&lt;h2 id="使用-https"&gt;使用 HTTPS&#10;&lt;/h2&gt;&#10;&lt;p&gt;NPS 会根据 HTTP(S) 隧道是否同时配置证书和私钥选择处理方式：&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;NPS 能否获取 HTTP 层真实 IP&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 终止 TLS，再把请求转发到内网服务&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 透传 TLS，由内网服务终止 TLS&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;img class="td-image" src="/image/new/https.png" alt="image" loading="lazy" decoding="async"&gt;&lt;h3 id="自动跳转-https301"&gt;自动跳转 HTTPS（301）&#10;&lt;/h3&gt;&#10;&lt;p&gt;在 Web 的 HTTP(S) 隧道编辑页勾选“自动跳转 HTTPS（301）”后，NPS 会把该域名的 HTTP 请求重定向到 &lt;code&gt;https://&amp;lt;隧道域名&amp;gt;:&amp;lt;https_proxy_port&amp;gt;&lt;/code&gt;。&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>Web API</title><link>/extend/webapi.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/webapi.html</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;除 &lt;code&gt;AuthController&lt;/code&gt; 和 &lt;code&gt;LoginController&lt;/code&gt; 外，所有接口均需通过鉴权，详见 &lt;a href="/extend/api.html"&gt;API 鉴权说明&lt;/a&gt;&#10;。&lt;/p&gt;&#10;&lt;/blockquote&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;成功&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;{&amp;quot;status&amp;quot;: 1, &amp;quot;msg&amp;quot;: &amp;quot;success&amp;quot;}&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;成功（含 ID）&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;{&amp;quot;status&amp;quot;: 1, &amp;quot;msg&amp;quot;: &amp;quot;success&amp;quot;, &amp;quot;id&amp;quot;: 123}&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;失败&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;{&amp;quot;status&amp;quot;: 0, &amp;quot;msg&amp;quot;: &amp;quot;error message&amp;quot;}&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;列表&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;{&amp;quot;rows&amp;quot;: [...], &amp;quot;total&amp;quot;: 100}&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;blockquote&gt;&#10;&lt;p&gt;单个查询接口（&lt;code&gt;GetClient&lt;/code&gt;、&lt;code&gt;GetOneTunnel&lt;/code&gt;、&lt;code&gt;GetHost&lt;/code&gt;）返回 &lt;code&gt;{&amp;quot;code&amp;quot;: 1, &amp;quot;data&amp;quot;: {...}}&lt;/code&gt; 或 &lt;code&gt;{&amp;quot;code&amp;quot;: 0}&lt;/code&gt;。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>术语表</title><link>/extend/glossary.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/extend/glossary.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;strong&gt;NPS 服务端&lt;/strong&gt;：通常部署在有公网入口的设备上，负责接收 NPC 连接、监听隧道入口并转发流量。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;NPC 客户端&lt;/strong&gt;：运行在内网设备上的进程，主动连接 NPS，并从所在网络访问目标服务。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;客户端&lt;/strong&gt;：Web 管理中保存的一条逻辑记录，包含验证密钥、配额和所属隧道。NPC 使用对应密钥接入这条记录。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;访问端&lt;/strong&gt;：最终使用隧道的人或设备。私密代理和 P2P 模式下，访问端也要运行 NPC。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;隧道&lt;/strong&gt;：一条转发规则，描述入口、所属客户端、目标地址和转发方式。“隧道”本身不表示使用了 TLS 或端到端加密。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;客户端 ID&lt;/strong&gt;：NPS 为逻辑客户端分配的内部数字编号，用于关联隧道；连接 NPC 时使用的是客户端验证密钥。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;客户端状态&lt;/strong&gt;：NPC 是否已连接 NPS。在线表示控制连接可用，不代表每个目标服务都能访问。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;运行状态&lt;/strong&gt;：某条隧道是否启用并正在监听或等待连接。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;允许客户端通过配置文件连接&lt;/strong&gt;：允许该客户端通过 &lt;code&gt;npc.conf&lt;/code&gt; 提交并创建隧道配置。关闭后，Web 中创建的隧道仍可使用。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;管理员 / 用户&lt;/strong&gt;：管理员管理全局配置和所有客户端；普通用户只管理分配给自己的客户端及隧道。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="隧道类型"&gt;隧道类型&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;TCP 隧道&lt;/strong&gt;：将 NPS 的一个 TCP 监听端口转发到 NPC 可访问的目标，适用于 SSH、远程桌面、数据库等。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;UDP 隧道&lt;/strong&gt;：将 NPS 收到的 UDP 数据转发到 NPC 可访问的目标。服务端防火墙需要放行对应 UDP 端口。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;HTTP(S) 隧道&lt;/strong&gt;：按域名和 URL 路径把请求反向代理到内网站点，多个站点可以共享 NPS 的 HTTP/HTTPS 端口。域名仍需自行解析到 NPS。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;HTTP 正向代理&lt;/strong&gt;：浏览器或应用显式配置代理后，通过 NPC 所在网络访问应用指定的 HTTP/HTTPS 资源。它与发布固定内网站点的 HTTP(S) 隧道方向不同。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;SOCKS5 代理&lt;/strong&gt;：支持 SOCKS5 的应用通过 NPC 所在网络连接应用指定的目标。只有配置了该代理的应用会经过 NPS。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;私密代理&lt;/strong&gt;：访问端运行 NPC，并用隧道访问密钥连接内网 TCP 服务。业务流量由 NPS 中转，但不必为每条隧道开放单独的公网端口。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;P2P 连接&lt;/strong&gt;：NPS 协调 NAT 穿透，尝试让访问端与提供服务的 NPC 直接传输业务流量。能否直连取决于双方网络和 NAT 类型。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;文件服务&lt;/strong&gt;：由 NPC 将本地路径中的文件通过 HTTP 提供出来，不提供文件同步或备份能力。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;透明代理&lt;/strong&gt;：P2P 访问端的一种本地接入方式，不是 Web 中单独创建的隧道类型。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;具体配置参阅&lt;a href="/extend/example.html"&gt;配置示例&lt;/a&gt;&#10;。&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>