SOCKS

Benny Hermawan 13294042
Dosen: Onno W. Purbo

SOCKS
SOCKS adalah suatu protokol proxy untuk lingkungan client/server. SOCKS meliputi dua komponen utama, yaitu library server SOCKS dan client SOCKS. Implementasi server SOCKS dilakukan pada layer application dan library client SOCKS  terletak di antara layer aplikasi client dan layer transport . Saat ini ada dua versi protokol SOCKS, yaitu  SOCKS versi 4 dan  SOCKS versi 5. 

Proxy
Suatu server proxy akan membuat koneksi kepada server aplikasi untuk client. Server proxy me-relay data di antara server apilkasi dengan client. Dari sudut pandang server aplikasi, server proxy adalah suatu client. Prosesnya adalah sebagai berikut :
•	Bila suatu client ingin membuat koneksi ke server aplikasi, maka ia (client) akan menghubungi  server proxy. 
•	Alamat yang dimiliki oleh server aplikasi dan nomor port dilewatkan ke server proxy melalui suatu proxy protokol. 
•	Server proxy kemudian menghubungi server aplikasi. Sekali  koneksi ke server aplikasi  telah terbentuk, server proxy kemudian me-relay data di antara client dan server aplikasi.   

SOCKS 5

SOCKS5 memiliki feature-feature sebagai berikut :

•	In-line SOCKS V4
Dengan dukungan in-line SOCKS V4, server SOCKS5 dapat juga memproses permintaan SOCKS V4,   menyederhanakan proses migrasi dari SOCKS V4 ke SOCKS V5.  Suatu  script Perl akan mengkonversi konfigurasi file  SOCKS V4 ke SOCKS V5. 
		Gambar  aliran SOCKSV5

•	Server-to-Server Proxy
Ini berarti  bahwa suatu server SOCKS5 memiliki kemampuan untuk  berhubungan dengan server  SOCKS V4 atau SOCKS5  lain yang melakukan routing ke beberapa tujuan yang utama. Server-to Server  Proxy, dengan  autentikasi, otorisasi, dan integritas dapat mengorganisasikan komunikasi melalui suatu untrusted network dengan cara yang dapat dipercaya.

•	Preforking server

Sifat ini terlihat pada suatu server yang bekerja  sendiri (standalone)  dan melakukan suatu proses  anakan sebelum ia mulai menerima koneksi /hubungan. Dalam hal ini kita mengenal dua macam proses, yaitu  ‘anak’  yang  menerima koneksi, serta proses ‘induk‘ yang melakukan rekonfigurasi dan me-restart proses ‘anak‘ yang sudah ada. 

•	Client shared

SOCKS5 memiliki client shared library yang eksis dalam aplikasi jaringan. Suatu script shell yang disebut runsocks akan memudahkan proses karena  tidak dibutuhkan lagi untuk  merecompile aplikasi original.

•	Ping dan traceroute proxy

SOCKS5 memiliki fungsi ping (rping) dan traceroute (rtraceroute) untuk user yang berada di belakang  suatu server socks5. Hal ini dapat dilakukan dengan memperluas protokol request socks V5. Fungsi rtraceroute akan mengembalikan seluruh path ke suatu tujuan, termasuk intermediate route,  ke intermediate server socks5. 

Supported Platforms
	socks5 server 	static library 	bundled clients 	dynamic client 	
AIX 4.1, 4.2 	Yes	Yes 	Yes 	No 	
BSDi 3.* 	Yes 	Yes 	Yes 	No 	
BSDi 4.* 	Yes 	Yes 	Yes 	No 	
FreeBSD 2.* 	Yes 	Yes 	Yes 	No 	
HPUX 10.* 	Yes 	Yes 	Yes 	No 	
HPUX 11.* 	Yes 	Yes 	Yes 	No 	
Irix 5.* 	Yes 	Yes 	Yes 	runsocks 	
Irix 6.3 	Yes 	Yes 	Yes 	runsocks 	
Irix 6.5 	Yes 	Yes 	Yes 	runsocks 	
Linux 1.* 	Yes 	Yes 	Yes 	runsocks 	
Linux 2.* 	Yes 	Yes 	Yes 	runsocks 	
OSF 3.* 	Yes 	Yes 	Yes 	runsocks 	
OSF 4.* 	Yes 	Yes 	Yes 	runsocks 	
Solaris 2.* 	Yes 	Yes 	Yes 	runsocks 	
SunOS 4.1.* 	Yes 	Yes 	Yes 	runsocks 	
Windows 3.1 	No 	No 	No 	SocksCap 	
Windows 95 	No 	No 	No 	SocksCap 	
Windows 98 	No 	No 	No 	SocksCap 	
Windows NT 	Yes 	No 	Yes 	SocksCap 	

