@achingbrain/nat-port-mapper (英语)
用 UPnP 和 NAT- PMP 绘制端口映射
关于
通过将公共端口映射到您计算机上的端口来启用NAT traversal 无论是 在线 或者说 NAT- PMP 软件。 。 。 .
示例 - UPnP NAT
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
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()
贷项
补充资料
- http://miniupnp.fr.fr/nat-pmp.html (英语)
- http://wikipedia.org/wiki/NAT Port Mapping Protocol. [永久失效連結] 互联网档案馆的存檔,存档日期2013-12-21
- http://tools.ietf.org/html/draft-cheshire-nat-pmp-03 (英语)
安装
$ npm i @achingbrain/nat-port-mapper
API 文档
许可证
根据其中任何一项颁发的许可证
- Apache 2.0, (英语:自由主义 编号 : http://www.apache.org/licenses/LICENSE-2.0 (中文(简体) )(中文(简体) )
- 麻省理工学院利马 编号 : http://opensource.org/licenses/MIT 互联网档案馆的存檔,存档日期2013-12-02(中文(简体) )
捐款
除非另有明确声明,Apache-2.0许可证中界定的、有意提交供列入作品的任何捐助,应具有上述双重许可证,不附加任何条件.