STUNTMAN is an open source implementation of the STUN protocol (Session Traversal Utilities for NAT) as specified in RFCs 5389, 5769, and 5780. It also includes backwards compatibility for RFC 3489. Source code distribution includes a high performance STUN server, a client application, and a set of code libraries for implementing a STUN client within an application. The current C++ code base compiles using gcc/g++ for most UNIX distributions including Linux, MacOS, BSD, and Solaris. A Windows port via Cygwin is available now. Stuntman is open source software distributed under the Apache 2.0 License.
Latest stable release: version 1.2.16
You may also peruse the source files individually, access previous versions, file bugs, and find other resources at the project's GitHub site. Once you download and unpack the source code package, open the README file included in the root of the distribution for instructions on how to compile. You may need to download the Boost library prior to compiling.
Public STUN server
A STUN service hosting the Stuntman code is being run at stun.stunprotocol.org (UDP and TCP ports 3478). To make a STUN binding request and see your public IP addresses, you can click the button below for a quick test.
We have a mailing list for this project at email@example.com. You may join this group or peruse previously posted messages by clicking here.
- WebRTC ready
- UDP and TCP modes with either IPv4 or IPv6
- Flexible "basic" mode supports running on a server with only 1 IP. Allows for responding to port mapping (binding) requests
- Extended "full" mode - supports running on servers with two IP address to facilitate NAT behavior detection in addition to binding requests
- Stun code library and client application implement all NAT detection tests specified in RFC 5780
- Special support for running on Amazon EC2 or similar cloud hosting environment.
Related Software and Protocols
STUN by itself does not solve the NAT Traversal problem for P2P connectivity issues. There are many other technologies to explore when implementing a P2P connectivity solution in software.
- ICE - Interactive Connectivity Establishment. A protocol for establishing direct connectivity once STUN or TURN address candidates are obtained.
- TURN - Traversal Using Relays around NAT. A relay solution and protocol for when direct connectivity can not be established. Can be used in conjunction or seperate from STUN.
- libnice - libnice is an open-source C source code library that implements the ICE protocol for establishing P2P connectivity.
- libjingle - Jingle is an ICE like open-source code base implemented by Google.
- JSTUN - JSTUN is an implementation of STUN using Java implemented by Thomas King. JSTUN client libraries are compatible with STUNTMAN server.
- C# Stun Client code - Implemented by by Ivar Lumi. Compatible with STUNTMAN.
- PJNATH - An implementation of ICE for multiple platforms
- WebRTC - ICE data and video conferencing in web browsers
Author: John Selbie