Stunner: Quickly Detect Your NAT Type with Multi-Server STUN
This repository profile is provided by osrepos.com, an open source repository discovery platform.

Summary
Stunner is an efficient Go CLI tool designed to accurately detect your Network Address Translation (NAT) type. By sending STUN Binding Requests to multiple servers, it classifies your NAT as Full Cone, Symmetric, or Restricted, providing crucial insights into your network environment. This helps users understand network behavior and assess the feasibility of techniques like hole punching.
Repository Information
Topics
Click on any tag to explore related repositories
Use at your own risk
OSRepos shares public repositories for knowledge and discovery only. Any installation, execution, configuration, or use of code from these repositories is the user's own responsibility. Always review the repository, source code, dependencies, licenses, and security implications before running or installing anything. OSRepos is not responsible for issues, damages, or losses resulting from third-party repositories.
Introduction
Stunner is a lightweight yet powerful Go command-line interface (CLI) tool that simplifies the complex task of Network Address Translation (NAT) type detection. It operates by sending STUN Binding Requests to multiple STUN servers, including Tailscale DERP servers, to accurately determine your NAT classification. This process helps identify whether you are behind a Full Cone, Symmetric, Restricted, or other NAT type, offering valuable insights into your network's behavior.
Key features of Stunner include:
- Multi-Server STUN: Queries more than one server to enhance NAT type detection accuracy.
- Dynamic DERP Fetching: Automatically fetches and uses two random Tailscale DERP servers if no specific STUN servers are provided.
- NAT Classification: Provides a clear overall NAT result, labeling it with types like "Open Internet," "Full Cone," or "Symmetric NAT," along with an "Easy" or "Hard" rating for hole punching.
- Verbose Debug Logging: An optional
--debugflag allows for detailed tracing of each request and response. - Tabular Output: Presents results in an easy-to-read table format.
Installation
Stunner offers several convenient installation methods:
OS X
Install using Homebrew:
brew install jaxxstorm/tap/stunner
Linux
Download the binary from the releases page:
VERSION=v0.0.10
curl -L "https://github.com/jaxxstorm/stunner/releases/download/${VERSION}/stunner-${VERSION}-linux-amd64.tar.gz" | tar -xz
./stunner --version
Using Go
If you have Go installed, you can build and install it directly:
go install github.com/jaxxstorm/stunner@latest
The resulting binary will be located in your $GOPATH/bin directory.
Examples
Stunner is straightforward to use. Here are some common usage examples:
Let Stunner fetch DERP servers automatically:
./stunner --debug
Supply your own STUN servers:
./stunner --stun-server=stun1.l.google.com --stun-server=stun2.l.google.com
When you run Stunner, it performs the following steps:
- Binds a local UDP socket on the specified IP/port.
- Sends STUN Binding Requests to each configured server.
- Parses the responses, capturing your external IP/port.
- Compares the external ports from each server to classify your NAT type.
- Prints the results in a clear, tabular format.
Why Use Stunner?
Stunner provides a crucial utility for anyone dealing with network configurations, especially in distributed or peer-to-peer environments. Its multi-server approach significantly enhances the accuracy of NAT type detection, moving beyond the limitations of single-server tests. This precise classification, coupled with an "Easy/Hard" rating for hole punching, empowers developers and network administrators to better understand network traversal challenges. Whether you're troubleshooting connectivity issues or designing robust P2P applications, Stunner offers clear, actionable insights into your network's NAT behavior.
Links
- GitHub Repository: jaxxstorm/stunner
Related repositories
Similar repositories that may be relevant next.

Clash Party: An Electron-Based GUI for Mihomo Proxy Management
February 26, 2026
Clash Party is an open-source, Electron-based graphical user interface (GUI) designed for Mihomo, a powerful proxy core. It offers a user-friendly and feature-rich experience for managing network proxy configurations. With robust capabilities and deep integration with tools like Sub-Store, it simplifies complex proxy setups.

doggo: A Modern Command-line DNS Client for Humans
February 10, 2026
doggo is a powerful and user-friendly command-line DNS client, built with Golang. It aims to simplify DNS lookups and troubleshooting by providing clear, human-readable output, unlike traditional tools. Inspired by the Rust 'dog' client, doggo extends its capabilities with a focus on modern DNS protocols and ease of use.
Source repository
Open the original repository on GitHub.