Hasil Pencarian

Selasa, 09 Desember 2008

Konfigurasi, penggunaan dan metode Squid


 


 

A.    Konfigurasi-konfigurasi mendasar squid antara lain :


 

  1. 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.


     

  2. 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.


     

  3. 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.


     

  4. 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.


     

  5. 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.


     

  6. 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.


     

  7. 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.


     

  8. 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