2 iodine - http://code.kryo.se/iodine
4 ***********************************
8 2014-06-16: 0.7.0 "Kryoptonite"
9 - Partial IPv6 support (#107)
10 Client can connect to iodined through an relaying IPv6
11 nameserver. Server only supports IPv4 for now.
12 Traffic inside tunnel is IPv4.
13 - Add socket activation for systemd, by Michael Scherer.
14 - Add automated lookup of external ip (via -n auto).
15 - Bugfix for OS X (Can't assign requested address)
16 - Fix DNS tunneling bug caused by uninitialized variable, #94
17 - Handle spaces when entering password interactively, fixes #93.
19 - Add -R option to set OpenBSD routing domain for the DNS socket.
20 Patch by laurent at gouloum fr, fixes #95.
21 - Add android patches and makefile, from Marcel Bokhorst, fixes #105.
22 - Added missing break in iodine.c, by Pavel Pergamenshchik, #108.
23 - A number of minor patches from Frank Denis, Gregor Herrmann and
25 - Testcase compilation fixes for OS X and FreeBSD
26 - Do not let sockets be inherited by sub-processes, fixes #99.
27 - Add unspecified RR type (called PRIVATE; id 65399, in private use
28 range). For servers with RFC3597 support. Fixes #97.
29 - Fix authentication bypass vulnerability; found by Oscar Reparaz.
31 2010-02-06: 0.6.0-rc1 "Hotspotify"
32 - Fixed tunnel not working on Windows.
33 - Any device name is now supported on Windows, fixes #47.
34 - Multiple installed TAP32 interfaces are now supported, fixes #46.
35 - Return nonzero if tunnel fails to open, fixes #62.
36 - Support for setting a SELinux context, based on patch by
37 Sebastien Raveau. Sample context file in doc/iodine.te
38 - Allow listen port and DNS forward port to be the same if listen IP
39 does not include localhost.
40 - The client will now exit if configuring IP or MTU fails.
41 - The starting cache miss value is randomized at startup, fixes #65.
42 - Raw UDP mode added. If the iodined server is reachable directly,
43 packets can be sent to it without DNS encoding. Fixes #36.
44 - Do not overwrite users CC/CFLAGS/LDFLAGS, only add to them.
45 - Added -F option to write pidfile, based on patch from
46 misc at mandriva.org. Fixes #70.
47 - Allow password to be set via environment variable, fixes #77.
48 Based on patch by logix.
49 - Client now prints server tunnel IP, fixes #78. Patch by logix.
50 - Fix build error on Mac OS X 10.6, patch by G. Rischard. #79.
51 - Added support for CNAME/TXT/A/MX query types, fixes #75.
52 Patch by Anne Bezemer, merge help by logix.
53 - Merged low-latency patch from Anne Bezemer, fixes #76.
54 - Resolve client nameserver argument if given as hostname, fixes #82.
55 - Open log before chroot, fixes #86: logging on FreeBSD.
56 - Merged big bugfix patch from Anne Bezemer, #88.
58 2009-06-01: 0.5.2 "WifiFree"
59 - Fixed client segfault on OS X, #57
60 - Added check that nameserver lookup was successful
61 - Fixed ENOTSOCK error on OS X and FreeBSD, #58.
63 2009-03-21: 0.5.1 "Boringo"
64 - Added initial Windows support, fixes #43.
65 - Added length check of autoprobe responses
66 - Refactored and added unit tests
67 - Added syslog logging for iodined on version and login packets
68 - Fixed segfault when encoding just one block, fixes #51.
69 The normal code was never affected by this.
70 - Added win32 code to read DNS server from system, fixes #45.
71 - Disabled password echo on win32, fixes #44.
72 - Fix encoding error making all autoprobing > 1024 bytes fail, #52.
73 - Increase default interface MTU to 1200.
74 - Fix autoprobing error making every third probe fail, set IP flag
75 Dont-Fragment where supported. Fixes #54.
76 - Added TAP32 version 0901 as accepted (#53).
78 2009-01-23: 0.5.0 "iPassed"
79 - Fixed segfault in server when sending version reject.
80 - Applied patch to make iodine build on BeOS R5-BONE and Haiku,
81 from Francois Revol. Still work to do to get tun device working.
82 - Added capability to forward DNS queries outside tunnel domain to
83 a nameserver on localhost. Use -b port to enable, fixes #31.
84 - iodined now replies to NS request on its own domain, fixes issue #33.
85 The destination IP address is sent as reply. Use -n to specify
86 a specific IP address to return (if behind NAT etc).
87 - Upstream data is now Base64 encoded if relay server preserves case and
88 supports the plus (+) character in domain names, fixes #16.
89 - Fixed problem in client when DNS trans. ID has highest bit set (#37)
90 - IP addresses are now assigned within the netmask, so iodined can
91 use any address for itself, fixes #28.
92 - Netmask size is now adjustable. Setting a small net will reduce the
93 number of users. Use x.x.x.x/n notation on iodined tunnel ip.
95 - Downstream data is now fragmented, and the fragment size is auto-
96 probed after login. Fixes #7. It only took a few years :)
97 - Enhanced the checks that validates incoming packets
98 - Fixed endless loop in fragment size autodetection, #39.
99 - Fixed broken hostname dot placing with specific lengths, #40.
101 2008-08-06: 0.4.2 "Opened Zone"
102 - Applied a few small patches from Maxim Bourmistrov and Gregor Herrmann
103 - Applied a patch for not creating and configuring the tun interface,
104 Debian bug #477692 by Vincent Bernat, controlled by -s switch
105 - Applied a security patch from Andrew Griffiths, use setgroups() to
106 limit the groups of the user
107 - Applied a patch to make iodine build on (Open)Solaris, from Albert Lee
108 Needs TUN/TAP driver http://www.whiteboard.ne.jp/~admin2/tuntap/
109 Still needs more code in tun.c for opening/closing the device
110 - Added option in server (-c) to disable IP/port checking on packets,
111 will hopefully help when server is behind NAT
112 - Fixed bug #21, now only IP address part of each packet is checked.
113 Should remove the need for the -c option and also work with
114 bugfixed DNS servers worldwide.
115 - Added -D option on server to enable debugging. Debug level 1 now
116 prints info about each RX/TX datagram.
118 2007-11-30: 0.4.1 "Tea Online"
119 - Introduced encoding API
120 - Switched to new Base32 implementation
121 - Added Base64 implementation that only uses 63 chars (not used yet)
122 - Refined 'install' make target and use $(MAKE) for recursive calls
123 - All received error messages (RCODE field) are echoed
124 - Top domain limited to 128 chars
125 - Case preservation check sent after login to decide codec
126 - Fixed crash on incoming NULL query in server with bad top domain
127 - /etc/resolv.conf is consulted if no nameserver is given on commandline
128 - Applied patch from Matthew W. S. Bell (Detach before chroot/dropping priv)
130 2007-03-25: 0.4.0 "Run Home"
131 - Added multiuser support (up to 8 users simultaneously)
132 - Added authentication (password entered as argument or on stdin)
134 - Added install/uninstall make target
135 - Cleanup of dns code, more test cases, use check library
136 - Changed directory structure
139 - Fixed handshake() buffer overflow
140 (Found by poplix, Secunia: SA22674 / FrSIRT/ADV-2006-4333)
142 - More name parsing enhancements
143 - Now runs on Linux/AMD64
144 - Added setting to change server port
147 - Fixed possible buffer overflow
148 (Found by poplix, Bugtraq ID: 20883)
149 - Reworked dns hostname encoding
153 - Fixed potential security problems
154 - Name parsing routines rewritten, added regression tests
155 - New encoding, 25% more peak upstream throughput
156 - New -l option to set local ip to listen to on server
159 - Add Mac OSX support
160 - Add setting device name
161 - Use compression of domain name in reply (should allow setting MTU
162 approx 200 bytes higher)
165 - First public release
166 - Support for Linux, FreeBSD, OpenBSD