libp2p
    Preparing search index...

    Module @libp2p/upnp-nat

    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:

    1. Your router must have UPnP support enabled
    2. Your libp2p node must be listening on a non-loopback IPv4 address
    3. You must not be double-NATed by your ISP
    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()
    }
    })

    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'
    ]
    })
    }
    })

    @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:

    1. Your router must have UPnP support enabled
    2. Your libp2p node must be listening on a non-loopback IPv4 address
    3. You must not be double-NATed by your ISP
    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()
    }
    })

    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.

    Interfaces

    MapPortOptions
    PMPOptions
    UPnPNAT
    UPnPNATClient
    UPnPNATComponents
    UPnPNATInit

    Functions

    uPnPNAT