Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

60 Commits

Repository files navigation

nat-api

NPM VersionBuild StatusDependency StatusStandard - Javascript Style Guide

Fast port mapping with UPnP and NAT-PMP in NodeJS.

Install

Required: NodeJS >= 10

npm install nat-api

Usage

constNatAPI=require('nat-api')constclient=newNatAPI()// Map public port 1000 to private port 1000 with UDP and TCPclient.map(1000,function(err){if(err)returnconsole.log('Error',err)console.log('Port mapped!')})// Map public port 2000 to private port 3000 with UDP and TCPclient.map(2000,3000,function(err){if(err)returnconsole.log('Error',err)console.log('Port mapped!')})// Map public port 4000 to private port 5000 with only UDPclient.map({publicPort: 4000,privatePort: 5000,ttl: 1800,protocol: 'UDP'},function(err){if(err)returnconsole.log('Error',err)console.log('Port mapped!')})// Unmap port public and private port 1000 with UDP and TCPclient.unmap(1000,function(err){if(err)returnconsole.log('Error',err)console.log('Port unmapped!')})// Get external IPclient.externalIp(function(err,ip){if(err)returnconsole.log('Error',err)console.log('External IP:',ip)})// Destroy objectclient.destroy()

API

client = new NatAPI([opts])

Create a new nat-api instance.

If opts is specified, then the default options (shown below) will be overridden.

{ttl: 1200,// Time to live of each port mapping in seconds (default: 1200)autoUpdate: true,// Refresh all the port mapping to keep them from expiring (default: true)gateway: '192.168.1.1',// Default gateway (default: null)enablePMP: false// Enable PMP (default: false)}

If gateway is not set, then nat-api will get the default gateway based on the current network interface.

client.map(port, [callback])

  • port: Public and private ports
  • callback

This method will use port por mapping the public port to the same private port.

It uses the default TTL and creates a map for UDP and TCP.

client.map(publicPort, privatePort, [callback])

  • publicPort: Public port
  • privatePort: Private port
  • callback

This is another quick way of mapping publciPort to privatePort with any protocol (UDP and TCP).

client.map(opts, [callback])

  • opts:
  • publicPort: Public port
  • privatePort: Private port
  • protocol: Port protocol (UDP, TCP or null for both)
  • ttl: Overwrite the default TTL in seconds.
  • description: Description of the port mapping
  • callback

client.unmap(port, [callback])

Unmap any port that has the public port or private port equal to port.

client.unmap(publicPort, privatePort, [callback])

Unmap any port that has the public port or private port equal to publicPort and privatePort, respectively.

client.unmap(opts, [callback])

Unmap any port that contains the parameters provided in opts.

client.externalIp([callback])

  • callback(err, ip)

Get the external IP address.

client.destroy([callback])

Destroy the client. Unmaps all the ports open with nat-api and cleans up large data structure resources.

Additional Information

License

MIT. Copyright (c) Alex

About

↔️ Fast port mapping with UPnP and NAT-PMP

Topics

Resources

Stars

24 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages