iodine: IP-over-DNS tunnel!
Okay, so iodine slipped off my mind yesterday while I was writing about DNS2TCP. I also forgot that iodine IS included in BackTrack! My bad.
So, getting back to the point, iodine lets you tunnel IPv4 data through a DNS server. This can be usable in different situations where internet access is firewalled, but DNS queries are allowed (mostly in your offices!). Okay! I heard you alright. You might ask me, what if the DNS port is blocked and you have some weird port open? Worry not! You can set up iodine to use that weird port! You can use -p on iodine to specify an alternate port (like -p 5353) and use for instance iptables (on Linux) to forward the traffic:
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j DNAT --to :5353
Cool eh? Wait till you hear this: The name iodine was chosen since it starts with IOD (IP Over DNS) and since iodine has atomic number 53, which happens to be the DNS port number!
Compared to other DNS tunnel implementations, iodine offers:
- Higher performance
- iodine uses the NULL type that allows the downstream data to be sent without encoding. Each DNS reply can contain nearly a kilobyte of payload data.
- Portability
- iodine runs on many different UNIX-like systems. Tunnels can be set up between two hosts no matter their endianness or operating system.
- Security
- iodine uses challenge-response login secured by MD5 hash. It also filters out any packets not coming from the IP used when logging in. DNS2TCP atleast does not support the security feature.
- Less setup
- iodine handles setting IP number on interfaces automatically, and up to 16 users can share one server at the same time. Packet size is automatically probed for maximum downstream throughput.
Also, what I have observed that DNS2TCP does not work most of the times as it’s MTU is greater than 512. 512 bytes is the limit for some DNS servers. You can use -m to modify this option too!
Windows users, make merry as this tool also has a working Windows port! Read more about this tool here.
Version 0.5.2 Released on 2009-06-01
You can download the Win32 version here and a tar.gz version here.
