Kamis, 03 Januari 2019

Protokol SOCKS v5 : "Numpang Lewat" Koneksi Internet via SSH Tunnel

Hari ini koneksi Indihome & 4G Indosat sepertinya sedang janjian lelet bareng-bareng (apakah mungkin upstream nya sama, padahal kan mereka beda bendera). Latency ke situs-situs internasional, gap-nya terlalu besar. Padahal lagi ada perlu. Hmm...

Iseng-iseng coba ssh-ing ke salah satu server di IDC Kuningan, cek latency ke jalur internasional dari sana, eh ternyata stable. Hmm... berarti memang upstream-nya si merah & si kuning yg mungkin sedang lelah.

Okay, saatnya mainkan trik lama. Pinjam jalur koneksi & bandwidth lewat remote server.
Sebenarnya males sih nulis topik beginian di sini. Tapi berhubung blog baru ini juga butuh content, dan hati kecil ane sedang ingin protes terhadap ulasan artikel dari JalanTikus ini yang bilang kalo SSH lebih rumit ketimbang VPN. Padahal... 
coba simak cara berikut:

A. Cara Numpang Koneksi Internet lewat SSH menggunakan Protokol SOCKS v5

Bahan baku:
  1. Punya server, eh Punya (akses ke) server di cloud. Bisa berupa VM/VPS atau physical server. Atau bisa juga register ke Free SSH Tunnel server (seperti ini) untuk dapatkan akun.
  2. Laptop/PC dengan Linux OS (lihat disclaimer di bawah).
  3. Koneksi internet seadanya.
Cara Pemakaian:

Melalui terminal, jalankan command ini Laptop/PC yang ingin numpang lewat ke remote server:

~$ ssh -D 7777 -q --N username@ip.address.server

Sesuaikan username dan ip.address.server sesuai credentials yang dimiliki.
Dan oiya, parameter -D 7777 itu artinya ssh session tersebut membuka protokol SOCKS v5 di port nomor 7777 untuk menerima tunnel koneksi. Nomor port 7777 bisa diganti dan disesuaikan menurut selera/preferensi politik yang disuka. hehehe... Kebetulan nomor "7" adalah sesuatu buat saya. #berkaryabersamahati
Parameter-parameter lainnya itu maksudnya:
  • -q : quiet mode
  • -C : koneksi terkompresi
  • -N : nothing-to-do command. Setelah login, server nggak diinstruksikan untuk ngapa2in selain hanya 'menyalurkan' TKI (traffic koneksi internet)

Untuk alasan simplifikasi, ane ada titipkan script alias di ~/.bashrc buat shortcut menjalankan SSH Tunnel ini. Tambahkan baris ini di bawah file ~/.bashrc:

alias tunnellah='ssh -D 7777 -q -C -N'

sehingga, kalo sewaktu-waktu pengen buka koneksi, tinggal jalankan command tunnellah username@ip.address.server saja. Untuk menghentikan tunneling, cukup tekan Ctrl-C saja di terminal.

Kadang ane tambahin juga tambahan parameter -f untuk jalankan tunnel sebagai daemon (di belakang layar), tapi untuk menghentikan tunneling, kita kudu kill process setelah mendapatkan PID nya via command ps aux | grep ssh

Eh, sebentar-sebentar, apa itu SOCKS?

Hasil googling, mendefinisikan SOCKS adalah :
A SOCKS server is a general purpose proxy server that establishes a TCP connection to another server on behalf of a client, then routes all the traffic back and forth between the client and the server. It works for any kind of network protocol on any port. SOCKS Version 5 adds additional support for security and UDP. The SOCKS server does not interpret the network traffic between client and server in any way, and is often used because clients are behind a firewall and are not permitted to establish TCP connections to servers outside the firewall unless they do it through the SOCKS server.
Oke sip. Forget the definition. Lanjut...

