🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

@libp2p/upnp-nat

Package Overview
Dependencies
Maintainers
6
Versions
544
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@libp2p/upnp-nat

UPnP NAT hole punching

3.1.17
latest
Source
npm
Version published
Weekly downloads
9.3K
13.03%
Maintainers
6
Weekly downloads
 
Created
Source

@libp2p/upnp-nat

libp2p.io Discuss codecov CI

UPnP NAT hole punching

About

The service exported by this module attempts to configure NAT hole punching via UPnP.

This will make your node publicly accessible from the internet.

For this to work there are some prerequisites:

  • Your router must have UPnP support enabled
  • Your libp2p node must be listening on a non-loopback IPv4 address
  • You must not be double-NATed by your ISP

Example

import { createLibp2p } from 'libp2p'
import { tcp } from '@libp2p/tcp'
import { uPnPNAT } from '@libp2p/upnp-nat'

const node = await createLibp2p({
  addresses: {
    listen: [
      '/ip4/0.0.0.0/tcp/0'
    ]
  },
  transports: [
    tcp()
  ],
  services: {
    upnpNAT: uPnPNAT()
  }
})

Example - Manually specifying gateways and external ports

Some ISP-provided routers are under powered and may require rebooting before they will respond to SSDP M-SEARCH messages.

You can manually specify your external address and/or gateways, though note that those gateways will still need to have UPnP enabled in order for libp2p to configure mapping of external ports (for IPv4) and/or opening pinholes in the firewall (for IPv6).

import { createLibp2p } from 'libp2p'
import { tcp } from '@libp2p/tcp'
import { uPnPNAT } from '@libp2p/upnp-nat'

const node = await createLibp2p({
  addresses: {
    listen: [
      '/ip4/0.0.0.0/tcp/0'
    ]
  },
  transports: [
    tcp()
  ],
  services: {
    upnpNAT: uPnPNAT({
      // manually specify external address - this will normally be an IPv4
      // address that the router is performing NAT with
      externalAddress: '92.137.164.96',
      gateways: [
        // an IPv4 gateway
        'http://192.168.1.1:8080/path/to/descriptor.xml',
        // an IPv6 gateway
        'http://[xx:xx:xx:xx]:8080/path/to/descriptor.xml'
      ]
    })
  }
})

Install

$ npm i @libp2p/upnp-nat

API Docs

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Keywords

IPFS

FAQs

Package last updated on 03 Jun 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts