Discover external IP addresses and NAT topologies using STUN (Simple Traversal of UDP Through Network Address Translators).
PyNAT follows RFC 3489, and is inspired by a similar program for Python 2.x called PyStun. PyNAT supports Python 2.7 and later.
Installation
PyNAT requires Python 2.7 or later.
From PyPI
Install PyNAT by running pip3 install pynat from the command line.
From GitHub
Clone or download the git repo, navigate to the directory, and run:
python3 setup.py sdist cd dist pip3 install pynat-<version>.tar.gz
Usage
To get information about the network topology and external IP/port used, run pynat:
Network type: UDP Firewall Internal address: 127.0.0.1:54320 External address: 127.0.0.1:54320
Run pynat -h or pynat --help for more options:
usage: pynat [-h] [--source_ip SOURCE_IP] [--source-port SOURCE_PORT]
[--stun-host STUN_HOST] [--stun-port STUN_PORT]
PyNAT v0.0.0 Discover external IP addresses and NAT topologies using STUN.
Copyright (C) 2018 Ariel Antonitis. Licensed under the MIT License.
optional arguments:
-h, --help show this help message and exit
--source_ip SOURCE_IP
The source IPv4/IPv6 address to bind to.
--source-port SOURCE_PORT
The source port to bind to.
--stun-host STUN_HOST
The STUN host to use for queries.
--stun-port STUN_PORT
The port of the STUN host to use for queries.
To use PyNAT inside a Python shell or project:
from pynat import get_ip_info topology, ext_ip, ext_port = get_ip_info()
To also get information about the internal IP, if unknown:
topology, ext_ip, ext_port, int_ip = get_ip_info(include_internal=True)
Development
PyNAT versioning functions on a MAJOR.MINOR.PATCH.[DEVELOP] model. Only stable, non development releases will be published to PyPI. Because PyNAT is still a beta project, the MAJOR increment will be 0. Minor increments represent new features. Patch increments represent problems fixed with existing features.
Metadata
Release files for pynat 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pynat-0.7.0.tar.gz | 7.1 kB | Without provenance | Details for pynat-0.7.0.tar.gz |
Release files / pynat-0.7.0.tar.gz
| Download URL | pynat-0.7.0.tar.gz |
|---|---|
| Size | 7.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
96168d472b7abc47c348cd4f6c4c1f13180bdc8c796918b1e98b4de9d0a59ede
|
|
BLAKE2b-256 checksum How to use checksums |
ffdbddaa52e3df42415231cbaf1d2f10593072cddf8317d743c5bb05fba2c2fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.7
|
Security for pynat 0.7.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.