# NAT 穿透

NAT 穿透适合把家中、办公室或无公网入口机器上的服务接出来。公网服务器接收连接，再经隧道交给内网服务器，由内网服务器访问目标服务。

两端都选择面板中的 **服务器（worker）**。这里的“内网服务器”不是转发端点，也不要求它有可供外部直接连接的公网地址。

## 准备两端和目标服务

以把内网网页服务开放到 `入口域名:18080` 为例：

| 角色 | 示例与检查 |
| --- | --- |
| 公网服务器 | 已安装且在线的 worker，外部能到达它的业务端口和隧道端口 |
| 内网服务器 | 已安装且在线的 worker，能主动连接公网端的隧道地址 |
| 目标 | `127.0.0.1:8080`，这个地址由内网服务器访问 |
| 公网端口 | `18080`，供用户访问，与目标端口可以不同 |

先在内网服务器本机验证目标服务可用。目标是另一台局域网设备时，填写内网服务器实际能到达的地址，例如 `192.168.10.20:8080`。`127.0.0.1`始终指内网 worker 所在机器。

两台服务器与配置应在同一租户范围内，账号还需有对应管理权限与剩余 NAT 配额。

## 新建穿透配置

进入 **端口管理 → NAT穿透管理 → 添加NAT穿透配置**。

![NAT 穿透新建表单与高级选项](https://img.coderluny.com:444/uploads/zfc-tutorial-20261018-nat-form-f830a9fd3ebf.png)

1. **公网服务器**选择提供入口的 worker。
2. **内网服务器**选择能访问目标服务的 worker。
3. **公网端口**填写 `18080`。
4. **目标**填写 `127.0.0.1:8080`，不要在这里填公网入口地址。
5. 展开 **高级选项**，核对下面三项后保存。

| 高级字段 | 含义 |
| --- | --- |
| NAT公网端口 | 内网端连接公网端时使用的隧道端口；有外部端口映射时填写映射后的端口 |
| NAT绑定端口 | 公网服务器本机实际监听的隧道端口 |
| 监听地址 | 公网业务监听的绑定地址；留空使用默认双栈监听，指定地址必须属于该机器 |

**当前新建接口中，NAT公网端口留空默认是 `29123`，NAT绑定端口留空跟随它。** 表单提示仍写“自动生成”，不要据此认为每条规则会随机得到不同端口。若显式修改，务必核对安全组、端口映射及已有监听。

公网端口用于业务，NAT 端口用于两端隧道，两者不能混为一项。多个穿透配置可以共用内部 NAT 监听；不要为了每条业务规则机械地分配一个新的隧道端口。

## 保存后逐段验证

1. 确认公网和内网 worker 都在线，配置已下发。
2. 检查公网机器的业务端口和 NAT 绑定端口是否成功监听。
3. 从内网机器检查公网隧道地址可达；有映射时核对 NAT公网端口与本机绑定端口的对应关系。
4. 从面板之外的网络访问 `入口域名:18080`，检查网页实际响应。
5. 若使用 UDP 服务，另外发送真实 UDP 请求并检查响应；TCP 成功不能证明 UDP 已放行。

云安全组、系统防火墙和上游 NAT 的映射都需要匹配实际使用的协议。面板生成入口地址，也不代表外部网络已经放行。

## 排查与维护

| 现象 | 检查位置 |
| --- | --- |
| 内网 worker 离线 | 先恢复其控制连接；见[节点离线排查](/docs/faq/#服务器一直离线) |
| 目标连接被拒绝 | 内网服务进程、绑定地址及目标端口 |
| 公网端口被占用 | 同机其他业务、已有普通转发和 NAT 配置 |
| 隧道不能建立 | NAT 公网／绑定端口、外部映射、两端网络与日志 |
| 域名不通而 IP 可用 | DNS 记录、IPv4 / IPv6 与缓存；需要自动同步时见[DDNS](/docs/dynamic-dns/) |

编辑配置可能重建监听或隧道，已有连接需要重连。删除规则前先确认谁在使用该公网入口；删除后还要检查节点是否已收到变更。

需要整网互通或把设备加入同一虚拟网段时，继续阅读 [WireGuard 组网](/docs/wireguard-network/)。