07 June 2012

IODINE - Tunneling Over DNS

Bagi Anda semua pecinta sesuatu yang disebut "gratisan", mungkin sudah biasa menggunakan koneksi internet bernama "Sepanyol" alias "Separo Nyolong". Tak jarang ketika melakukan wardriving, kita menemukan hotspot yang bisa dihubungi oleh gadget kita, misalnya laptop, PDA, handphone, atau smartphone. Tapi ketika kita akan melakukan browsing dan mengetikan sebuah alamat web di address bar browser, hasilnya selalu redirect ke halaman login-page yang menjengkelkan. Contohnya seperti ini:

damn-login-page-redirection

Melewati halaman login sebuah hotspot bisa jadi sangat mudah. Ada beragam cara yang bisa dilakukan. Tetapi bisa juga menjadi sangat sulit dan hampir mustahil bagi sebagian orang. Artikel kali ini, fokus pembahasan menitik-beratkan pada salah satu teknik tunneling yang disebut DNS tunnel. Ya, tentu saja ini trik lama dan memiliki kecepatan yang sangat mengecewakan. Tetapi jika hanya ini satu-satunya jalan untuk menuju kebebasan berinternet tanpa bayar, kenapa tidak?

So, what is DNS tunneling?
Secara singkat, DNS tunnel bisa berarti "... membungkus data binnary dalam paket DNS query and respons, menggunakan encoding base32 dan base64, serta menggunakan sistem penerjemah nama domain dalam DNS server itu sendiri sebagai pembawa data ..."

Lupakan deskripsi rumit yang sayangnya tidak bisa saya permudah dengan penjelasan yang lebih sederhana, sebaiknya kita langsung melompat ke bagian "How-To" karena DNS tunnel tidak bekerja semudah metode tunnel lainnya.

Sebelum menggunakan tunneling melalui DNS, ada beberapa pra-syarat yang harus dipenuhi. Di antaranya yaitu sebuah nama domain yang bisa kita atur NS record-nya. Nama domain ini bisa gratis maupun berbayar. Karena kita bangsa Indonesia yang memang sangat suka apapun yang disebut gratis, maka dalam artikel ini saya akan menggunakan contoh dengan nama domain gratisan pula. Untuk mendapatkan nama domain gratis tentu tidak sulit. Hal sulitnya adalah mencari penyedia nama domain gratisan yang juga mengizinkan kita mengutak-atik konfigurasi seperti NS record, A record, maupun CNAME dan sebagainya. Tapi kita beruntung, http://freedns.afraid.org/ melayani registrasi (sub)domain secara gratis. Langsung ke TeKaPe aja, Gan!!
freedns-domain-registration

Isi form yang tersedia dengan detail data sesuka Anda, yang penting tetap menggunakan email address yang valid.
Selanjutnya, setelah pendaftaran berhasil dan melakukan validasi email, saatnya kita memilih (sub)domain. Pilih nama apa saja, terserah, yang perlu diingat hanya usahakan agar nama domain pilihan kita sependek mungkin.

registering-new-sub-domain-with-custom-NS
Perhatikan gambar di atas, kira-kira yang harus dilakukan seperti ini:
Pada kolom "Type": pilih "NS"
"Subdomain" : isi nama apa saja sesuai selera, tapi usahakan tetap pendek dan singkat.
"Domain" : pilih salah satu dari opsi yang ada, pada contoh saya memilih "us.to"
Jika tidak ada pilihan "us.to", klik menu "Registry" di sebelah kiri.
"Destination" : kita tentukan nama terserah, nanti nama ini akan kita konfigurasi lebih lanjut.
Jangan lupa klik "Save!".

Hal berikutnya adalah mengkonfigurasi (sub)domain "Destination" yang telah kita buat pada langkah sebelumnya. Dan (sub)domain ini harus diatur/ditujukan/di-destination-kan ke real IP, ke alamat yang nyata, karena pada komputer ber-IP inilah nantinya program Iodined server akan berjalan. Perhatikan gambar di bawah ini:

registering-new-sub-domain-with-custom-A-record


Pada "Type" : pilih "A"
"Subdomain" : isi SESUAI dengan "DESTINATION" pada langkah pertama.
"Domain" : samakan dengan (sub)domain awal, jika pada (sub)domain awal kita memilih "us.to", maka yang ini pun harus "us.to" juga. Jika pada (sub)domain pertama kita memilih "mooo.com", maka pada (sub)domain kedua ini kita juga harus memilih "mooo.com".
"Destination" : isi alamat IP komputer yang akan kita setup untuk menjalankan Iodined server. Misalnya jika kita punya server ber-IP 1.2.3.4, maka pada "Destination" ini kita isi 1.2.3.4 (sesuaikan IP server Anda masing-masing).
Lalu klik "Save!".

Dan hasil akhir pembuatan (sub)domain kita akan seperti ini:
create-two-sub-domain
(Just an ILUSTRATION )
yang berarti bahwa pembuatan (sub)domain telah selesai, dan kini kita beralih ke komputer yang akan kita jadikan "FAKE" DNS server untuk (sub)domain yang kita buat di langkah pertama.

Terlebih dahulu pastikan bahwa komputer yang akan kita konfigurasi untuk menjadi "DNS server" BELUM/TIDAK SEDANG menjalankan program DNS apapun, karena kita akan membutuhkan port 53 (UDP) agar Iodined server bisa mendengarkan permintaan terhadap nama domain "whatever.us.to" (berdasarkan contoh ilustrasi gambar di atas).

Pemakai windows bisa dengan mudah menjalankan iodine(d) karena sudah ada versi binnary yang siap didownload dan bisa langsung diekskusi. Begitu pula bagi pengguna *nix dengan berbagai macam distro dan variannya, iodine(d) pun sudah tersedia dalam bentuk executable. Namun pada artikel ini, kita akan belajar meng-compile iodine(d) dari source code-nya.

Untuk meng-compile source code iodine(d), Anda harus log-in terlebih dulu ke server Anda tentunya (JANGAN ke server tetangga yah!!!). Sebaiknya melalui koneksi SSH. Saya asumsikan Anda telah berada di server dan siap mengekskusi perintah.

Catatan :
$ = eksekusi bisa dilakukan tanpa harus menjadi 'root'
# = 'root', harus menjadi 'root' untuk mengekskusi perintah yang diberikan
Tentunya kita harus download dulu source code iodine(d) :
$ wget http://code.kryo.se/iodine/iodine-0.6.0-rc1.tar.gz
Ekstrak hasil download menggunakan command :
$ tar zxvf iodine-0.6.0-rc1.tar.gz
Masuk/pindah ke folder hasil ekstrak :
$ cd iodine-0.6.0-rc1
Lalu tinggal di-'make' semuanya menjadi file eksekutable :
$ make
Dan install saja hasil kompilasi program di atas biar pemanggilan progmanya menjadi mudah :
# make install #need 'root' privilege, offcourse
Sekarang seharusnya program sudah bisa kita eksekusi:
# /bin/iodined -fP [PASSWORD-ANDA] -u nobody 192.168.1.1 whatever.us.to
NB :
# /bin/iodined : harus dijalankan sebagai 'root', kalo tidak 'root' tidak bisa.
-f : menjalankan iodined server dalam mode foreground, baik dilakukan untuk penge-test-an.
P [PASSWORD-ANDA] : setting password supaya hanya kita yang bisa memakai iodined server, passwordnya terserah, tapi harus dimasukkan setelah opsi 'P' seperti contoh.
-u nobody : setelah iodined jalan, turunkan pangkatnya agar hanya setara dengan 'nobody' (pastikan ada user bernama 'nobody' di mesin Anda, kalo belum ada, bikin dulu user 'nobody'). Walaupun tidak 'nobody' sebenarnya juga bukan masalah, tetapi saya pribadi selalu merasa tidak nyaman menjalankan aplikasi atau daemon apapun itu, yang berhubungan dengan network, sebagai 'root'. So, 'nobody' ini subjektif. Anda bebas memilih, tentunya.

192.168.1.1 : kelas IP yang akan dipakai iodine server-client dalam membuat tunnel, jika 192.168.*.* sudah dipakai, bisa diganti dengan IP kelas C lainnya, misalnya 10.0.0.1 atau 172.16.0.0

whatever.us.to : menginstruksikan Iodined server agar mendengarkan jika ada yang request nama domain "whatever.us.to", sekedar contoh. Pada kondisi nyata, Anda harus mengganti 'whatever.us.to" dengan apapun nama (sub)domain yang Anda tentukan sendiri.

Untuk memastikan apakah iodine server sudah berjalan dengan baik, kita bisa mengeceknya menggunakan perintah ifconfig:
$ /sbin/ifconfig

Jika hasilnya seperti berikut ini, maka bisa dipastikan iodine server telah melakukan tugasnya tanpa hambatan:

dns0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:192.168.10.1 P-t-P:192.168.10.1 Mask:255.255.255.224 
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1130 Metric:1 
RX packets:18843 errors:0 dropped:0 overruns:0 frame:0 
TX packets:18676 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:500 
RX bytes:1534174 (1.4 MiB) TX bytes:4041436 (3.8 MiB)


Dan kita bisa juga melakukan pengujian menggunakan test page dari official home page iodine. Apabila hasilnya seperti gambar berikut, SELAMAT!!!! Iodine server Anda telah beroperasi dengan sempurna:


Setting domain, sudah.
Setting Iodine server, sudah.
Sekarang kita menuju PC atau laptop kita masing-masing untuk menjalankan iodine klien, yang executablenya untuk windows bisa didownload dari sini. Setelah didownload, ekstrak hasil downloadnya. Akan ada folder baru bernama "iodine-0.6.0-rc1-win32". Di dalam "iodine-0.6.0-rc1-win32" ada folder lagi bernama "bin", buka folder tersebut lalu copy  atau pindahkan file "iodine.exe" dan "zlib1.dll" ke "C:\WINDOWS\" supaya acara tunneling ini menjadi lebih gampang.

Jangan lupa, sebelum menjalankan iodine klien, instal lebih dulu TAP drivers di komputer Anda. Download saja OpenVPN dari website resminya. Setelah installer OpenVPN didownload, double click file-nya, pilih komponen yang perlu saja. Jika hanya ingin memasang driver TAP, maka Anda bisa mengkonfigurasi seperti gambar:

windows-TAP-drivers-installation

Setelah TAP drivers berhasil diinstall, buka Command Prompt Anda ("START" > "RUN" > pada kotak dialog yang terbuka ketik "cmd" tanpa tanda kutip, hajar `[ENTER]`, jangan ENTAR!!), lalu ketik command:
iodine -fP [PASSWORD-IODINED-SERVER-ANDA] whatever.us.to
Kira-kira, jendela command prompt Anda akan menjadi seperti ini setelah mengekskusi perintah di atas:

iodine-client-in-actions

Jika semua berjalan sesuai rencana, maka komputer Anda kini akan mendapatkan "tambahan" IP dari iodine server, seperti gambar berikut:


Cobalah untuk nge-ping IP iodine server Anda, atau bahkan SSH ke sana.
Gambar berikut menunjukkan koneksi yang berhasil dari iodine client ke iodine server melalui SSH.



SUMBER :

5 comments:

  1. mantap sekali infonya guru. Lumayan buat belajar

    ReplyDelete
  2. mantep nih tutornya engga mencla mencle...kebeneran ane ada freebsd nganggur

    ReplyDelete
  3. Dr Beberapa sumber yg sy baca, tutorial di blog ini mengenai DNS tunneling sangat mudah dipahami dengan bahasa anda yg terstruktur.. Terima kasih

    ReplyDelete
  4. wow lengkap tuorialnya gan, makasihh yaaa

    ReplyDelete
  5. maaf gan ada videonya gak buat tutor ,,, ane masih bingung gan tpi mau blajar juga ,,,,

    ReplyDelete