Tunnel koneksi

Sebagai pengembang BlankOn, maka salah satu server yang sering saya dikunjungi adalah yeyen alias irgsh alias dev.boi. Namun, mengakses server itu dari sini perlu ditemani oleh sebungkus indomie yang belum dimasak sehingga bisa masak sambil nungguin koneksi beres xD Ini apa koneksi Internet di Belanda kurang cepet tuk ngakses mesin tsb? Di Finlandia kabarnya juga seperti itu =P

Untungnya saya punya akses yang lumayan cepat ke sebuah mesin yang punya koneksi lumayan cepat ke mesin yeyen.. Dengan kata lain, ada mesin perantara yang punya koneksi lumayan ke saya dan yeyen. Hal ini berarti saya bisa menggunakan mesin tersebut untuk dijadikan tukang ojek seluruh data yang mau saya kirim/terima ke/dari mesin yeyen =D

Kalau mau mengakses layanan http dengan browser, saya biasanya membuka tunnel via ssh dengan menggunakan socks proxy. Sintaksnya kira2 seperti ini.

$ ssh -D12345 mesin.perantara

Port 12345 adalah port dari socks proxy yang akan digunakan. Browser tinggal diatur agar menggunakan socks proxy pada port tersebut supaya koneksi dilewatkan melalui mesin perantara.

Namun.. berhubung koneksi dari tempat saya itu sudah cukup cepat tuk mengakses situs2 lainnya, mengapa seluruh koneksi harus dilewatkan ke mesin perantara terlebih dahulu? Maka dari itu, akan lebih baik apabila kita bisa memilah-milih koneksi mana yang mau dilewatkan atau langsung.

Konfigurasi proxy di browser Firefox yang saya gunakan hanya bisa membuat pengecualian situs mana yang tidak dilewatkan melalui perantara. Yang saya inginkan adalah kondisi sebaliknya dimana saya ingin menentukan situs yang ingin dilewatkan melalui perantara. Untungnya, Firefox mendukung fasilitas konfigurasi proxy otomatis sehingga saya bisa mengatur lewat konfigurasi yang ini.

Caranya adalah dengan membuat berkas skrip konfigurasi proxy otomatis seperti yang berikut ini.

function FindProxyForURL(url, host) {
   if (shExpMatch(url, "*dev.blankonlinux.or.id/*") ||
       shExpMatch(url, "*irgsh.blankonlinux.or.id/*") ||
       shExpMatch(url, "*yeyen.blankonlinux.or.id/*") ||
       shExpMatch(url, "*cecunguk.blankonlinux.or.id/*") ||
       shExpMatch(url, "*.ubuntu-id.org/*")) {

      return "SOCKS 127.0.0.1:12345; DIRECT";
   }

   return "DIRECT";
}

Seperti yang tertulis di atas, koneksi ke beberapa situs akan dialihkan melalui SOCKS proxy di 127.0.0.1 port 12345. Jika proxy tersebut tidak tersedia (misalnya saya belum membuka koneksi tunnel tsb), maka koneksi langsung tanpa proxy (DIRECT) akan dibuat. Untuk koneksi menuju situs selain yang disebutkan di sana, koneksi langsung akan digunakan.

Simpan skrip di atas ke dalam sebuah berkas, misalnya proxy.pac. Lalu tunjuk berkas tersebut dari kolom pengaturan konfigurasi otomatis, misalnya file:///Users/iang/Sites/proxy.pac. URL tersebut akan menunjuk ke berkas yang ada di /Users/iang/Sites/proxy.pac. Silakan disesuaikan sendiri.

Urusan dengan koneksi http/https bisa dianggap sudah selesai. Namun, saya juga masih harus dapat mengakses mesin yeyen melalui koneksi ssh, misalnya untuk mengirim perubahan pada cabang Bazaar yang ada di mesin yeyen. Bagaimana supaya koneksi bisa dilewatkan melalui mesin perantara juga? tentu saja melalui tunneling =D

Caranya kira2 seperti ini.

$ ssh -L2222:yeyen.blankonlinux.or.id:22 mesin.perantara

Dengan menjalankan perintah tersebut, maka di mesin kita sendiri (lokal = L) akan dibuka port 2222 dimana koneksi menuju port tersebut akan diteruskan ke mesin yeyen.blankonlinux.or.id port 22 melalui si mesin.perantara.

Dengan ini, saya bisa menggunakan port tersebut saat mengirim perubahan pada cabang Bazaar. Misalnya seperti berikut.

$ bzr push bzr+ssh:[email protected]:2222/bzr/meuligoe/firefox/

Yayyaa.. begitulah kira2.. silakan dicoba2 sendiri =P

Numpang donlod pake ssh

Andai sedang make komputer tak terhubung lgs dg internet namun pengen donlod dan di sebelah ada komputer yg nyambung dg internet, ssh tunneling bisa dipake :D. Contoh:

$ ssh perantara wget -O - http://apalah.ini/donlodan.tar.gz > donlodan.tar.gz

Berhubung ssh bisa nerusin stdin, stdout, dan stderr dan wget bisa ngeluarin data ke stdout, ya marilah kita perdayagunakan stdout tsb.

Nyalain ssh di Nexenta

Di Nexenta kok gak ada skrip /etc/init.d/ssh yang biasa ada di Debian ya? Mungkin pake cara lain, cara standar opensolaris.

# svcadm enable ssh

Kalo gak mau nyala juga (cek pake ps -e | grep ssh), tambahin opsi -rs biar services lainnya yg dibutuhin (r = rekursif) ikutan dinyalain (s = start)

# svcadm enable -rs ssh