# 检查 npc.conf 中的隧道是否在运行

> 对比本地 npc.conf 与 NPS 上的规则状态并识别未运行的隧道

---

LLMS 索引： [llms.txt](/llms.txt)

---

NPC 的 `status` 命令用本地 `npc.conf` 连接 NPS，然后逐项显示配置文件中的隧道是否已在 NPS 上创建或运行。它适合排查“NPC 已启动，但某条配置没有生效”的问题。

## 运行前提

- NPC 使用 `npc.conf` 模式启动，而不是只传入 `-server` 和 `-vkey`。
- 配置文件中的 `[common]` 包含正确的 `server_addr`、`vkey` 和 `conn_type`。
- 运行中的配置模式 NPC 至少成功连接过一次，并写入状态命令所需的临时验证信息。

在 NPC 所在主机执行：

```shell
./npc status -config=/etc/nps/npc.conf
```

Windows 可以使用：

```powershell
./npc.exe status -config=C:\nps\conf\npc.conf
```

`-config` 后必须是实际文件路径。命令读取配置、连接 NPS，输出结果后立即退出，不会启动一个新的常驻 NPC。

## 读取输出

每个条目使用 `npc.conf` 中的段名，例如：

```text
web ok
ssh ok
dns not running
```

| 结果          | 含义                                                  |
| ------------- | ----------------------------------------------------- |
| `ok`          | HTTP(S) 域名规则已存在，或普通隧道已在 NPS 运行列表中 |
| `not running` | NPS 未找到对应规则，或普通隧道未成功启动              |

端口范围会展开为多个条目。例如 `[database]` 使用 `server_port=6000-6002` 时，输出名称为 `database_6000`、`database_6001` 和 `database_6002`。

`ok` 不等于业务端到端检查通过。对 HTTP(S) 规则，它只确认规则存在；对其他隧道，它也不会连接 `target_addr` 或从公网访问服务。状态检查后仍应使用 `curl`、`nc` 或业务客户端完成实际请求。

## 常见失败

- 连接或验证失败：检查 `[common]` 中的地址、端口、`vkey`、TCP/KCP 类型和防火墙。
- 找不到临时验证信息：先让配置模式 NPC 成功连接 NPS，再在同一主机上运行状态检查。
- 多个配置实例互相影响：当前状态命令共用一个临时验证文件，同一主机上多个 NPC 实例可能覆盖它。此时应优先根据 Web 管理中的隧道状态和 NPC 日志排查。
- 只有个别条目为 `not running`：查看 NPC 启动日志，重点检查端口占用、端口允许列表、重复域名或重复隧道密钥。

---

反链：

- [使用说明](/client/use.html)
