Squid biasa digunakan untuk melakukan manajemen bandwidth dengan cara membatasi atau memblok trafik pengguna internet yang melakukan browsing. Pembatasan dapat dilakukan dalam bentuk pembatasan kecepatan, pembatasan per IP address atau berdasarkan username. Pada tulisan saya kali ini saya akan sedikit menjelaskan step-by-step instalasi Squid Proxy pada sistem operasi Windows. Versi Squid yang akan digunakan dalam proses installasi ini adalah v2.7 STABLE8 yang dapat diunduh dengan link di bawah. Terdapat 2 versi yang dapat diunduh, yaitu versi standard dan versi yang dicompile dengan fasilitas Delay Pools untuk melakukan pembatasan kecepatan/bandwidth akses.
squid-2.7.STABLE8-bin.zip
squid-2.7.STABLE8-bin-DELAYP.zip
Dalam tutorial ini saya menggunakan Squid dengan Delay Pools dan diinstall pada Windows Server 2003 Enterprise dengan Service Pack 3. Pertama-tama yang harus dilakukan adalah mengekstrak file zip yang telah diunduh ke hardisk di server (penulis menggunakan path C:\squid\ sebagai folder installasi squid) Berikut struktur folder Squid yang sudah di extract:

Struktur Folder Squid
Langkah selanjutnya yang harus dilakukan adalah menyiapkan file konfigurasi. File konfigurasi dasar yang dibutuhkan Squid adalah cachemgr.conf, mime.conf dan squid.conf. Dalam paket Squid yang diextract sudah terdapat file konfigurasi contoh yang dapat digunakan sebagai dasar konfigurasi yang terdapat dalam folder C:\squid\etc\. Copy ketiga file konfigurasi contoh tersebut dalam folder etc:
cachemgr.conf.default => cachemgr.conf
mime.conf.default => mime.conf
squid.conf.default => squid.conf
Untuk file cachemgr.conf dan file mime.conf tidak perlu diedit karena sudah cukup memadai untuk konfigurasi awal. Sedangkan untuk file squid.conf harus kita edit karena ada beberapa setting yang harus disesuaikan dengan keadaan dalam infrastruktur jaringan kita. File konfigurasi Squid menggunakan karakter # sebagai tanda awal komentar dan akan diabaikan pada saat file konfigurasi tersebut di baca oleh Squid.
Edit file squid.conf dengan menggunakan teks editor dan cari baris yang berisikan http_port (sekitar baris 1104), pastikan baris http_port tersebut tidak diawali dengan karakter # dan isi port yang ingin digunakan sebagai proxy server dengan format http_port <port_server> (e.g: http_port 3128), setting http_port memiliki nilai default 3128.
Selanjutnya kita akan menset nama host (hostname) yang akan terlihat pada client apabila terjadi error atau kesalahan dalam mengakses internet melalui proxy, cari baris yang berisikan “TAG: visible_hostname” (sekitar baris 3368):
# TAG: visible_hostname
# If you want to present a special hostname in error messages, etc,
# define this. Otherwise, the return value of gethostname()
# will be used. If you have multiple caches in a cluster and
# get errors about IP-forwarding you must set them to have individual
# names with this setting.
#
#Default:
# none
Tambahkan satu baris baru di bawah none yang berisikan visible_hostname (e.g: visible_hostname localhost).
# TAG: visible_hostname
# If you want to present a special hostname in error messages, etc,
# define this. Otherwise, the return value of gethostname()
# will be used. If you have multiple caches in a cluster and
# get errors about IP-forwarding you must set them to have individual
# names with this setting.
#
#Default:
# none
visible_hostname localhost
Kemudian kita perlu menentukan IP address dari DNS Server yang akan digunakan proxy dalam menquery alamat request dari PC klien. Cari baris yang berisikan “TAG: dns_nameservers” (sekitar baris 4575).
# TAG: dns_nameservers
# Use this if you want to specify a list of DNS name servers
# (IP addresses) to use instead of those given in your
# /etc/resolv.conf file.
# On Windows platforms, if no value is specified here or in
# the /etc/resolv.conf file, the list of DNS name servers are
# taken from the Windows registry, both static and dynamic DHCP
# configurations are supported.
#
# Example: dns_nameservers 10.0.0.1 192.172.0.4
#
#Default:
# none
Tambahkan satu baris baru di bawah none yang berisikan dns_nameservers (e.g: dns_nameservers 10.0.0.1 192.168.1.1). IP address dns server bisa lebih dari satu dan tiap IP address dipisahkan oleh spasi. Untuk alamat DNS server beberapa ISP bisa dilihat pada posting saya disini.
# TAG: dns_nameservers
# Use this if you want to specify a list of DNS name servers
# (IP addresses) to use instead of those given in your
# /etc/resolv.conf file.
# On Windows platforms, if no value is specified here or in
# the /etc/resolv.conf file, the list of DNS name servers are
# taken from the Windows registry, both static and dynamic DHCP
# configurations are supported.
#
# Example: dns_nameservers 10.0.0.1 192.172.0.4
#
#Default:
# none
dns_nameservers 10.0.0.1 192.168.1.1
Selain itu kita juga perlu mendefinisikan klien mana saja yang berhak mengkases proxy server yang akan kita jalankan. Pengaturan hak akses dapat dilakukan menggunakan Acess Control List (ACL). Yang perlu kita lakukan disini adalah mendisable ACL bawaan Squid dan membuat ACL baru sesuai dengan jaringan tempat Proxy Server akan digunakan. Cari baris yang berisikan “acl localnet” (sekitar baris 609-611)
#
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
Beri komentar ketiga baris “acl localnet” dengan menambahkan karakter # pada awal tiap barisnya. Kemudian tambahkan baris baru yang berisi “acl my_network src <subnet_network_anda>” (e.g: acl my_network src 192.168.1.0/24) untuk mendefinisikan ACL baru bernama my_network yang menyatakan sumber akses IP klien yang akan diijinkan untuk mengakses server proxy. Contoh di atas 192.168.1.0/24 berarti range IP 192.168.1.1 s/d 192.168.1.254.
#
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
#acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl my_network src 192.168.1.0/24
Selanjutnya yang harus kita lakukan adalah menonaktifkan ACL localnet dan mengaktifkan ACL my_network yang baru dibuat. Cari baris dengan text “# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS” (sekitar baris 662)
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
Tambahkan baris baru dibawah “# INSERT YOUR OWN RULE(S) HERE” untuk mengakifkan ACL my_network “http_access allow my_network“. Kemudian beri komentar pada baris “http_access allow localnet” untuk menonaktifkan ACL localnet.
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
http_access allow my_network
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet
Selain itu ada satu lagi setting ICP (Internet Cache Protocol) yang harus kita nonaktifkan agar dapat menjalankan Squid proxy server. ICP digunakan apabila kita memiliki beberapa proxy server yang dapat saling berkomunikasi untuk melakukan penghematan bandwidth dengan menggunakan cache pada masing proxy server. Cari baris yang berisi “icp_access allow localnet” (sekitar baris 710).
# TAG: icp_access
# Allowing or Denying access to the ICP port based on defined
# access lists
#
# icp_access allow|deny [!]aclname ...
#
# See http_access for details
#
#Default:
# icp_access deny all
#
#Allow ICP queries from local networks only
icp_access allow localnet
icp_access deny all
Beri komentar pada baris “icp_access allow localnet” dengan menambahkan karakter # pada awal baris
# TAG: icp_access
# Allowing or Denying access to the ICP port based on defined
# access lists
#
# icp_access allow|deny [!]aclname ...
#
# See http_access for details
#
#Default:
# icp_access deny all
#
#Allow ICP queries from local networks only
#icp_access allow localnet
icp_access deny all
Setelah selesai simpan file squid.conf yang telah diedit tersebut dalam folder C:\squid\etc kemudian jalankan Command Prompt (Start > Run… atau tekan Win+R ketik cmd lalu tekan Enter).

