iodine – VPN über DNS

Als „roadwarrior“ hat man manchmal das Problem das kein (kostenfreies) WLAN zur verfügung steht.
Und endweder kann oder will man das vorhandene nicht bezahlen. Die Gründe sind vielfältig und nicht Gegenstand dieses Artikels.
Was in den meisten Fällen aber trotzdem problemlos funktioniert ist DNS! Hier setzt iodine an und baut per DNS-Querys ein VPN auf. Der iodine VPN-Server tunnelt dann das Internet zum client. Clients gibt es für Linux und Windows!

 

HP: http://code.kryo.se/iodine/

Es gibt für FreeBSD, Debian, Ubuntu Red Hat usw. Pakete. Für Windows gibt es eine fertige .exe auf der Webseite.
Einziger Wehrmutstropfen: Der Datenverker über dieses VPN ist nicht verschlüsselt oder besonders geschützt! Entsprechend sollte man sich verhalten.
Für „Notfälle“ ist es aber ein geniales Schlupfloch. 🙂

Intallieren (händisch):
/usr/local/src # wget http://code.kryo.se/iodine/iodine-0.6.0-rc1.tar.gz
/usr/local/src # tar xzf iodine-0.6.0-rc1.tar.gz
/usr/local/src # cd iodine-0.6.0-rc1
/usr/local/src/iodine-0.6.0-rc1 # make install

 

Konfiguration/Starten
In der DNS-Zone, auf dem (richtigen) DNS-Server:

; Nameserver für die „dnsvpn“ Subzone – Über diese DNS-Querys für diese Zone läuft das VPN
dnsvpn IN NS vnpns.futzelnet.de.
; A-Record – IP des Servers auf dem iodined läuft
; /Kann/ man, z.B. wenn der Server Zuhause hinter DSL (dynamische IP) steht, auch weg lassen. Dann muss als NS Eintrag der DynDNS-Host stehen.
vnpns IN A 192.168.100.100

Auf dem Server:
Achtung: Es darf auf dem Server natürlich KEIN DNS-Server laufen. Der Port 53, für DNS, wird vom iodined benötigt.
# /usr/local/sbin/iodined -u nobody -t /var/run -l 192.168.100.100 -P PasswordForAuthentication dnsvpn.futzelnet.de

Auf dem Client:
// Starten des Tunnelclients
# /usr/local/bin/iodine -u nobody -t /var/run -P PasswordForAuthentication 192.168.100.100 dnsvpn.futzelnet.de
// Ermitteln des zugewiesenen Nameservers und des defaultgateways vom provider
# grep nameserver /etc/resolv.conf|head -1|awk ‚{print $2}‘
172.16.10.10
# netstat -rn|grep -v Gateway|grep G|awk ‚{print $2}’|head -1
192.168.100.1
// Löschen defaultroute, setzen hostroute zum provider-DNS und setzender neuen defaultroute durch den Tunnel
# route delete default && route add 172.16.10.10 gw 192.168.100.1 && route add default $tunnelip tun0

Ein schönes Script hierfür gibt es unter: http://www.doeshosting.com/code/NStun.sh

Alles weitere erklären die guten manpages.
Das wars! Have fun. 🙂