Lalu setup koneksi komputer agar dapat mempergunakan jalur SSH Tunnel itu. Ada 2 (dua) metode : 
  1. terapkan proxy secara system-wide. Artinya, semua aplikasi -- termasuk terminal, browser, program2 chat, downloader, dsb : akan mempergunakan jalur numpang lewat itu tadi.
  2. terapkan hanya di browser spesifik aja. Artinya, jalur via SSH Tunnel hanya akan dipergunakan oleh salah satu aplikasi saja. Aplikasi lainnya, tetap mempergunakan jalur normal.

B. Menerapkan Proxy Secara System-Wide

Masuk ke System Setting ➔ Network ➔ Network By Proxy ➔ ubah Methods menjadi "Manual"  , lalu terapkan konfigurasi proxy sebagai berikut:


Terapkan SOCKS Host ke "localhost", dengan port "7777" -- ini menyesuaikan dengan parameter command ssh -D 7777 yang dieksekusi sebelumnya.

That's it. Sekarang coba tes lakukan koneksi.


C. Menerapkan Proxy di Browser-Specific Saja

Kadang ada beberapa pertimbangan, tunneling session hanya ingin dilakukan di salah satu browser saja. Yaa, tergantung preferensi masing-masing sih, misalnya ane nih, pake:
  • Google Chrome untuk kegiatan development sehari-hari;
  • Opera untuk testing aplikasi;
  • Flashpeak Slimjet untuk research & desk-study (very fast, ad-free by default);
  • Min Browser (juga very fast, ad-free juga) untuk baca-baca informasi umum di portal berita, forum/blog, yang sudah di-feed duluan di RSS personal;
  • Mozilla Firefox untuk shopping, banking & transaksi online;
  • Chromium Browser untuk nonton, nge-IMDB, dan belasan aksi-aksi yang gak penting;
  • Vivaldi khusus untuk nonton genre movie satunya lagi;
  • Tor Browser, untuk melakukan aksi-aksi potong bawang yang gak penting juga;
  • dan Pale Moon : khusus dipergunakan untuk SSH Tunneling.
Oke, begini cara setting-nya: masuk ke Preferences ➔ Tab Advanced  ➔ Tab Network ➔ Section Connection ➔  tekan tombol Setting. Akan menampilkan window Connection Setting. Sesuaikan config-nya sebagai berikut:


Browser-browser yang Mozilla-based, memiliki menu serupa. Kalo browser-browser yang Chromium-based, seperti Google Chrome for Linux, mereka men-disable fitur edit network connection by default. Tapi, tentu saja ada beberapa Chrome Extensions yang dapat menggantikan peran itu (favorit ane ini, ane pasang di Vivaldi). Atau pake tambahan custom parameter pas mau me-launching Chrome.

D. Konklusi
Kembali ke ulasan JalanTikus tadi, apakah membuat/mempergunakan VPN Server masih lebih simple ketimbang membuat SSH Tunnel?

--

Disclaimer: 
  1. Teknik ini tidak bisa dipergunakan jika koneksi internet Anda benar-benar wafat. 
  2. Kualitas bisa memburuk jika koneksi antara komputer Anda dengan server-yang-dinumpang-lewat-in juga dalam kondisi buruk.
  3. Mungkin diperlukan beberapa penyesuaian jika ingin mempergunakan teknik ini di sistem operasi lain. JalanTikus sebenarnya pernah mengulas juga bagaimana men-setup koneksi SOCKS via SSH Tunnel di OS Windows. Memang ribet sih step-by-step nya kalo melakukan di Windows. Pantas, mereka lebih menyarankan pake VPN.
  4. Mudah, murah, simple : itu semua relatif. Cakep itu juga relatif. Nah, kalo jelek itu mutlak. 

1 komentar:

  1. Planet Win 365 Casino Review & Bonus - Top online casinos 2021
    Betwin 365 Casino is owned by the same family planet win 365 as Betwin Casino and includes a wide m88 range of 메리트카지노 casino games. You'll find all the games from online

    BalasHapus