yarrick/iodine

Official git repo for iodine dns tunnel

View on GitHub ↗Jump to charts ↓Open shareable report →

yarrick/iodine has 8k+ stars and 550+ forks on GitHub, is written in C, and was last pushed on Oct 11, 2026. Data as of . Signed-in members get hourly updates — create a free account.

Summary Information

Updated 47 minutes ago
Added to GitGenius on September 13th, 2026
Created on February 4th, 2012
Open Issues & Pull Requests: 13 (+0)
GitHub issues: Enabled
Number of forks: 599
Total Stargazers: 8,002 (+0)
Total Subscribers: 123 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 3.0 days
Mean response time: 135.0 days
90th percentile: 406.2 days
Tracked items: 23

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 6
New in 7 days: 0
Closed in 7 days: 2
Avg open age: 740 days
Stale 30+ days: 4
Stale 90+ days: 4

Recent activity

Opened in 7 days: 0
Closed in 7 days: 1
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

Sign in to see which issues are moving.
Sign in

Detailed Description

Iodine is a DNS tunnel that encapsulates IPv4 traffic within DNS queries and responses, allowing network access through firewalled connections where only DNS is permitted.

The tool solves the problem of accessing networks behind restrictive firewalls by tunneling data through DNS servers, which are rarely blocked. It works by encoding IPv4 packets into DNS domain name queries sent to a server you control, then decoding the responses back into network traffic. This approach exploits the fact that DNS queries typically pass through firewalls even when other protocols are blocked. The software consists of a server component that listens for these encoded DNS queries and a client component that encodes outgoing traffic.

Iodine suits situations where you control a domain and have a server with a public IP address, and where conventional network access is restricted but DNS queries are allowed. The quickstart demonstrates testing within a LAN, but production use requires delegating a subdomain to your iodined server through your DNS provider. The tool requires exact protocol version matching between server and client, so both sides must run the same version. If you already run DNS services on your server, iodine can forward requests to another port, though this is not recommended for production. For dynamic IP scenarios, you can point the delegation to a dynamic DNS provider instead.

Development activity shows consistent maintenance with fixes and improvements applied over time. The project includes automated testing infrastructure via a test suite that can be run with make test, requiring the check library. Optional platform-specific features for Linux, including SELinux and systemd support, are automatically detected and compiled when their headers are present. The codebase is written in C with a straightforward build system using make, and documentation is provided through manual pages alongside the binaries.