# @achingbrain/nat-port-mapper 中文文档

规范地址：https://npmcn.com/package/%40achingbrain/nat-port-mapper/

版本：4\.0\.5
npm 元数据更新时间：2025-10-14T10:05:59.716Z
中文译文更新时间：2026-11-05T18:00:59.721Z
软件包许可：Apache-2\.0 OR MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40achingbrain/nat-port-mapper
原文对照：https://npmcn.com/package/%40achingbrain/nat-port-mapper/?lang=original
项目主页：https://github.com/achingbrain/nat-port-mapper#readme
源码仓库：https://github.com/achingbrain/nat-port-mapper

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：175 kB，73 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：9 个
- 首次发布：2022-02-27T08:39:58.723Z
- 最新版本发布：2025-10-14T10:05:59.205Z
- 近 30 天下载量：111157（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：40（近 12 个月 0 个）

## 中文简介

用 UPnP 和 NAT- PMP 绘制端口映射

## 安装

```sh
npm install @achingbrain/nat-port-mapper
```

也可以使用：`pnpm add @achingbrain/nat-port-mapper`、`yarn add @achingbrain/nat-port-mapper`、`bun add @achingbrain/nat-port-mapper`

## README

# @achingbrain/nat-port-mapper (英语)

[![codecov](https://img.shields.io/codecov/c/github/achingbrain/nat-port-mapper.svg?style=flat-square)](https://codecov.io/gh/achingbrain/nat-port-mapper) [![CI](https://img.shields.io/github/actions/workflow/status/achingbrain/nat-port-mapper/js-test-and-release.yml?branch=main&style=flat-square)](https://github.com/achingbrain/nat-port-mapper/actions/workflows/js-test-and-release.yml?query=branch%3Amain)

> 用 UPnP 和 NAT- PMP 绘制端口映射

# 关于

通过将公共端口映射到您计算机上的端口来启用NAT traversal 无论是 [在线](https://en.wikipedia.org/wiki/Universal_Plug_and_Play) 或者说 [NAT- PMP 软件](https://en.wikipedia.org/wiki/NAT_Port_Mapping_Protocol)。 。 。 .

## 示例 - UPnP NAT

```TypeScript
import { upnpNat } from '@achingbrain/nat-port-mapper'

const client = upnpNat()

for await (const gateway of client.findGateways({ signal: AbortSignal.timeout(10000) })) {
  // Map public port 1000 to private port 1000 with TCP
  await gateway.map(1000, '192.168.1.123', {
    protocol: 'tcp'
  })

  // Map port 3000 to any available host name
  for await (const mapping of gateway.mapAll(3000, {
    protocol: 'udp'
  })) {
    console.info(`mapped ${mapping.internalHost}:${mapping.internalPort} to ${mapping.externalHost}:${mapping.externalPort}`)
  }

  // Unmap previously mapped private port 1000
  await gateway.unmap(1000)

  // Get external IP
  const externalIp = await gateway.externalIp()

  console.log('External IP:', externalIp)

  // Unmap all mapped ports and cancel any in-flight network operations
  await gateway.stop()
}
```

## 示例 - NAT- PMP

```TypeScript
import { pmpNat } from '@achingbrain/nat-port-mapper'
import { gateway4sync } from 'default-gateway'

const gateway = pmpNat(gateway4sync().gateway)

// Map public port 1000 to private port 1000 with TCP
await gateway.map(1000, '192.168.1.123', {
  protocol: 'tcp'
})

// Map public port 2000 to private port 3000 with UDP
await gateway.map(3000, '192.168.1.123', {
  externalPort: 2000,
  protocol: 'udp'
})

// Unmap previously mapped private port 1000
await gateway.unmap(1000)

// Get external IP
const externalIp = await gateway.externalIp()

console.log('External IP:', externalIp)

// Unmap all mapped ports and cancel any in-flight network operations
await gateway.stop()
```

## 贷项

依据 [alxhotel/nat-api 数据](https://github.com/alxhotel/nat-api)

## 补充资料

-   [http://miniupnp.fr.fr/nat-pmp.html (英语)](http://miniupnp.free.fr/nat-pmp.html)
-   [http://wikipedia.org/wiki/NAT Port Mapping Protocol. \[永久失效連結\] 互联网档案馆的存檔,存档日期2013-12-21](http://wikipedia.org/wiki/NAT_Port_Mapping_Protocol)
-   [http://tools.ietf.org/html/draft-cheshire-nat-pmp-03 (英语)](http://tools.ietf.org/html/draft-cheshire-nat-pmp-03)

# 安装

```console
$ npm i @achingbrain/nat-port-mapper
```

# API 文档

-   [https://achingbrain.github.io/nat-port-mapper (中文(简体) )](https://achingbrain.github.io/nat-port-mapper)

# 许可证

根据其中任何一项颁发的许可证

-   Apache 2.0, (英语:[自由主义](https://github.com/achingbrain/nat-port-mapper/LICENSE-APACHE) 编号 : [http://www.apache.org/licenses/LICENSE-2.0 (中文(简体) )](http://www.apache.org/licenses/LICENSE-2.0)(中文(简体) )
-   麻省理工学院[利马](https://github.com/achingbrain/nat-port-mapper/LICENSE-MIT) 编号 : [http://opensource.org/licenses/MIT 互联网档案馆的存檔,存档日期2013-12-02](http://opensource.org/licenses/MIT)(中文(简体) )

# 捐款

除非另有明确声明,Apache-2.0许可证中界定的、有意提交供列入作品的任何捐助,应具有上述双重许可证,不附加任何条件.

## 常见问题

### @achingbrain/nat-port-mapper 是什么？

用 UPnP 和 NAT- PMP 绘制端口映射

### 如何安装 @achingbrain/nat-port-mapper？

在项目目录运行 npm install @achingbrain/nat-port-mapper，或使用 pnpm add / yarn add / bun add。

### @achingbrain/nat-port-mapper 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @achingbrain/nat-port-mapper 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @achingbrain/nat-port-mapper 可以商用吗？

@achingbrain/nat-port-mapper 使用 Apache-2\.0 OR MIT 许可。可在 Apache-2\.0、MIT 中任选其一遵守。选择 Apache-2\.0 时，宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @achingbrain/nat-port-mapper 的下载量有多少？

根据 npm 官方下载统计，@achingbrain/nat-port-mapper 在 2026/10/05 – 2026/11/03 这 30 天内被下载 111,157 次，日均约 3,705 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @achingbrain/nat-port-mapper 还在维护吗？

最新版本 4\.0\.5 发布于 2025/10/14（1\.1 年前）；至今共发布 40 个版本，其中过去 12 个月发布了 0 个；首次发布于 2022/02/27。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

