A. Konfigurasi-konfigurasi mendasar squid antara lain :
- http_port nomor port.
Ini akan menunjukkan nomor port yang akan dipakai untuk menjalankan squid. Nomor port ini akan dipakai untuk berhubungan dengan klien dan peer.
- icp_port nomor port.
Ini akan menunjukkan nomor port yang akan dipakai untuk menjalankan squid. Nomor port ini akan dipakai untuk berhubungan dengan klien dan peer.
- cache_peer nama_peer tipe_peer nomor_port_http nomor_port_icp option.
Sintask dari cache peer ini digunakan untuk berhubungan dengan peer lain, dan peer lain yang dikoneksikan ini tipenya bergantung dari tipe peer yang telah dideklarasikan ini, bias bertipe sibling maupun bertipe parent,dan port yang digunakan untuk hubungan ICP maupun HTTP juga dideklarasikan disini, sedangakan untuk parameter option disini ada bermacam-macam salah satunya adalah default yang berarti dia adalah satu-satunya parent yang harus dihubungi (jika bertipe parent) dan proxy-only yang berarti bahwa object yang dipata dari peer tersebut tidak perlu disimpan dalam hardisk local.
- Dead_peer_timeout jumlah_detik seconds.
Masing-masing peer yang telah didefinisikan sebelumnya mempunyai waktu timeout sebesar yang ditentukan dalam konfigurasi ini, Jika peer tidak menjawab kiriman sinyal ICP dalam batas waktu yang telah ditentukan, peer akan dianggap tidak akan dapat dijangkau, dan cache server tidak akan mengambil object dari server yang bersangkutan dalam interval waktu tertentu.
- Hierarcy_stoplist pola1 pola2
Sintaks ini digunakan untuk menyatakan apa yang harus tidak diminta dari peer, melainkan harus langsung dari web server origin, jika pola1 dan pola 2 adalah parameter cgi-bin, ?, dan lain-lain maka jika ada request URL yang mengandung karakter tersebut maka akan diambilkan langsung ke server origin.
- Cache_mem jumlah_memori (dalam bytes)
Sintaks ini akan menentukan batas atas jumlah memori yang digunakan untuk menyimpan antara lain : intransit object yaitu object yang dalam masa transisi antara waktu cache mendownload sampai object disampaikan ke klien, dan hot object, yaitu object yang sering diakses.
- Cache_swap_low/high jumlah (dalam persen)
Squid akan menghapus object yang ada didalam hardisknya jika media tersebut mulai penuh. Ukuran penuh ini yang diset pada cache_swap_low dan cache_swap_high. Bila batas swap_low telah tercapai maka squid mulai menghapus dan jika batas swap_high tercapai maka squid akan semakin sering menghapus.
- Cache_dir jenis_file_sistem direktori kapasitas_cache dir_1 jumlah dir_2
Sintaks ini akan menjelaskan direktori cache yang dipakai, pertama adalah jenis file sistemnya, lalu didirektori mana cache tersebut akan disimpan, selanjutnya ukuran cache tersebut dalam MegaBytes lalu jumlah direktori level 1 dan direktori level 2 yang akan digunakan squid untuk menyimpan objectnya.
9. Loging
- Sangat diperlukan untuk menganalisa dan memonitor kejadian pada squid
- cache_access_log : melihat URL akses ke proxy
- cache_access_log /var/log/squid/access.log
- cache_log : melihat kejadian pada squid tergantung dari nilai debug_options
- cache_log /var/log/squid/cache.log
- Harus dipastikan bahwa file tersebut adalah writable oleh squid
B. ACL (Access Control List)
Selanjutnya konfigurasi-konfigurasi lanjutan squid, selain sebagai cache server, squid yang memang bertindak sebagai "parent" untuk meminta object dari kliennya dapat juga dikonfigurasi untuk pengaturan hak akses lebih lanjut, untuk pertama kali yang dibicarakan adalah ACL (access control list), ACL sendiri terdiri dari beberapa tipe antara lain :
- Src
IP Address asal yang digunakan klien
- Dst
IP Address tujuan yang diminta klien
- Myip
IP Address local dimana klien terhubung
- Srcdomain
Nama domain asal klien
- dstdomain
Nama domain tujuan klien
- Srcdom_regex
Pencarian pola secara string dari nama domain asal klien
- Dstdom_regex
Pencarian pola secara string dari nama domain tujuan klien
- Time
Waktu dinyatakan dalam hari dan jam
- Proto
Protokol transfer (http, ftp, gopher)
- Method
Metode permintaan http (get, post, connect)
Berikutnya adalah control list yang akan digunakan untuk mengatur control dari ACL, control list tersebut antara lain :
- http_access
memperbolehkan acess http
- icp_access
memperbolehkan peer untuk mengirimkan icp untuk menquery object
- miss_access
memperbolehkan klien meminta object yang belum ada (miss) didalam cache
- no_cache
object yang diminta klien tidak perlu disimpan ke hardisk
- always_direct
permintaan yang ditangani langsung ke server origin
- never direct
permintaan yang ditangani secara tidak langsung ke server origin.
Sehingga sintaks dasar ACL adalah sebagai berikut :
- ACL : access control list
- Format umum :
- acl aclname acltype string1 ...
- acl aclname acltype "file" ...
- Acl bisa menggunakan string yang ada pada file konfigurasi dan juga bisa menggunakan file eksternal
- Aclname adalah nama yang diberikan untuk acl tersebut
- Squid akan membatasi akses berdasarkan nama aclnya
TIPE ACL
TIPE ACL | ARGUMEN | KETERANGAN |
src | alm_ip/netmask … | Asal alamat IP klien |
alm_ip1-alm_ip2 | Rentang alamat IP | |
dst | alm_ip/netmask … | Tujuan alamat IP URL |
myip | alm_ip/netmask … | Socket alamat IP local |
srcdomain | nama_domain … | Asal domain klien |
dstdomain | nama_domain … | Tujuan domain URL |
scrdom_regex | [-i] xxx … | Pernyataan untuk asal klien |
dstdom_regex | [-i] xxx … | Pernyataan untuk tujuan server |
time | [hari] [h1:m1-h2:m2] | Singkatan nama hari: |
S-Sunday, M-Monday, T-Tuesday, | ||
W-Wednesday, H-Thursday, F-Friday | ||
A-Saturday | ||
url_regex | [-i] ^http:// … | Pernyataan nama URL lengkap |
urlpath_regex | [-i] \.gif$ … | Pernyataan path padaURL |
port | port … | Nomor port |
port1-port2 | Rentang nomor port | |
myport | port … | Port socket TCP local |
proto | protocol … | Nama protokol yang dikendalikan (HTTP, FTP, dll) |
method | metode … | Nama metode yang dikendalikan (GET, POST, dll) |
browser | [-i] regexp | Pernyataan untuk pola pencocokan pada header permintaan |
ident | username … | Daftar username |
ident_regex | [-i] pola | Pernyataan untuk username |
src_as | Angka … | Angka system autonomi asal klien |
dst_as | angka … | Angka system autonomi tujuan server |
proxy_auth | username … | Autentikasi username melalui proses eksternal |
proxy_auth_regex | [-i] pattern … | Autentikasi username melalui proses eksternal |
Snmp_community | string …. | Nama komunitas untuk membatasi agen SNMP |
maxconn | jumlah | Jumlah maksimum koneksi HTTP untuk satu alamat IP |
req_mime_type | tipe_mime1 … | Pernyataan berdasarkan tipe MIME yang diminta klien |
Sebagai contoh diberikan sintaks konfigurasi ACL seperti dibawah ini :
#bagian ACL
ACL localnet src 192.168.100.0/24
ACL localkomp 127.0.0.1/255.255.255.255
ACL isp dst 202.59.206.65/30
ACL allsrc src 0.0.0.0/0.0.0.0
ACL alldst dst 0.0.0.0/0
ACL other src 10.10.11.11/32
ACL domainku srcdomain .jatara.net
#bagian control list
http_access deny other
http_access allow localnet
http_access allow lokalkomp
http_access allow domainku
http_access deny allsrc
always_direct allow isp
always_direct deny alldst
Pada konsep sintaks konfigurasi squid adalah bahwa sesuatu yang telah dieksekusi pada baris yang lebih atas maka dia tidak dieksekusi lagi dibaris yang paling bawah, walaupun dalam parameter ACL yang dibawah tersebut dia juga termasuk, untuk lebih jelasnya, jika ada IP Address 192.168.100.0/24 maka IP Address yang berkisar dari 192.168.100.1 – 192.168.100.254 (ACL localnet) telah diijinkan untuk mengakses http yang ditunjukkan oleh http_access allow localnet, dan dibawahnya ada ACL allsrc yang itu adalah mencakup semua daftar IP Address dan ACL itu tidak diperbolehkan mengakses http, yaitu http_access_deny allsrc, tapi karena pada ACL localnet dia telah dieksekusi untuk sebagai IP Address yang boleh mengakses, maka walaupun dibaris bwahnya di dieksekusi lagi, itu tidak akan berpengaruh,hal-hal seperti itu digunakan untuk seorang administrator cache server untuk melakukan pengontrolan agar tidak akan terlalu detail melakukan pengaturan jika baris atas dan bawah sama-sama saling mempengaruhi.
C. Object Cache
Pengaturan object sebuah cache server merupakan salah satu hal yang perlu diperhatikan disini. Telah diketahui sebelumnya bahwa object disimpan pada dua level cache_dir yang besar levelnya didefinisikan pada konfigurasi utama squid. Object itu sendiri berisikan content URL yang diminta klien dan disimpan dalam bentuk file binary, masing-masing object mempunyai metadata yang sebagian dari isinya disimpan didalam memori untuk memudahkan melacak dimana letak object dan apa isi dari object tersebut. Banyak sifat-sifat yang perlu diamati untuk optimasi squid ini, antara lain :
Umur object
Umur obect merupakan sebuah ukuran waktu yang dihabiskan sebuah object untuk tinggal didalam hardisk cache. Umur object dibatasi oleh beberapa factor, yaitu :
metode penghapusan object
object dihapus bisa melalui beberap algoritma penghapusan :
- Logistic Regression :
yaitu menghapus object dengan kemungkinan logistic regression terkecil. Kemungkinan logistic regression bisa diartikan sebagai besarnya kemungkinan object tersebut akan diakses diwaktu yang akan dating.
- Least Recently Used :
yaitu metode penghapusan object berdasarkan waktu kapan object tersebut terakhir diakses. Semakin lama (besar) waktunya, kemungkin dihapus juga akan semakin besar.
- Least Frequently Used :
Metode penghapusan object yang paling jarang diakses.
- First In First Out :
Penghapusan yang merunut metode berdasarkan waktu masuk ke dalam cache_dir, yaitu object yang paling awal masuk, berarti itu adalah object yang akan dihapus terlebih dahulu.
- Random :
Menghapus object secara random.
Kapasitas hardisk cache
Semakin besar kapasitas cache, berarti semakin lama umur object tersebut bisa disimpan, jika pemakaian hardisk sudah mendekati batas atas (cache_swap_high) penghapusan akan semakin sering dilakukan.
D. Memori
Memori dipakai squid dalam banyak hal. Salah satu contoh pemakaiannya adalah untuk disimpannya object yang popular, lazimnya disebut hot object. Jumlah hot object yang disimpan dalam memori bisa diatur dengan option cache_mem pada squid.conf
Sebenarnya yang paling memakan memori adalah metadata object, karena kebanyakan object sendiri sebenarnya disimpan dalam direktori cache_dir hardsik local. Semakin banyak kapasitas cache_dir, semakin banyak pula metadata dan semakin membebani pemakaian memori. Pada kebanyakan kasus untuk setiap 1.000.000 jumlah object, rata-rata dibutuhkan sebesar 72 MB memori untuk keseluruhan object dan 1,25 MB untuk metadata. Jumlah object ini bisa didapatkan dari besar cache_dir dibagi dengan jumlah rata-rata kapasitas object, biasanya setiap object bernilai 13 KB.
Mengingat pentingnya ketersediaan memori, penting untuk melihat sebagus apa aplikasi pengalokasian memori yang ada pada sistem operasi yang sedang bekerja. Secara default pada sistem operasi sudah tersedia rutin program untuk alokasi memori atau malloc (memory allocation). Namun pada beban yang sangat besar dan tanpa diimbangi penambahan memori yang memadai, malloc akan mencapai batas atas performansi dan kemudian mencapai status ketidakstabilan, dan squid akan menuliskan banyak pesan error pada log, misalnya seperti : "xmalloc : Unable to allocate 4096 bytes!".
Jika ini terjadi, langkah yang dapat dilakukan adalah melakukan penambahan memori, dan langkah kedua jika ingin lebih stabil adalah menginstall library untuk rutin program malloc yang lebih baru.
E. Management Bandwidth
Opsi-Opsi yang digunakan adalah
- menentukan jumlah aturan yang dipakai
- delay_pool pool
- Menentukan kelas masing-masing pool
- delay_class pool kelas
- Menentukan parameter masing-masing pool sesuai kelas yang digunakan
- delay_parameters pool parameter
- Menentukan hak akses penggunaan bandwidth
- delay_access pool allow | deny [!]nama_acl