Petunjuk Instalasi SOCKS5
1.   Download Software
Ambil source code socks dengan versi yang terbaru dari http://www.socks.nec.com/cgi-bin/download.pl ftp://ftp.nec.com/pub/socks/socks5/. 
Karena masih dalam bentuk source code (bahasa C) , maka pre-compiled binary belum  ada pada  socks5 oleh karena itu harus dicompile dulu.
2.   Uncompress/Untar Software
Using GNU's zip: 
gzip -d source.tar.gz ; tar -xvf source.tar 
atau 
gzcat source.tar.gz | tar -xvf -
Download juga GNU's ANSI C compiler, tar, and zip dari ftp://prep.ai.mit.edu/pub/gnu/. 
3.	 Baca text README and INSTALL

4.   Lakukan Konfigurasi
Dari root directory  source code, ketikan: 
./configure
Configure akan secara otomatis  menentukan feature sistem dan membuat makefile serta header file yang sesuai. Option-option command line configure dapat dibaca  pada file README.

5.	 Make
Dari direktori root source code,  ketikan: 
make
Command ini adalah untuk membangun seluruh sistem socks5;  server socks5 , library socks5, shared library socks5 (jika sistem kita mendukung shared libraries), and the client applications (ftp, telnet, finger, archie, whois, ping, and traceroute). 

6.	Baca halaman manual (man pages)
Man pages terletak di dalam subdirektori 'man' . Untuk melihat man page ketikan  
nroff -man <filename> | more
Dan file-file yang terdapat dalam manual adalah :
socks5(1)  runsocks(1)  stopsocks(1)  socks5.conf(5) libsocks5.conf(5)

7.	Meng-Install  Software
Untuk meng-install server, library, dan clients ke dalam direktori tree /usr/local/ , ketik: 
make install
Test  software sebelum meng-install-nya.
 
8.	Meng-Edit atau Create /etc/socks5.conf
Buat suatu file konfigurasi untuk server socks5. Subdirectory examples mencakup  file konfigurasi sample. Sebagai informasi tambahan, lihat keterangan lainnya pada situs http://www.socks.nec.com/s5examples.html. Package Tools Socks5 mencakup suatu script perl (sockd4to5.pl ) untuk mengkonversi file konfigurasi SOCKS V4 menjadi bentuk format socks5. Script tidak dapat mengkonversi semua file konfiguraai karena tidak ada translasi satu-satu dari  SOCKS V4 ke socks5.

9.	Me- RUN the Server
Server socks5 di-run dari inetd. Adalah lebih efisien untuk menjalankannya sebagai suatu standalone daemon. Gunakan parameter-parameter command berikut untuk memulai server socks5 sebagai suatu preforking daemon dengan 12 anakan dan mengirimkan verbose debug messages ke terminal: 
% socks5 -s -d -p -n 12
Verbose debugging sangat menolong ketika  troubleshooting. Setelah  debugging, gunakan parameter-parameter: 
% socks5 -p -n 24
Jumlah optimum dari proses ‘anakan’  sangat tergantung kepada kapasitas dari sistem host dan jumlah dari user yang sedang mengakses server socks5.
 
10.	  Test Software
Gunakan bundled client applications atau aplikasi  SOCKSified yang lain, lakukan test pada server socks5. Untuk bundled clients, lakukan setting pada variabel environment SOCKS5_SERVER ke server socks5 hostname yang kita miliki atau  IP address. Jika server socks5 tidak bekerja sesuai dengan yang diharapkan, lihat kembali debug log messages.