iodine
IPv4-over-DNS tunneling server and client
7.9k stars 596 forks last commit first released ISC
Slowing down
No commits since 4 Sept 2025. Check the issue tracker before you rely on it.

iodine is a tunnel application that transports IPv4 traffic through DNS, using a client and server to create a virtual network interface and route IP packets over DNS queries and replies. It is commonly used in constrained networks where direct internet access is blocked but DNS is still permitted.
Key Features
- Client/server IP-over-DNS tunnel using a TUN/TAP virtual interface
- Works across multiple platforms (Linux, BSDs, macOS, and Windows)
- Supports multiple DNS record types for transport, with autodetection for best throughput
- Automatic probing of fragment/packet sizes to optimize performance
- Challenge-response login and basic peer filtering to reduce unauthorized injection
- Can fall back to raw UDP tunneling when direct UDP to port 53 is possible
Use Cases
- Remote connectivity from restricted networks that only allow DNS traffic
- Creating a temporary backchannel for administration and troubleshooting
- Running a second-layer VPN or SSH-over-tunnel for more secure transport
Limitations and Considerations
- Carries IPv4 payload only; tunneled traffic is not encrypted by default
- Throughput is constrained and often asymmetric, depending on DNS relays and policies
- Client and server typically need matching versions due to protocol compatibility
iodine is a pragmatic tool for establishing connectivity over DNS when other protocols are blocked, offering portability and performance-focused DNS transport choices. For security-sensitive scenarios, it is best used as a transport for an encrypted layer such as VPN or SSH.
Categories:
Tags:
Tech Stack:
Similar to iodine
OpenVPN
Open-source VPN daemon for TLS-based secure tunneling
OpenVPN is a widely used open-source VPN daemon providing TLS/SSL-based secure tunneling, flexible client-server and site-to-site modes, and cross-platform support.

Amnezia
Cross-platform client to deploy and use your own VPN server
Open-source VPN client for desktop and mobile that can automatically set up a private VPN server and connect using WireGuard, OpenVPN, IKEv2, and obfuscated modes.

ShellHub
Centralized SSH gateway for remote access and device management
Centralized SSH gateway to remotely manage Linux servers, containers and IoT devices via web or native SSH; offers key auth, firewall rules, audit logging and session recording.


Fail2Ban
Log-monitoring daemon that bans abusive IPs via firewall rules
Fail2Ban monitors service logs for repeated failures and automatically bans abusive IP addresses by updating firewall rules for a configurable time.

wg-easy
WireGuard VPN server with a web-based admin interface
Run a WireGuard VPN server with an easy web admin UI to manage clients, generate configs and QR codes, and monitor connections and traffic.

Unbound
Validating, recursive, caching DNS resolver
Standards-based validating recursive DNS resolver with DNSSEC validation, DNS-over-TLS/HTTPS support and configurable caching for privacy and performance.



