Iodine is a DNS tunneling tool that encapsulates IPv4 traffic inside DNS queries and responses, enabling network connectivity through restrictive firewalls that only permit DNS traffic. It operates as a client-server system where the server listens for DNS queries on a delegated subdomain and creates virtual tunnel interfaces for clients, while the client establishes connections and routes traffic over the tunnel.
The project distinguishes itself through several key capabilities: it supports up to 16 simultaneous users on a single server with automatic IP assignment, secures tunnel connections using an MD5-based challenge-response authentication handshake, and optimizes downstream throughput up to 1 Mbit/s by using compressed payloads delivered via NULL-type DNS replies. It also includes automatic packet-size probing to maximize throughput without fragmentation, a raw UDP fallback mechanism when DNS queries are blocked, and the ability to change the client's default gateway to route all traffic through the tunnel.
The documentation covers server administration tasks such as verifying DNS delegation, hosting the server, and managing multi-user access, as well as client-side connection setup and throughput optimization.