Menu Run pada Windows
Ketik “CD \squid\sbin\” untuk mengubah direktori yang aktif menjadi C:\squid\sbin\ kemudian jalankan perintah “squid -z” untuk membangun struktur direktori squid cache.

Membangun Squid Cache
Langkah selanjutnya kita coba untuk menjalankan Squid Proxy Server dengan mengetikkan perintah “squid -d 1 -D“. Parameter -d 1 mengaktifkan mode debug analisa. Sedangkan parameter -D digunakan untuk mem-bypass pengecekan DNS pada saat start up squid proxy server.

Console Start Up Squid
Pada saat menjalankan Squid Proxy Server pertama kali ada kalanya muncul peringatan dari Firewall apakah akan memblok atau membolehkan Squid Proxy Server agar dapat diakses jaringan. Klik Unblock untuk mengijinkan Squid diakses melalui jaringan.

Unblocking Firewall untuk Squid
Apabila tidak ada error lain yang muncul maka konfigurasi yang kita lakukan sudah benar. Tekan CTRL+C pada Command Prompt untuk mengakhiri test pada Squid.
Langkah terakhir dalam proses installasi Squid Proxy Server adalah menginstall Squid sebagai Service Windows. Ketik “squid -i” untuk menginstall squid sebagai service di windows. Berikut tampilan console Command Prompt setelah berhasil diinstall sebagai service.

Instalasi Squid sebagai Service
Service Squid secara default akan berjalan secara otomatis saat windows startup, tetapi apabila ingin menjalankan Service Squid secara manual dapat dilakukan dengan membuka window service (Start > Settings > Administrative Tools > Services). Cari service Squid pada daftar Service, klik kanan lalu pilih Start untuk menjalankan service Squid.

Menjalankan Service Squid
Selesai sudah proses installasi Squid, langkah selanjutnya adalah melakukan setting proxy pada masing-masing browser klien. Untuk mengetahui cara menset proxy pada suatu browser akan saya jelaskan pada posting saya yang akan datang.