MikeWang000000/Natter
MikeWang000000/Natter has 2,214 GitHub stars and 179 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-07 22:13 UTC. Last push 2025-10-25.
Expose your TCP/UDP port behind full-cone NAT to the Internet.
Measured star growth
- in 24h
- +1
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalNatter (v2)
Expose your port behind full-cone NAT to the Internet.
Quick start
python3 natter.py
Or, using Docker:
docker run --net=host nattertool/natter
2023-11-01 01:00:08 [I] Natter
2023-11-01 01:00:08 [I] Tips: Use `--help` to see help messages
2023-11-01 01:00:12 [I]
2023-11-01 01:00:12 [I] tcp://192.168.1.100:13483 <--Natter--> tcp://203.0.113.10:14500
2023-11-01 01:00:12 [I]
2023-11-01 01:00:12 [I] Test mode in on.
2023-11-01 01:00:12 [I] Please check [ http://203.0.113.10:14500 ]
2023-11-01 01:00:12 [I]
2023-11-01 01:00:12 [I] LAN > 192.168.1.100:13483 [ OPEN ]
2023-11-01 01:00:12 [I] LAN > 192.168.1.100:13483 [ OPEN ]
2023-11-01 01:00:12 [I] LAN > 203.0.113.10:14500 [ OPEN ]
2023-11-01 01:00:13 [I] WAN > 203.0.113.10:14500 [ OPEN ]
2023-11-01 01:00:13 [I]
In the example above, 203.0.113.10 is your public IP address outside the full-cone NAT. Natter opened TCP port 203.0.113.10:14500 for testing.
Visit http://203.0.113.10:14500 outside your LAN, you will see the web page:
It works!
--------
Natter
Usage
usage: natter.py [--version] [--help] [-v] [-q] [-u] [-U] [-k <interval>]
[-s <address>] [-h <address>] [-e <path>] [-i <interface>]
[-b <port>] [-m <method>] [-t <address>] [-p <port>] [-r]
Expose your port behind full-cone NAT to the Internet.
options:
--version, -V show the version of Natter and exit
--help show this help message and exit
-v verbose mode, printing debug messages
-q exit when mapped address is changed
-u UDP mode
-U enable UPnP/IGD discovery
-k <interval> seconds between each keep-alive
-s <address> hostname or address to STUN server
-h <address> hostname or address to keep-alive server
-e <path> script path for notifying mapped address
bind options:
-i <interface> network interface name or IP to bind
-b <port> port number to bind
forward options:
-m <method> forward method, common values are 'iptables', 'nftables',
'socat', 'gost' and 'socket'
-t <address> IP address of forward target
-p <port> port number of forward target
-r keep retrying until the port of forward target is open
Usage for Docker
Read natter-docker for details.
Use cases
Expose local port 80 to the Internet, using built-in forward method:
python3 natter.py -p 80
Expose local port 80 to the Internet, using iptables kernel forward method (requires root permission):
sudo python3 natter.py -m iptables -p 80
Dependencies
- Python 2.7 (minimum), >= 3.6 (recommended)
- No third-party modules are required.
License
GNU General Public License v3.0
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
560,836 starspublic-apis/public-apis
A collective list of free APIs
497,079 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
441,506 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,157 stars