Post on 20-Feb-2020
8
BAB 2
LANDASAN TEORI
2.1 Jaringan
Menurut Tannenbaum, Jaringan komputer adalah sekumpulan komputer
berjumlah banyak yang terpisah-pisah akan tetapi saling berhubungan dalam
melaksanakan tugasnya. Tujuan dari jaringan komputer adalah:
• Membagi sumber daya: contohnya berbagai pemakaian printer, CPU, memori,
harddisk
• Komunikasi: contohnya email, instant messaging, chatting
• Akses informasi: contohnya web browsing
Komputer tersebut saling berhubungan dengan media kabel, saluran telepon,
gelombang radio, satelit, atau sinar infra merah.
Berdasarkan luas jangkauannya (Tanenbaum, 2005, p 9-11), jaringan dapat
dibagi menjadi 3 bagian, yaitu Local Area Network (LAN), Metropolitan Area Network
(MAN), dan Wide Area Network (WAN). LAN merupakan jaringan milik pribadi di dalam
sebuah gedung atau kampus yang berukuran sampai beberapa kilometer. LAN seringkali
digunakan untuk menghubungkan komputer-komputer pribadi dan workstation dalam
kantor perusahaan atau pabrik-pabrik untuk memakai bersama suatu resource (misalnya,
printer) dan saling bertukar informasi.
MAN pada dasarnya merupakan versi LAN yang berukuruan lebih besar dan
biasanya memakai teknologi yang sama dengan LAN. MAN dapat mencakup kantor-
kantor perusahaan yang berdekatan atau juga sebuah kota dan dapat dimanfaatkan untuk
9
keperluan pribadi (swasta) atau umum. Sedangkan WAN adalah jaringan dengan skala
yang sangat besar yang mencakup daerah geografis yang luas, seringkali mencakup
sebuah negara atau benua.
2.2 Sistem Operasi Jaringan
Untuk mengelola suatu jaringan diperlukan adanya sistem operasi jaringan.
Sistem operasi jaringan dibedakan menjadi dua berdasarkan tipe jaringannya, yaitu
sistem operasi client-server dan sistem operasi jaringan peer to peer
(http://noc.kimpraswil.go.id/artikel/lan.pdf, 2006).
2.2.1 Jaringan Client-Server
Server adalah komputer yang menyediakan fasilitas bagi komputer-komputer
lain di dalam jaringan dan client adalah komputer-komputer yang menerima atau
menggunakan fasilitas yang disediakan oleh server. Server di jaringan tipe client-
server disebut dengan Dedicated Server karena murni berperan sebagai server yang
menyediakan fasilitas kepada workstation dan server tersebut tidak dapat berperan
sebagai workstation.
Keunggulan dari jaringan client-server:
• Kecepatan akses lebih tinggi karena penyediaan fasilitas jaringan dan
pengelolaannya dilakukan secara khusus oleh satu komputer (server) yang
tidak dibebani dengan tugas lain sebagai workstation.
• Sistem keamanan dan administrasi jaringan lebih baik, karena terdapat seorang
pemakai yang bertugas sebagai administrator jaringan, yang mengelola
administrasi dan sistem keamanan jaringan.
10
• Sistem backup data lebih baik, karena pada jaringan client-server backup
dilakukan terpusat di server, yang akan membackup seluruh data yang
digunakan di dalam jaringan.
Kelemahan dari jaringan client-server:
• Biaya operasional relatif lebih mahal.
• Diperlukan adanya satu komputer khusus yang berkemampuan lebih untuk
ditugaskan sebagai server.
• Kelangsungan jaringan sangat tergantung pada server. Bila server mengalami
gangguan maka secara keseluruhan jaringan akan terganggu.
2.2.2 Jaringan Peer to Peer
Bila ditinjau dari peran server di kedua tipe jaringan tersebut, maka server di
jaringan tipe peer to peer diistilahkan non-dedicated server, karena server tidak
berperan sebagai server murni melainkan sekaligus dapat berperan sebagai
workstation.
Keunggulan dari jaringan peer to peer:
• Antar komputer dalam jaringan dapat saling berbagi-pakai fasilitas yang
dimilikinya seperti harddisk, drive, fax/modem, printer.
• Biaya operasional relatif lebih murah dibandingkan dengan tipe jaringan client-
server, salah satunya karena tidak memerlukan adanya server yang memiliki
kemampuan khusus untuk mengorganisasikan dan menyediakan fasilitas
jaringan.
11
• Kelangsungan kerja jaringan tidak tergantung pada satu server. Sehingga bila
salah satu komputer/peer mati atau rusak, jaringan secara keseluruhan tidak
akan mengalami gangguan.
Kelemahan dari jaringan peer to peer:
• Troubleshooting jaringan relatif lebih sulit, karena pada jaringan peer to peer
setiap komputer dimungkinkan untuk terlibat dalam komunikasi yang ada. Di
jaringan client-server, komunikasi adalah antara server dengan workstation.
• Unjuk kerja lebih rendah dibandingkan dengan jaringan client-server, karena
setiap komputer/peer disamping harus mengelola pemakaian fasilitas jaringan
juga harus mengelola pekerjaan atau aplikasi sendiri.
• Sistem keamanan jaringan ditentukan oleh masing-masing user dengan
mengatur keamanan masing-masing fasilitas yang dimiliki
• Karena data jaringan tersebar di masing-masing komputer dalam jaringan,
maka backup harus dilakukan oleh masing-masing komputer tersebut.
2.3 OSI
Halsall (1995. p13) mengatakan di awal tahun 1985 terjadi peningkatan jaringan
yang sangat besar dalam segi kuantitas dan di pertengahan tahun 1980 kesulitan
berkomunikasi terjadi pada jaringan-jaringan komputer dengan spesifikasi dan
implementasi hardware dan software yang berbeda.Untuk dapat meningkatkan kinerja di
antara perangkat vendor dan untuk meningkatkan skala ekonomiknya maka diperlukan
ketentuan baku. Karena tugas komunikasi sangat kompleks, standar tunggal tidaklah
mencukupi. Lebih dari itu, fungsi-fungsi dipecah menjadi bagian-bagian yang dapat
12
ditangani dan disusun sebagai arsitektur komunikasi. Arsitektur ini kemudian akan
membentuk kerangka kerja bagi standarisasi. Berdasarkan hal ini ISO pada tahun 1977
membentuk suatu subkomite untuk mengembangkan semacam arsitektur. Hasilnya
adalah model referensi OSI (Open System Interconnection). Meskipun unsur-unsur
model yang penting berada pada tempatnya, stardar ISO terakhir, ISO 7498, tidak
dipublikasikan sampai tahun 1984. Suatu versi yang compatible secara teknis
dikeluarkan oleh CCITT (sekarang ITU-T) sebagai X-200.
Teknik penyusunan yang sudah diterima secara luas, dan salah satunya yang
dipilih oleh ISO, adalah layering. Fungsi-fungsi komunikasi dibagi menjadi suatu
rangkaian lapisan yang hierarkis. Masing-masing lapisan menampilkan subrangkaian
fungsi-fungsi yang masih berkaitan yang diperlukan untuk berkomunikasi dengan sistem
yang lain. Hal itu tergantung pada lapisan yang lebih rendah berikutnya untuk
menampilkan fungsi-fungsi yang lebih primitif serta untuk menyembunyikan detail-
detail fungsi tersebut. Hal itu juga menyediakan layanan untuk lapisan yang lebih tinggi
berikutnya.
Tugas ISO adalah untuk menentukan suatu rangkaian lapisan dan layanan-
layanan yang ditampilkan oleh setiap lapisan. Pembagiannya harus dengan
mengelompokkan fungsi-fungsi secara logis dan harus memiliki cukup lapisan untuk
membuat setiap lapisan menjadi manajemen kecil, tetapi tidak seharusnya mempunyai
begitu banyak lapisan yang memproses, memaksa kumpulan lapisan adalah
memperberat sistem.
13
Gambar 2.1 OSI Model
2.4 Suite Protocol TCP/IP
TCP/IP merupakan protokol yang paling sering digunakan dalam operasi jaringan,
protokol lainnya merupakan pelengkap yang membantu jaringan ini bekerja
(http://onno.vlsm.org/v09/onno-ind-1/network/jaringan-komputer-menggunakan-
protokol-tcpip-01-1992.rtf, 2005). Perlu dicatat bahwa pada jaringan komputer
menggunakan TCP/IP umumnya tiga lapisan teratas dilakukan oleh sistem operasi dari
komputer yang digunakan. Khususnya untuk komputer yang menggunakan UNIX telah
tersedia library untuk network programming sehingga dapat dikembangkan program
sendiri dengan mengakses langsung ke soket-soket TCP yang tersedia.
14
2.4.1 Prinsip Kerja Internet Protocol (IP)
Menurut Gilbert (1995), IP adalah suatu metoda atau protokol yang mengatur
bagaimana suatu data dikirim dari satu komputer ke komputer lain dalam suatu jaringan
komputer. Fungsi dari Internet Protocol secara sederhana dapat diterangkan seperti
cara kerja kantor pos pada proses pengiriman surat. Surat dimasukan ke kotak pos akan
diambil oleh petugas pos dan kemudian akan dikirim melalui rute yang acak, tanpa si
pengirim maupun si penerima surat mengetahui jalur perjalanan surat tersebut. Juga
jika dikirimkan dua surat yang ditujukan pada alamat yang sama pada hari yang sama,
belum tentu akan sampai bersamaan karena mungkin surat yang satu akan mengambil
rute yang berbeda dengan surat yang lain. Di samping itu, tidak ada jaminan bahwa
surat akan sampai ditangan tujuan, kecuali jika dikirimkan menggunakan surat tercatat.
Prinsip di atas digunakan oleh Internet Protocol, "surat" diatas dikenal dengan
sebutan datagram. Internet protocol (IP) berfungsi menyampaikan datagram dari satu
komputer ke komputer lain tanpa tergantung pada media kompunikasi yang digunakan.
Data transport layer dipotong menjadi datagram-datagram yang dapat dibawa oleh IP.
Tiap datagram dilepas dalam jaringan komputer dan akan mencari sendiri secara
otomatis rute yang harus ditempuh ke komputer tujuan. Hal ini dikenal sebagai
transmisi connectionless. Dengan kata lain, komputer pengirim datagram sama sekali
tidak mengetahui apakah datagram akan sampai atau tidak.
Untuk membantu mencapai komputer tujuan, setiap komputer dalam jaringan
TCP/IP harus diberikan IP address. IP address harus unik untuk setiap komputer,
tetapi tidak menjadi halangan bila sebuah komputer mempunyai beberapa IP address.
IP address terdiri atas 8 byte data yang mempunyai nilai dari 0-255 yang sering ditulis
dalam bentuk [xx.xx.xx.xx] (xx mempunyai nilai dari 0-255).
Pada header Internet Protocol selain IP address dari komputer tujuan dan
komputer pengirim datagram juga terdapat beberapa informasi lainnya. Informasi ini
mencakup jenis dari protokol transport layer yang ditumpangkan diatas IP. Tampak
pada gambar 2.2 ada dua jenis protokol pada transport layer yaitu TCP dan UDP.
15
Gambar 2.2 Protokol-protokol pada transport layer
Informasi penting lainnya adalah Time-To-Live (TTL) yang menentukan
berapa lama IP dapat hidup didalam jaringan. Nilai TTL akan dikurangi satu jika IP
melalui sebuah komputer. Hal ini penting artinya terutama karena IP dilepas di
jaringan komputer. Jika karena satu dan lain hal IP tidak berhasil menemukan alamat
tujuan maka dengan adanya TTL, IP akan mati dengan sendirinya pada saat TTL
bernilai nol. Disamping itu juga tiap IP yang dikirimkan diberikan identifikasi
sehingga bersama-sama dengan IP address komputer pengirim data dan komputer
tujuan, tiap IP dalam jaringan adalah unik.
Khususnya untuk pemakai jaringan komputer hal yang terpenting untuk
dipahami secara benar-benar adalah konsep IP address. IP address ditulis
berdasarkan standar yang dikeluarkan oleh InterNIC yaitu suatu organisasi yang
bertanggung jawab dalam administrasi pengalamatan IP internet sedangkan untuk
alamat lokal ditentukan berdasarkan otoritas penomoran internet yaitu Internet
Assigned Numbers Authority (IANA). Pengaturan IP address penting, terutama pada
saat mengatur routing secara otomatis. Dengan konsep IP address, route perjalanan
IP dalam jaringan komputer dapat dilakukan secara otomatis. Tentunya sukar bagi
16
manusia untuk mengingat sedemikian banyak IP address. Untuk memudahkan,
dikembangkan Domain Name System (DNS).
Menurut Miller (1996, p35), Pengalamatan IP Address dibagi ke dalam 5
kelas, yaitu:
1. Kelas A
Pengalamatan IP kelas A diberikan untuk jaringan dengan jumlah host yang
sangat besar. Bit pertama dari pengalamatan IP kelas A selalu diset 0 (nol)
sehingga byte terdepan dari IP address selalu bernilai antara 0-127. 8 bit pertama
digunakan sebagai network number sedangkan 24 bit terakhir untuk host number.
Misal IP address kelas A adalah 113.46.5.6 maka network numbernya adalah
113 dan host numbernya adalah 46.5.6.
2. Kelas B
Pengalamatan IP kelas B biasanya dialokasikan untuk jaringan berukuran sedang
dan besar. Dua bit pertama dari pengalamatan IP kelas B selalu di set 10 (satu
nol) sehingga byte terdepan dari pengalamatan IP selalu bernilai antara 128-191.
16 bit pertama digunakan sebagai network number, sedangkan 16 bit berikutnya
digunakan sebagai host number. Misal pengalamatan IP kelas B 132.92.121.1
maka network numbernya dalah 132.92 dan host numbernya adalah 121.1
Dengan panjang host number yang 16 bit, maka network dengan pengalamatan
IP kelas B dapat menampung sekitar 65000 host.
3. Kelas C
Pengalamatan IP kelas C awalnya digunakan untuk jaringan berukuran kecil
misalnya LAN. 3 bit awal dari pengalamatan IP kelas C selalu diset 111.21 bit
berikutnya membentuk network number sedangkan 8 bit terakhir untuk host
17
number. Dengan konfigurasi ini sekitar dua juga network dapat dibentuk dengan
memiliki 256 pengalamatan IP untuk masing-masing network.
4. Kelas D
Pengalamatan IP kelas D digunakan untuk keperluan IP multicasting. 4 bit awal
di set 1110. Bit-bit berikutnya diatur sesuai dengan keperluan multicast group
yang menggunakan pengalamatan IP ini. Dalam multicast tidak dikenal network
number dan host number.
5. Kelas E
Pengalamatan IP kelas E tidak digunakan untuk umum. 4 bit awal di set 1111.
Selain network number, digunakan network prefix dengan tanda garis miring ‘/’
diikuti angka yang menunjukkan panjang network prefix dalam bit) untuk
menyebut bagian pengalamatan IP yang menunjukkan jaringan. Contohnya,
untuk alamat IP kelas B 132.92.121.1 maka dapat ditulis dengan 132.92/16
2.4.2 Subnetting
Subnetting memungkinkan untuk menciptakan multiple logical network yang
terdapat dalam sebuah jaringan kelas A, B, atau C. Jika subnetting tidak dilakukan,
maka hanya akan dapat digunakan satu jaringan dari sebuah jaringan kelas A, B, atau
C.
Setiap data link pada sebuah jaringan harus memiliki sebuah network ID
yang unik, dengan setiap node pada link tersebut merupakan anggota dari jaringan
yang sama. Jika sebuah jaringan besar (jaringan dengan kelas A, B, atau C) dibagi
menjadi sub jaringan yang lebih kecil, maka akan memungkinkan terciptanya sebuah
jaringan yang di dalamnya terdapat interkoneksi antara subjaringan yang ada. Setiap
18
data link pada jaringan ini kemudian akan memiliki sebuah unique network ID atau
subnetwork ID. Sebuah alat maupun gateway yang menghubungkan jaringan atau
subjaringan sejumlah n memiliki IP address sejumlah n, masing-masing untuk setiap
jaringan / subjaringan yang saling berinterkoneksi.
Untuk melakukan subnetting pada sebuah jaringan dapat dilakukan dengan
cara memperluas natural mask menggunakan beberapa bit dari bagian host ID pada
IP address untuk menciptakan sebuah subnetwork ID.
Jika terdapat sebuah jaringan kelas C dengan network address 204.15.5.0
yang memiliki sebuah natural mask 255.255.255.0, maka dapat dibuat subjaringan
seperti di bawah ini:
204.15.5.0 - 11001100.00001111.00000101.00000000
255.255.255.224 - 11111111.11111111.11111111.11100000
----------------------------------------|sub|-------
Dengan memperluas subnet mask menjadi 255.255.255.224, telah diambil 3
bit (yang diindikasikan oleh kata sub) dari bagian host pada IP address dan
menggunakannya untuk membuat subjaringan-subjaringan baru.
Dengan 3 bit ini, terdapat kemungkinan untuk menciptakan subjaringan baru
sebanyak 8 subjaringan. Dengan sisa 5 bit host ID, masing-masing subjaringan dapat
memiliki host address hingga 32 host address, dengan jumlah host address efektif
adalah 30. Hal ini disebabkan karena host ID yang seluruhnya bernilai 0 dan 1 tidak
digunakan (http://www.cisco.com/warp/public/701/3.html#ustand_subnet, 2006).
19
Maka, subjaringan yang terbentuk adalah:
IP address subnet mask range host address 204.15.5.0 255.255.255.224 dari 1 hingga 30 204.15.5.32 255.255.255.224 dari 33 hingga 62 204.15.5.64 255.255.255.224 dari 65 hingga 94 204.15.5.96 255.255.255.224 dari 97 hingga 126 204.15.5.128 255.255.255.224 dari 129 hingga 158 204.15.5.160 255.255.255.224 dari 161 hingga 190 204.15.5.192 255.255.255.224 dari 193 hingga 222 204.15.5.224 255.255.255.224 dari 225 hingga 254
Table 2.1 Dengan 3 bit terbentuk 8 subjaringan
2.4.3 CIDR
CIDR (Classless Interdomain Routing) diperkenalkan untuk meningkatkan
ruang pengalamatan dan skalabilitas routing di internet. CIDR diperlukan karena
perkembangan internet yang sangat cepat dan pertumbuhan IP routing tables yang
terdapat pada internet router.
Dalam CIDR sebuah IP address dari sebuah jaringan direpresentasikan
dengan sebuah prefiks, yang terdiri dari sebuah IP address dan indikasi mengenai
panjang netmask yang merupakan jumlah banyaknya bit yang bernilai 1 pada
netmask. Sehingga sebuah jaringan dengan network address 172.16.0.0 dengan
netmask 255.255.0.0 dapat direpresentasikan sebagai 172.16.0.0 /16. Angka 16
didapat dari 2 octet bernilai 255 yang diubah ke dalam bilangan binary yang akan
menghasilkan angka 1 sebanyak 16 buah.
CIDR juga menggambarkan sebuah arsitektur internet yang lebih tersusun,
karena setiap domain mendapatkan IP address dari tingkat yang lebih tinggi. Hal ini
20
memungkinkan penyederhanaan domain dapat dilakukan pada tingkat yang lebih
tinggi (http://public.pacbell.net/dedicated/cidr.html, 2006)
2.4.4 Prinsip kerja Transmission Control Protocol (TCP)
(http://onno.vlsm.org/v09/onno-ind-1/network/jaringan-komputer-
menggunakan-protokol-tcpip-01-1992.rtf, 2005), Berbeda dengan Internet Protocol
(IP), TCP mempunyai prinsip kerja seperti virtual circuit pada jaringan telepon. TCP
lebih mementingkan kehandalan dalam pengiriman data antara dua komputer dalam
jaringan. TCP tidak berkaitan dengan segala sesuatu yang dikerjakan oleh IP, yang
penting adalah hubungan komunikasi antara dua komputer berjalan dengan baik.
Dalam hal ini, TCP mengatur bagaimana cara membuka hubungan komunikasi, jenis
aplikasi apa yang akan dilakukan dalam komunikasi tersebut (misalnya mengirim e-
mail, transfer file, dan sebagainya.) Di samping itu, juga mendeteksi dan mengoreksi
jika ada kesalahan data. TCP mengatur seluruh proses koneksi antara satu komputer
dengan komputer yang lain dalam sebuah jaringan komputer.
Berbeda dengan IP yang mengandalkan mekanisme connectionless pada TCP
mekanisme hubungan adalah connection oriented. Dalam waktu yang ditentukan
komputer yang sedang berhubungan harus mengirimkan data atau acknowledge agar
hubungan tetap berlangsung. Jika hal ini tidak dapat dilakukan maka dapat diasumsikan
bahwa komputer yang sedang berhubungan mengalami gangguan dan hubungan secara
logis dapat diputus.
TCP mengatur multiplexing dari data yang dikirim/diterima oleh sebuah
komputer. Adanya identifikasi pada TCP header memungkinkan multiplexing
dilakukan. Hal ini memungkinkan sebuah komputer melakukan beberapa hubungan
21
TCP secara logis. Bentuk hubungan adalah full duplex, hal ini memungkinkan dua buah
komputer saling berkomunikasi dalam waktu bersamaan tanpa harus bergantian
menggunakan kanal komunikasi. Untuk mengatasi saturasi (congestion) pada kanal
komunikasi, pada header TCP dilengkapi informasi tentang flow control.
Hal yang cukup penting untuk dipahami pada TCP adalah port number. Port
number menentukan layanan yang dilakukan oleh program aplikasi diatas TCP.
Nomor-nomor ini telah ditentukan oleh Network Information Center dalam Request
For Comment (RFC) 1010 [10]. Sebagai contoh untuk aplikasi File Transfer Protocol
(FTP) diatas transport layer TCP digunakan port number 20.
Prinsip kerja dari TCP berdasarkan prinsip client-server. Server adalah program
pada komputer yang secara pasif akan mendengarkan (listen) port number yang telah
ditentukan pada TCP. Sedang client adalah program yang secara aktif akan membuka
hubungan TCP ke komputer server untuk meminta layanan yang dibutuhkan.
State diagram kerja TCP diperlihatkan pada gambar 2.3. Pada state diagram
gambar 2.3, client akan secara aktif membuka hubungan (active open) dengan
mengirimkan sinyal SYN (state SYN SENT) ke komputer server tujuan. Jika server
menerima sinyal SYN maka server yang saat itu berada pada state LISTEN akan
mengirimkan sinyal SYN dan kedua komputer (client dan server) akan mengalami
perubahan state menjadi ESTAB. Jika tidak ada tanggapan dari komputer yang dituju,
maka program akan kembali pada state CLOSE. Setelah layanan yang dilakukan telah
selesai maka salah client akan mengirimkan sinyal FIN dan komputer client akan
berada pada state FIN WAIT sampai sinyal FIN dari server diterima. Pada saat
menerima sinyal FIN, server akan ke state CLOSE WAIT hingga hubungan diputus.
Akhirnya kedua komputer akan kembali pada state CLOSE.
22
Gambar 2.3 State diagram kerja TCP
2.4.5 Komponen Fisik dalam Jaringan TCP/IP
Berdasarkan Tanenbaum (2002), komputer dengan protokol TCP/IP dapat
terhubung ke komputer lain dan jaringan lain karena bantuan peralatan jaringan
komputer. Pada komputer itu sendiri, ditambahkan yang disebut network interface.
Network interface dapat berupa ethernet card atau modem. Ethernet card terhubung
ke komputer lain lewat kabel RG-585 atau ke ethernet hub lewat kabel UTP. Modem
terhubung ke jaringan melalui kabel telepon. Disamping itu masih diperlukan
peralatan lain untuk membentuk jaringan komputer. Peralatan ini disebut sebagai
device penghubung jaringan.
Device penghubung jaringan ini secara umum dibagi ke dalam beberapa
kategori, yaitu repeater, bridge, dan router. Repeater merupakan fasilitas paling
sederhana dalam jaringan komputer yang berfungsi menerima sinyal dari satu
segmen kabel LAN dan mengirimkannya kembali dengan kekuatan yang sama
dengan sinyal asli pada satu atau lebih segmen kabel LAN yang lain. Dengan adanya
repeater, jarak antar dua jaringan komputer bisa diperjauh. Bridge dapat
23
menghubungkan jaringan menggunakan metode transmisi berbeda atau medium
access control yang berbeda. Router memiliki kemampuan melewatkan IP dari satu
jaringan ke jaringan lain yang mungkin memiliki banyak jalur di antara keduanya.
Router-router yang saling terhubung ke dalam jaringan internet turut serta dalam
sebuah algoritma routing terdistribusi untuk menentukan jalur terbaik yang dilalui
paket IP dari satu sistem ke sistem lain.
2.5 Proxy Server
Proxy server merupakan suatu komputer/hardware yang menghubungkan dua
jaringan (http://www.infokomputer.com/arsip/internet/0797/tutor/tutorial.shtml, 1997).
Umumnya proxy server digunakan untuk menghubungkan jaringan internal (Private IP)
dengan jaringan eksternal (Public IP), hubungan antara proxy server, jaringan internal,
dan jaringan eksternal bisa digambarkan secara kasar seperti berikut ini:
[ jaringan internal ] - eth0-<proxy>-eth1 - [ jaringan eksternal ]
Private IP tidak bisa mengakses data pada Public IP, sehingga diperlukan proxy
server untuk menghubungkan keduanya. Data yang dikirimkan dari komputer internal
akan diubah IP asalnya menjadi IP proxy server, dan tanggapan yang didapat akan
dikembalikan pada komputer pada jaringan internal yang melakukan request.
Pada awalnya, proxy server dikembangkan untuk menyimpan halaman web yang
sering diakses. Saat pertama kali munculnya internet, koneksi sangat lambat, ruang
lingkupnya masih relatif kecil, dan halaman web masih statis. Pada waktu itu internet
hanya terdiri dari beberapa ribu situs yang sebagian besar untuk para ilmuwan dan
akademis. Setiap kali ada berita penting pada suatu situs web maka banyak ilmuwan dari
organisasi yang sama akan mengunjungi situs tersebut.
24
2.5.1 Fungsi Proxy Server
Proxy Server memiliki banyak manfaat antara lain melakukan blocking URL
(Uniform Resource Locator), memfilter content, mengecek konsistensi, memblokir
routing, logging dan alerting, caching, dan Reverse Proxy Load Balancing.
2.5.1.1 Pemblokiran URL
Pemblokiran URL memungkinkan administrator untuk menolak situs
tertentu berdasarkan URL. Proxy server mengecek setiap request dengan daftar
halaman yang ditolak sebelum ia memperbarui request tersebut. Jika URL
diblokir, proxy server tidak akan meminta atau memberikan halaman tersebut.
Namun, pemblokiran URL mudah diatasi, karena situs web bisa ditulis
dengan menggunakan IP address atau bahkan dengan keseluruhan nomor
alamat. User dapat mengetik apa saja dalam web browser untuk mengakses
halaman yang sama, namun URL blocker mungkin hanya akan mengecek
alamat lengkap URL.
Masalah lain dengan pemblokiran URL adalah memperbarui situs yang
diblokir. Situs seperti hacking, pornografi, dan situs game mempunyai masa
hidup yang singkat, dapat muncul dan hilang dengan cepat. Terdapat kesulitan
untuk memblokir dengan database pemblokiran URL. Kebanyakan orang akan
menggunakan search engine atau berita Usenet untuk mengetahui keberadaan
sebuah situs.
2.5.1.2 Pemfilteran Content
Karena proxy server memperbarui semua muatan protokol dan protokol
spesifik, proxy server dapat digunakan untuk mencari muatan content yang
25
mencurigakan. Ini berarti layanan HTTP proxy dapat dikonfigurasi untuk
menguraikan ActiveX control, Java applet, atau bahkan gambar berukuran
besar jika dirasa hal-hal tersebut bisa menyebabkan masalah keamanan. SMTP
Proxy juga dapat digunakan untuk menguraikan attachment yang berupa
executable file dan file arsip zip jika file tersebut dirasa dapat menyebabkan
masalah.
Pemfilteran content juga dapat digunakan untuk mengecek halaman
web akan adanya kata atau kalimat tertentu, seperti merk dagang kompetitor
atau sejumlah berita hangat. ActiveX control, Java applet, dan executable file
dalam e-mail harus difilter karena dapat digunakan untuk melakukan instalasi
Trojan horse. Jika ada user yang perlu mentransfer executable file, dapat
diminta untuk mentransfernya dalam file zip atau gunakan BinHex atau
encoder yang lain untuk mentransfernya dalam format teks. File akan perlu di-
decode, sehingga mencegah pengiriman virus atau Trojan horse.
2.5.1.3 Pengecekan Konsistensi
Pengecekan konsistensi merupakan pengecekan content protocol untuk
memastikan bahwa content tersebut dapat dimengerti oleh protokol.
Pengecekan konsistensi memastikan bahwa jenis content tertentu tidak dapat
digunakan untuk mengeksploitasi kelemahan sistem keamanan dalam jaringan
internal. Sebagai contoh, SMTP daemon Sendmail Unix dulunya terkenal peka
terhadap masalah buffer overflow. Ini terjadi pada waktu email dikirim dan
membutuhkan waktu lebih lama dari yang ditentukan. Sendmail akan
mengalokasikan bagian memory sebesar yang diminta oleh email tersebut, lalu
26
kemudian memeriksa email sampai akhirnya tiba di bagian akhir. Jika di antara
bagian yang diminta dan bagian akhir berisi kode executable, hacker bisa
mendapatkan akses root ke email server.
Pengecekan konsistensi dengan proxy server dapat memastikan bahwa
eksploitasi buffer overflow dengan menggunakan URL yang lebih panjang
dapat dihilangkan pada proxy server sehingga eksploitasi tersebut tidak akan
mempengaruhi mesin internal. Namun masalah yang harus dicek biasanya
tidak dapat diketahui sampai hacker mengeksploitasi terlebih dahulu, jadi
kebanyakan pengecekan konsistensi hanya dilakukan setelah ditemukan adanya
eksploitasi.
2.5.1.4 Pemblokiran Routing
Paket Transport layer perlu diarahkan karena request semuanya akan
diperbarui. Hal ini menghilangkan eksploitasi Transport layer seperti routing,
fragmentasi, dan beragam serangan Denial of Service. Dengan menghilangkan
routing, juga dapat dipastikan bahwa semua protokol yang belum ditentukan
tidak akan dilewatkan ke jaringan publik. Pemblokiran routing mungkin
merupakan keuntungan proxy server yang paling penting. Karena paket
TCP/IP sebenarnya lewat antara jaringan internal dan eksternal, banyak
serangan Denial of Service dan eksploitasi yang dapat dicegah.
2.5.1.5 Logging dan Alerting
Proxy server juga menyediakan fasilitas logging dan alerting. Proxy
server memastikan bahwa semua content mengalir melalui satu tempat, yang
27
bisa
menjadi tempat pemeriksaan data jaringan. Kebanyakan proxy server akan
mencatat penggunaan proxy server oleh user dan dapat dikonfigurasi untuk
mencatat situs yang dikunjungi. Ini akan memungkinkan untuk mengatur ulang
cara browsing user jika dicurigai adanya aktivitas yang ilegal atau tidak
semestinya.
Fasilitas alert disediakan oleh beberapa proxy server untuk memberi
peringatan atas serangan yang terjadi, meskipun proxy server umumnya bukan
sasaran penyerangan. Namun, fasilitas ini bisa digunakan untuk meningkatkan
kewaspadaan pada interface eksternal, yang sering kali dicoba untuk
dieksploitasi oleh hacker.
2.5.1.6 Caching
Selain fasilitas-fasilitas diatas, proxy server juga dapat memberikan
peningkatan kinerja yang penting. Pertama, proxy server dapat menyimpan
data yang sering direquest untuk meningkatkan kinerja dengan menghilangkan
akses berlebih ke jaringan eksternal (yang kecepatannya lebih lambat). Kedua,
proxy server dapat menyeimbangkan beban layanan ke sejumlah server
internal.
Seperti telah disinggung diatas, proxy server mula-mula dikembangkan
sebagai peningkat kinerja, bukan sebagai perangkat pengaman. Dan pada awal
munculnya Internet, hanya terdapat ribuan situs web yang kkebanyakan
bersifat ilmiah dan tidak sering berubah. Karena koneksi ke Internet lambat,
proxy server dapat digunakan untuk menyimpan sebagian besar Internet secara
28
lokal, sehingga pengguna internal cukup browsing ke proxy server lokal.
Content tidak berubah dengan sangat cepat, jadi ini masih masuk akal.
Sekarang caching hanya masuk akal jika ada user dalam jumlah besar
yang mengakses halaman web yang sama berulang-ulang. Pola penggunaan
seperti ini sekarang sudah jarang, jadi segi caching, proxy server sudah mulai
usang.
Dengan e-commerce yang semakin umum, caching akan kembali
menjadi fungsi yang penting karena banyak orang akan melakukan
pekerjaannya dengan menghadapi beberapa situs yang sering diakses. Sebagai
contoh, ambil agen perjalanan yang menggunakan Expedia.com dan
Travelocity.com untuk melakukan pekerjaannya. Banyak agen akan mengakses
dua situs yang sama berulang-ulang, sehingga menyimpan elemen situs utama,
gambar, dan applet adalah masuk akal.
2.5.1.7 Reverse Proxy Load Balancing
Proxy server dapat digunakan untuk melakukan reverse proxy, atau
menyediakan layanan proxy server ke client eksternal untuk server internal.
Fungsi ini digunakan untuk menyeimbangkan beban client ke sejumlah web
server. Banyak situs web yang fungsionalitasnya tinggi menggunakan aplikasi
kompleks seperti ISAPI, Active Server Pages, Java servlet, atau CGI. Aplikasi
ini dijalankan pada server, sehingga sangat mengurangi banyaknya client yang
mampu ditangani oleh satu server. Sebagai contoh, Windows 2000 server yang
menjalankan IIS (Internet Information Service) yang bisa menangani sampai
100.000 browser untuk halaman HTML standar hanya bisa menangani 5000
29
browser halaman ASP (Active Server Page). Ini berarti bahwa kebanyakan
fungsi e-commerce sebenarnya tidak bisa ditangani oleh satu server, jadi situs
tersebut harus dijalankan secara paralel ke sejumlah mesin. Sebagai contoh,
http://www.microsoft.com/ dijalankan pada 30 server DNS yang identik. DNS
menyediakan skema dasar load-sharing di mana akses kemana DNS akan
mendapatkan salah satu IP address, tetapi ini belum benar-benar
menyeimbangkan beban.
Proxy server dapat digunakan untuk merespon ke satu IP address dan
kemudian mengarahkan koneksi client ke salah satu server di belakangnya.
Proxy server dapat menggunakan beberapa tolok ukur yang disediakan oleh
semua web server untuk mengetahui server mana yang mempunyai sisa
kapasitas paling banyak. Setiap client yang terhubung kemudian dapat
diarahkan ke web server mana pun yang mempunyai kapasitas yang cukup
untuk menanganinya.
2.5.2 Kelemahan Proxy Server
Selain fungsi-fungsi yang telah disebutkan di atas, ternyata proxy server juga
mempunyai kelemahan, antara lain proxy dapat membuat single point of failure,
sehingga software client sering kali harus dapat bekerja dengan proxy server (hanya
sistem firewall dan proxy server tingkat lanjut yang dapat bekerja transparan pada
jaringan), proxy server harus ada untuk semua layanan, proxy server tidak
melindungi inti sistem operasi, dan masalah proxy server terhadap kinerja.
30
2.5.2.1 Single Point of Failure
Bersamaan dengan kontrol terpusat, maka ada kesalahan terpusat
(single point of failure). Jika hacker dapat mematikan proxy server, seluruh
organisasi dapat terputus dari Internet. Proxy server, router, dan firewall
semua mengalami hal ini. Pada router, masalah mudah diatasi dengan
menggunakan lebih dari satu rute ke Internet. Firewall jauh lebih aman
dibanding proxy server karena menyediakan filtering paket untuk
menghilangkan masalah yang disebabkan oleh Denial of Service. Namun,
proxy server murni tidak menyertakan fungsi untuk melindungi diri dari
serangan sehingga sangat rentan baik terhadap penyusupan dan Denial of
Service.
Proxy server modern biasanya menyertakan fitur hot-failover, di mana
proxy server kedua dengan koneksi jaringan yang sama secara berkelanjutan
melakukan query pada proxy server yang aktif dan mengambil IP addressnya
jika proxy server tersebut tidak aktif. Yang lain menggunakan fitur load-
balancing untuk menyediakan beberapa proxy server yang seluruhnya
digunakan pada saat bersamaan. Fitur Load Balancing pada operating system
dapat dikonfigurasi bersama software proxy server untuk membuat proxy
server yang bersifat faulttolerant semacam ini.
2.5.2.2 Persyaratan Client
Web browser yang digunakan untuk melakukan browsing di internet
harus mendukung koneksi ke proxy server dengan cara mengonfigurasi ke
proxy server mana semua request harus dikirimkan. Jika software client tidak
31
dapat dikonfigurasi untuk menggunakan proxy server, layanan proxy server
tidak dapat digunakan kecuali dengan Network Address Translator. Ini bisa
menjadi masalah besar untuk layanan seperti FTP di mana software client yang
disertakan bersama kebanyakan operating system tidak mendukung koneksi ke
proxy server.
Layanan proxy server yang mempunyai address translating firewall
dapat mengatasi mengatasi ini karena dapat memodifikasi alamat jaringan
inbound dan outbound. Ini berarti client tidak perlu tahu atau dikonfigurasi
untuk menggunakan proxy server yang ada sebagai bagian dari address
translating firewall.
2.5.2.3 Persyaratan Layanan
Layanan proxy server yang berbeda dibutuhkan untuk setiap protokol
layanan. Network Address Translation bersifat universal dan dapat bekerja
dengan semua protokol kecuali protokol-protokol yang mengandalkan IP
address atau membutuhkan kemampuan untuk membuka back channel untuk
client. Protokol yang tidak memiliki layanan proxy server tidak dapat
dihubungkan melalui proxy server, kecuali dengan menggunakan layanan
proxy server TCP generic (seperti proxy server SOCKS generic) yang bekerja
mirip dengan Network Address Translator. Namun, layanan seperti ini tidak
dapat melakukan content filtering.
Adanya banyak layanan membuat pemfilteran content yang tidak
efektif. Layanan streaming seperti RealAudio atau RealVideo sangat sulit untuk
difilter kerena isinya harus dikirimkan secara real time, dan interupsi pada
32
aliran data akan membuat sisa data tidak dapat dibaca. Karena content seperti
ini tidak dapat difilter, maka harus diblokir jika dianggap membahayakan
keamanan.
2.5.2.4 Kerentanan Inti Sistem Operasi
Seperti web server, proxy server juga beroperasi pada Application
Layer, di atas Network dan Transport Layer. Ini berarti proxy server tidak
melakukan apa-apa selain memfilter paket TCP/IP yang tiba di server, dan
tidak mencampuri layanan Application Layer yang lain seperti file sharing atau
remote procedure call. Hal ini membuat komputer terbuka terhadap hacking.
Walaupun hampir semua operating system modern mendukung pemilteran
paket, namun filter yang terdapat tidak sekuat firewall. Port-port yang tidak
digunakan sebaiknya diblok untuk dapat meningkatkan keamanan pada proxy
server.
Eksploitasi dapat muncul pada berbagai level, maka itu sebaiknya
hanya menjalankan sedikit layanan pada firewall dan memisahkan fungsi proxy
server pada mesin yang terpisah. Jika proxy server dibuat di belakang filter,
maka hacker dapat berada di belakang filter untuk mengeksploitasi proxy
server. Dengan menggunakan firewall yang terintegrasi dengan proxy server,
filter masih dapat melindungi jaringan bahkan jika layanan proxy server
dieksploitasi.
33
2.5.2.5 Dampak Terhadap Kinerja
Proxy server memiliki kekurangan pada kinerja, yaitu terdapat
kemungkinan terjadinya bottleneck. Seperti firewall atau router, satu koneksi
proxy server ke internet dapat membuat bottleneck jika tidak di-upgrade ketika
jumlah user jaringan bertambah. Walaupun proxy server awalnya
meningkatkan kinerja melalui mekanisme caching, namun proxy server dapat
membuat semua semua user yang menggunakannya menunggu jika jumlah
user lebih banyak dari yang dapat didukung oleh server. Bottleneck proxy
server hanya dapat terjadi bila koneksi jaringan lebih cepat dari 1,5 MB/s atau
pada waktu ada yang salah dengan proxy server. Untuk dapat mengatasi hal ini
adalah dengan menambah lebih banyak proxy server.
2.6 Squid Proxy Server
Menurut Dodi Maryanto (2001), Squid Proxy Server digunakan untuk
melakukan efisiensi bandwidth internet pada sebuah organisasi yang terhubung ke
jaringan internet. Hal ini diperlukan mengingat antara lain kecenderungan
pengguna/sekelompok pengguna internet yang mengakses halaman web tertentu
secara terus-menerus pada suatu kurun waktu.
Hal tesebut tidak hanya terjadi di perusahaan yang menggunakan internet,
tetapi juga termasuk di warnet-warnet. Hal ini akan membebani bandwidth karena
setiap permintaan halaman web akan diperlakukan dengan cara yang sama, yaitu web
server yang diminta akan memberikan halaman web yang diminta secara utuh,
terlepas dari apakah halaman tersebut pernah diminta sebelumnya, dalam waktu
yang relatif singkat.
34
2.6.1 Cara Kerja Squid Proxy Server
Squid proxy server melakukan tugasnya dengan menyimpan halaman-
halaman web (selanjutnya disebut object) yang pernah menjadi request oleh
client pada suatu jaringan internal, sehingga apabila ada permintaan terhadap
object yang sama dan pernah diakses sebelumnya dalam perbedaan waktu yang
singkat atau jika ada object yang tadinya disimpan itu belum kadaluarsa, maka
squid proxy server tidak akan meneruskan permintaan itu ke web server di
jaringan internet, melainkan akan memberikan object yang disimpannya kepada
client yang membutuhkan. Object/Internet Object adalah file, dokumen atau
respon terhadap sebuah permintaan terhadap berbagai layanan seperti FTP atau
HTTP.
Hal ini tentunya akan memberikan penghematan bandwidth karena object
yang sama tidak perlu secara diambil berulang-ulang dari jaringan internet.
Penghematan ini bervariasi tergantung dari beberapa faktor misalnya: jumlah
pengguna yang terhubung ke jaringan internet melalui squid proxy server,
perilaku pengguna dalam mengakses halaman web, kesamaan/kemiripan tugas
dan hobi dari masing-masing pengguna. Secara umum, penghematan dapat
berkisar antara 30-70%. Dengan pertimbangan bahwa harga bandwidth dihitung
dalam dollar Amerika, maka secara ekonomik penghematan itu akan sangat
besar artinya bagi organisasi tersebut.
Dalam dokumentasinya, Squid proxy server tidak hanya melayani akses
HTTP, tetapi juga gopher dan FTP. Dari sisi keamanan, Squid proxy server
mengakomodasi SSL (Secure Socket Layer), access control yang dapat
dikonfigurasi dan pencatatan akses (logging) secara penuh. Untuk
35
mengakomodasi jaringan serta permintaan yang semakin besar, Squid proxy
server juga dapat disusun membentuk hirarki atau hubungan tertentu untuk
memaksimalkan penghematan bandwidth.
2.6.2 Hubungan dan Hirarki antar Squid Proxy Server
Dalam penggunaannya, dimungkinkan untuk menggunakan lebih dari
satu proxy server untuk melayani permintaan. Hal ini mungkin terjadi jika cache
server melayani permintaan (request) dalam jumlah yang besar pada satu satuan
waktu. Misalnya pada sebuah institusi pendidikan seperti universitas, perusahaan
dengan cabang yang tersebar di berbagai daerah, atau mungkin ISP (Internet
Service Provider) yang melayani ribuan client setiap harinya. Dengan
menggabungkan beberapa cache server dalam suatu hierarki, maka setiap
permintaan akan dapat dilayani dengan baik tanpa penundaan (delay) yang
terlalu lama.
Hubungan antar Squid proxy server terdiri dari 2 jenis, yaitu:
• Sibling
Merupakan hubungan setingkat secara struktural satu sama lain. Jika
sebuah cache server melakukan request terhadap cache server sibling
lainnya, maka object yang diminta akan diberikan jika memang dimiliki,
jika tidak, proxy server sibling tidak perlu melakukan request ke internet.
36
• Parent/Child
Merupakan hubungan bertingkat secara struktural satu sama lain. Artinya,
sebuah cache server dapat mempunyai parent berupa cache server lain,
sedangkan cache server lain tersebut otomatis mempunyai child cache
server asalnya.Jika sebuah cache server melakukan request terhadap cache
server parent lainnya, maka object yang diminta akan diberikan jika
memang dimiliki dan cache server parent wajib melakukan request ke
internet jika object tersebut tidak dimilikinya.
Pada struktur yang lebih kompleks, dimungkinkan penyusunan cache
server secara sibling maupun parent/child secara bersamaan. Hal ini tentu saja
dilakukan dengan pertimbangan banyaknya permintaan terhadap object internet,
dan dengan saling terhubungnya proxy server, diharapkan respon yang lebih
cepat.
Proxy server yang ada dalam suatu hirarki dalam berkomunikasi dengan
cache server lain dalam hirarki yang sama menggunakan Internet Cache
Protocol (ICP). Komunikasi ini dapat berupa pertanyaan tentang ketersediaan
suatu object atau jawaban atas pertanyaan tersebut.
ICP menggunakan default port 3130 dan protokol UDP untuk saling
berkomunikasi. Fungsi ini dapat dimatikan jika sibling/parent tidak menyalakan
fungsi ICP dengan cara memberikan option no-query pada daftar cache_peer.
37
2.6.3 Manajemen Objek
Manajemen objek merupakan salah satu hal yang sangat penting pada
operasional Squid. Metadata disimpan dalam memory dan merujuk ke objek tertentu
di dalam harddisk. Hal ini dilakukan untuk mempercepat proses pencarian objek
tertentu hanya dengan melihat metadata-nya saja.
Dalam proses ini juga diatur objek mana yang harus dihapus berdasarkan
umur object yang bersangkutan. Penghapusan objek perlu dilakukan mengingat
banyak objek yang sudah kadaluarsa/tidak digunakan lagi dalam waktu tertentu.
Umur objek dibatasi oleh hal-hal sebagai berikut:
• Metode penghapusan objek
Objek dihapus menurut algoritma tertentu yang sebelumnya sudah disebutkan
pada konfigurasi squid proxy server.
• Kapasitas harddisk dari proxy server
Kapasitas harddisk yang terbatas akan turut membatasi jumlah keseluruhan
object yang dapat ditampung oleh squid proxy server. Jika penggunaan
harddisk sudah mencapai batas tertentu (cache_swap_high pada squid.conf),
maka penghapusan objek akan lebih banyak dilakukan
• Jumlah permintaan client
Permintaan client yang tinggi otomatis akan menambah jumlah objek yang
disimpan dalam harddisk. Semakin banyak objek yang disimpan berarti ada
objek dengan ‘umur paling tua’ – misalnya – akan dihapus terlebih dahulu.
38
Algoritma yang digunakan dalam penghapusan objek menentukan objek
mana yang akan terlebih dahulu dihapus dan pada akhirnya menentukan kinerja dari
proxy server yang bersangkutan. Algoritma yang umum digunakan antara lain:
Algoritma Keterangan Logistic Regression (LR)
Menghapus object dengan nilai LR terkecil. Nilai LR dapat diartikan sebagai besarnya kemungkinan object tersebut akan diakses di waktu yang akan datang
Least Recently Used (LRU)
Menghapus object berdasarkan waktu terakhir kali object tersebut diakses. Object dengan waktu paling lama akan dihapus terlebih dahulu.
Least Frequently Used (LFU)
Menghapus object yang paling jarang diakses
First In First Out (FIFO)
Menghapus object secara urut berdasarkan waktu mulai disimpan ke dalam harddisk.
Random Menghapus object secara acak Table 2.2 Algoritma penghapusan object
2.6.4 Pencatatan Aktivitas/Log
Berbagai aktivitas Squid proxy server dapat dilihat pada tiga log utama yang
dihasilkan yaitu access.log, cache.log, dan store.log. Dari file tersebut, bisa
didapatkan berbagai macam informasi seperti seberapa berat beban kerja server,
berapa presentase object yang miss dan masih banyak lagi informasi lainnya.
Berikut adalah deskripsi singkat tentang isi dari masing-masing log yang
digunakan oleh squid proxy server:
Nama Log Keterangan access.log Catatan akses yang dilakukan oleh client seperti IP client,
waktu yang dibutuhkan, metode, URL tujuan, dsb
store.log Catatan penyimpanan object ke dalam hard disk
cache.log Pesan yang dibuat squid proxy server sewaktu beroperasi, biasanya berupa pesan error.
Table 2.3 Deskripsi macam-macam log
39
access.log banyak digunakan sebagai dasar monitoring dan evaluasi terhadap
kinerja squid proxy server. Hal ini masuk akal karena di dalam access.log banyak
terdapat informasi penting yang dapat diolah lebih lanjut menjadi statistik berbentuk
grafis sehingga mudah untuk dibaca. Informasi penting tersebut mengacu kepada
format umum yang digunakan pada penulisan sebuah access.log. Format umum
tersebut adalah sebagai berikut:
Time elapsed remotehost code/status bytes method URL rfc931 peerstatus/peerhost
type
Masing-masing field pada format tersebut dapat dijelaskan sebagai berikut:
• Time: Mencatat waktu pada saat request client diterima oleh squid proxy
server. Catatan waktu ini berupa UNIX timestamp dalam format UTC sampai
pembulatan milidetik.
• Elapsed: Menyatakan satu waktu dalam milidetik yang dibutuhkan squid proxy
server untuk memenuhi permintaan client
• Remotehost: IP address dari client yang melakukan request
• Code/status: Menyatakan kode keberhasilan dan status http yang akan
dijelaskan lebih lanjut
• Bytes: Menyatakan besarnya object yang dikirim ke client termasuk header dan
pesan error jika permintaan gagal dipenuhi
• Method: Menyatakan metode permintaan untuk mendapatkan object yang akan
dijelaskan lebih lanjut
• URL: Menyatakan alamat object yang diminta oleh client
40
• RFC931: Menyatakan pencarian identitas dari client. Secara default di set off
karena akan mempengaruhi kinerja squid proxy server. Kolom ini diisi ‘-‘ jika
di set off.
• Peerstatus/peerhost: Menyatakan kode hirarki yang mendefinisikan dari mana
object tersebut diambil
• Type: Menyatakan tipe object yang diminta, dalam contoh berupa text/html.
Tipe lainnya seperti images/gif. Pada pertukaran ICP tipe yang dicantumkan
berupa tanda titik dua (:)
2.6.5 Manajemen dan Monitoring Log
Pada squid proxy server yang sudah beroperasional, bisa ditemukan berbagai
informasi penting seputar squid proxy server tersebut hanya melalui log-log yang
dihasilkan. Dari tiga log utama yang disebutkan diatas, dapat dilakukan analisis
mengenai berbagai macam hal seperti kinerja sistem, utilisasi memory dan harddisk,
dan masih banyak lagi.
Hasil analisis tersebut berguna untuk berbagai keperluan dari yang sifatnya
perawatan, update terhadap sistem keamanan, sampai kepada kecenderungan akses
pengguna dilihat dari segi sosial dan latar belakang pendidikan. Melihat manfaat
yang bisa diambil dari analisis log ini, maka perlu dibuat suatu analisis untuk melihat
berbagai kecenderungan informasi yang dihasilkan. Informasi ini dapat
dipergunakan sebagai dasar pengambilan keputusan berkenaan dengan proxy server
tersebut atau hanya menjalankan fungsinya sebagai sistem monitoring yang tentunya
akan banyak berguna di kemudian hari.
41
Masalah timbul ketika log yang jumlah barisnya mencapai ribuan pada squid
proxy server yang sangat aktif tersebut tadinya harus dibaca secara manual untuk
menemukan informasi seperti disebutkan di atas. Beberapa administrator jaringan
berusaha mengatasi masalah ini dengan berbagai cara diantaranya menyalin log
tersebut ke worksheet software seperti Microsoft excel untuk kemudian diteliti. Cara
lainnya adalah dengan melakukan backup terhadap log-log tersebut untuk kemudian
dikirim secara remote untuk diteliti lebih lanjut. Cara tersebut tentu saja mempunyai
beberapa kekurangan diantaranya adalah tetap harus melihat log-log tersebut secara
manual, baris-perbaris untuk melihat kecenderungan informasi dan error yang
terjadi.
Squid proxy server sebetulnya menyertakan paket monitoringnya yang
dikenal dengan cachemanager berbasis CGI. Beberapa paket monitoring lainnya
adalah prostat dan calamaris. Dengan berbagai macam perangkat lunak tersebut,
administrator sistem tidak perlu repot untuk memantau proxy server.
2.6.6 Penggunaan Squid Proxy Server Secara Colocation dan Coresident
Squid Proxy Server dapat digunakan secara colocation maupun coresident.
Adapun penggunaan Squid Proxy Server secara colocation sama prinsipnya dengan
penerapan dedicated server yang hanya digunakan untuk keperluan sebuah server
dan tidak dapat berfungsi sebagai sebuah workstation. Jadi squid proxy server di
install pada sebuah server yang akan berfungsi sebagai sebuah proxy server saja.
Sedangkan penggunaan Squid Proxy Server secara coresident adalah sebuah
metode penggunaan server yang memiliki fungsi lebih dari satu. Jadi server tersebut
dapat memiliki fungsi lain, seperti web server, worstation, dan sebagainya.
42
Adapun penggunaan Squid Proxy Server secara coresident perlu didukung
oleh penggunaan IPTables yang akan melakukan redirection untuk sebuah request
dari server yang akan diarahkan ke Squid Proxy Server, karena server tersebut tidak
berfungsi sebagai proxy server, sehingga tidak dapat melayani request dari client.
2.6.7 Tag-tag Squid
Tag-tag yang dapat digunakan untuk menkonfigurasi Squid proxy server
terdapat pada file squid.conf. Berikut ini merupakan rangkuman dari tag-tag yang
ada di file squid.conf:
2.6.7.1 Network options
• http_port
Format: http_port port
http_port hostname:port
http_port ip_address:port
Adalah socket address dimana squid proxy server mendengar permintaan
HTTP dari client. Jika menuliskan hostname atau IP address, Squid proxy
server akan mengikat socket ke alamat tersebut. Ini akan menggantikan
pilihan ‘tcp_incoming_address’ yang sebelumnya digunakan. Jika Squid
proxy server dijalankan di mode accelerator, client dapat mendengar dari
port 80 juga. Jika Squid proxy server dijalankan di mesin dual-homed
dengan interface internal dan eksternal, sebaiknya masukkan alamat
internal:port pada tag http_port. Dengan cara ini Squid proxy server hanya
akan terlihat alamat internalnya. Nilai default untuk tag ini: http_port 3128
43
• https_port
Format: [ip:]port cert=certificate.pem [key=key.pem] [options...]
https_port adalah socket address dimana squid proxy server akan
mendengar request HTTPS dari client. Tag sangat berguna jika squid proxy
server dijalankan di mode accelerator dan untuk menjalankan SSL di
acclerator level. Option yang dapat digunakan adalah:
Cert= directory path ke SSL certificate (format file: PEM)
Key= jalur untuk ke file SSL private key (format file: PEM). Jika tidak
disertakan, file certificate yang akan dianggap sebagai file hasil
kombinasi dari certificate dan file key
Version= Versi dari SSL/TLS
1 automatic (default)
2 SSLv2 only
3 SSLv3 only
4 TLSv1 only
Cipher= daftar pemisahan titik dua dari cipher
Options= berbagai pilihan SSL engine. Yang paling penting adalah:
NO_SSLv2 tidak memperbolehkan penggunaan SSLv2
NO_SSLv3 tidak memperbolehkan penggunaan SSLv3
NO_TLSv1 tidak memperbolehkan penggunaan TLSv1
Untuk lebih lengkapnya lihat src/ssl_support.c atau OpenSSL
documentation
44
• ssl_unclean_shutdown
Beberapa browser (terutama Microsoft Internet Explorer) mengalami error
ketika pesan SSL shutdown muncul
• icp_port
Nomor port dimana squid proxy server mengirim dan menerima ICP query
untuk dan dari neighbor caches. Nilai defaultnya adalah 3130, dan untuk
menonaktifkannya dapat digunakan angka nol (0).
• htcp_port
Tag ini hanya tersedia jika squid proxy server di built dengan option --
enable-htcp. Nomor port squid proxy server mengirim dan menerima
HTCP query ke dan dari neighbor caches. Nilai defaultnya adalah 4827,
dan untuk menonaktifkannya dapat digunakan angka nol (0).
• mcast_groups
Format: mcast_groups 239.128.16.128 224.0.1.20
Tag ini menampilkan daftar dari multicast group yang harus dihubungkan
dengan server untuk menerima multicasted ICP queries. Disarankan untuk
tidak menggunakan multicast address yang sudah digunakan oleh
kelompok cache lain.
• udp_incoming_address
Digunakan untuk ICP socket dalam menerima paket dari cache lain. Nilai
default untuk tag ini: udp_incoming_address 0.0.0.0, yang berarti Squid
proxy server mendengar pesan UDP pada segala interface yang tersedia
45
• udp_outgoing_address
Digunakan untuk paket ICP yang dikirim ke cache lain. Default:
udp_outgoing_address 255.255.255.255, berarti menggunakan socket yang
sama dengan udp_incoming_address.
2.6.7.2 Options Which Affect the Neighbor Selection Algorithm
• cache_peer
Format: cache_peer hostname type http_port icp_port
Contoh:
Hostname Type Proxy_port Icp_port options
Cache_peer parent.foo.net parent 3128 3130 [proxy only]
Cache_peer sib1.foo.net sibling 3128 3130 [proxy only]
Cache_peer sib2.foo.net sibling 3128 3130 [proxy only]
Type: ‘parent’, ‘sibling’, atau ‘multicast’
Proxy_port: nomor port dimana cache mendengarkan proxy request
Icp_port: digunakan untuk melakukan query neighbor cache tentang
object. Untuk non-ICP neighbor dapat dituliskan angka ‘7’ pada
icp_port dan pastikan bahwa neighbor machine memiliki UDP
echo port yang aktif di file /etc/inetd.conf-nya.
Options: proxy-only, weight=n, ttl=n, no-query, default, round-robin,
multicast-responder, closest-only, no-digest, no-netdb-exchange,
no-delay, login=user:password | PASS | *:password, connect-
46
timeout=nn, digest-url=url, allow-miss, max-conn, htcp, carp-
load-factor
• cache_peer_domain
Digunakan untuk membatasi domain di neighbor cache yang akan di query.
Format: cache_peer_domain cache-host domain [domain...]
cache_peer_domain cache-host !domain
Contoh: cache_peer_domain parent.foo.net .edu
• neighbor_type_domain
Format:
neighbor_type_domain neighbor parent|sibling domain domain .....
Contoh: cache_peer parent cache.foo.org 3128 3130
neighbor_type_domain cache.foo.org sibling .com .net
neighbor_type_domain cache.foo.org sibling .au .de
neighbor_type_domain dapat memodifikasi neighbor type ke domain
tertentu. Beberapa domain dapat diperlakukan berbeda dengan neighbor
type default yang ada pada cache_peer.
• icp_query_timeout (msec)
Normalnya, secara otomatis Squid proxy server menyediakan nilai optimal
dari ICP query timeout berdasarkan round-trip-time dari query ICP
terakhir. Untuk mengubah nilai yang telah di set Squid proxy server, ubah
nilai ‘icp_query_timeout’ ke nilai yang bukan nol.
47
• maximum_icp_query_timeout (msec)
Option ini digunakan untuk menentukan batasan teratas dari nilai dynamic
timeout. Nilai default untuk tag ini: maximum_icp_query_timeout 2000
• mcast_icp_query_timeout (msec)
Untuk multicast peers, Squid Proxy Server secara teratur mengirim ICP
“probes” untuk menghitung berapa banyak peer yg mendengarkan ke
multicast address yang diberikan. Nilai pada option ini menunjukkan
berapa lama Squid Proxy Server harus menunggu untuk menghitung semua
reply. Nilai default untuk tag ini: mcast_icp_query_timeout 2000
• dead_peer_timeout (seconds)
Tag ini mengontrol berapa lama Squid Proxy Server menunggu untuk
mengumumkan sebuah peer cache “mati” (dead). Jika tidak ada ICP reply
yang diterima dalam waktu ini, maka Squid Proxy Server akan
mengumumkan bahwa peer sudah mati dan tidak menerima ICP reply lagi.
Namun, Squid Proxy Sever akan terus mengirimkan ICP query dan akan
mengumumkan bahwa peer hidup setelah menerima ICP reply secara
berurutan. Timeout ini juga berpengaruh ketika Squid Proxy Server
berharap untuk menerima ICP reply dari peer. Nilai default untuk tag ini:
cache_peer_timeout 10 seconds
• hierarchy_stoplist
Gunakan tag ini agar tidak squid proxy server tidak melakukan query
neighbor caches untuk objek tertentu.
48
• no_cache
Gunakan option ini untuk memaksa agar objek tertentu tidak pernah di
cache. Gunakan kata ‘DENY’ untuk mengindikasikan nama ACL yang tidak
akan di cache.
2.6.7.3 Options Which Affect the Cache Size
• cache_mem (bytes)
‘cache_mem’ menunjukkan jumlah memory yang digunakan untuk in-
transit object, hot objects, negative-cached objects. Data untuk objek-objek
ini disimpan dalam blok-blok berukuran 4 KB. Parameter ini menunjukkan
batasan teratas pada ukuran total dari blok berukuran 4 KB yang
dialokasikan. Objek in-transit menempati prioritas tertinggi. Jika incoming
request rate membutuhkan lebih banyak memori ‘cache_mem’ untuk
menggenggam objek in-transit, Squid Proxy Server akan melewati batas
untuk memuaskan permintaan yang baru. Ketika beban berkurang, blok
akan dibebaskan hingga mencapai high-water mark. Setelah itu blok akan
digunakan untuk menyimpan hot object. Nilai default untuk tag ini:
cache_mem 8 MB
• cache_swap_low (percent, 0-100)
cache_swap_high (percent, 0-100)
Merupakan low dan high-water mark untuk cache object replacement.
Pergantian dimulai saat penggunaan swap (disk) diatas low-water mark dan
mencoba untuk memelihara penggunaan dekat low-water mark. Ketika
49
penggunaan swap semakin dekat ke high-water mark, penyingkiran objek
menjadi semakin agresif. Jika penggunaan dekat dengan low-water mark,
hanya sedikit pergantian yang dilakukan setiap kalinya. Nilai default untuk
tag ini:
cache_swap_low 90
cache_swap_high 95
• maximum_object_size (bytes)
Objek yang ukurannya lebih besar dari ukuran ini tidak akan disimpan ke
dalam disk. Jika ingin mendapatkan perbandingan BYTES hit yang tinggi,
nilai option ini harus ditingkatkan. Untuk meningkatkan kecepatan dari
menyimpan bandwidth sebaiknya digunakan nilai yang rendah. Jika
menggunakan LFUDA replacement policy, nilai dari tag ini sebaiknya
ditingkatkan untuk memaksimalkan peningkatan dari LFUDA byte hit rate.
Nilai default untuk tag ini: maximum_object_size 4096 MB
• minimum_object_size (bytes)
Objek yang ukurannya lebih kecil dari ukuran ini tidak akan disimpan ke
dalam disk. Default: minimum_object_size 0 KB, yang berarti tidak ada
nilai minimum.
• maximum_object_size_in_memory (bytes)
Objek yang ukurannya lebih besar dari ukuran ini tidak akan disimpan di
dalam cache memory. Nilai dari tag ini harus di set cukup tinggi untuk
menjaga objek yang sering diakses di memori untuk meningkatkan kinerja
50
sedangkan (whilst) cukup rendah untuk menjaga objek yang lebih besar
dari timbunan cache_mem.
Nilai default untuk tag ini: maximum_object_size_in_memory 8 KB
• ipcache_size (number of entries)
ipcache_low (percent)
ipcache_high (percent)
Merupakan ukuran, low, dan high-water mark untuk IP cache. Nilai default
untuk tag ini:
ipcache_size 1024
ipcache_low 90
ipcache_high 95
• fqdncache_size (number of entries)
Jumlah maksimum dari FQDN cache yang masuk. Nilai default untuk tag
ini: fqdncache_size 1024
• cache_replacement_policy
Tag ini menentukan objek yang akan ditukarkan ketika disk space
dibutuhkan.
Lru: Sederetan dari Squid Proxy Server yang original berdasarkan pada
kebijaksanaan LRU
Heap GDFS: Greedy-Dual Size Frequency
Heap LFUDA: Least Frequently Used with Dynamic Aging
Heap LRU: kebijaksanaan LRU yang diimplementasikan menggunakan
heap
51
Nilai default untuk tag ini: cache_replacement_policy lru
• memory_replacement_policy
Menentukan objek yang akan disingkirkan saat space memori dibutuhkan.
Nilai default untuk tag ini: memory_replacement_policy lru
2.6.7.4 Logfile Pathnames and Cache Directories
• cache_dir
Format: cache_dir Type Directory-Name Mbytes L1 L2 [options]
Type: menunjukan sistem penyimpanan yang digunakan. Nilai Defaultnya
adalah ‘ufs’.
Directory: merupakan direktori di level yang teratas dimana file cache
swap akan disimpan. Direktori harus sudah ada dan dapat
ditulisi oleh proses Squid Proxy Server.
Mbytes: jumlah disk space (MB) untuk digunakan dibawah direktori ini.
Level-1: adalah jumlah level pertama dari subdirektori yang akan dibuat
dibawah ‘Directory’.
Level-2: adalah jumlah level kedua dari subdirektori yang akan dibuat
dibawah setiap level pertama subdirektori
Nilai default untuk tag ini: cache_dir ufs /var/spool/squid 100 16 256
• cache_access_log
Tag ini mencatat aktivitas permintaan client. Tag ini berisi masukkan untuk
setiap query permintaan HTTP dan ICP yang diterima. Untuk
menonaktifkan, masukkan “none”.
52
Nilai default untuk tag ini: cache_access_log /var/log/squid/access.log
• cache_log
File pencatatan cache. File dimana informasi umum tentang cache
behavior. Nilai default untuk tag ini: cache_log /var/log/squid/cache.log
• cache_store_log
Mencatat aktivitas dari manajer penyimpanan. Menunjukkan objek mana
yang ditolak dari cache, dan objek mana yang disimpan dan untuk berapa
lama disimpannya. Untuk menonaktifkannya, masukkan “none”. Nilai
default untuk tag ini: cache_store_log /var/log/squid/store.log
• cache_swap_log
Lokasi untuk file cache “swap.state”. File log ini memegang metadata dari
objek yang di simpan di disk. Biasanya digunakan untuk membangun
kembali cache selama startup.
• emulate_httpd_log on|off
Cache dapat melakukan emulasi format file log yang digunakan oleh
banyak program ‘httpd’. Nilai default untuk tag ini: emulate_httpd_log off
• log_ip_on_direct
Mencatat alamat IP tujuan pada hierarchy log tag ketika keluar secara
langsung. Versi awal Squid Proxy Server mencatat hostname-nya disini.
Untuk menggunakan cara lama, set menjadi off.
• mime_table
Jalur ke tabel MIME squid.
Nilai default untuk tag ini: mime_table /etc/squid/mime.conf
53
• log_mime_hdrs on|off
Cache dapat merecord request dan response MIME headers untuk tiap
transaksi HTTP. Nilai default untuk tag ini: log_mime_hdrs off
• Useragent_log
Squid Proxy Server akan menulis kolom User-Agent dari permintaan HTTP
hingga ke nama file yang disertakan disini.
• Referer_log
Squid Proxy Server akan menulis kolom referer dari permintaan HTTP
hingga ke nama file yang disertakan disini.
• Pid_filename
Nama file untuk menuliskan process-id. Nilai default untuk tag ini:
pid_filename /var/run/squid.pid
• Debug_options
Option Logging di set sebagai section, suatu tingkatan dimana tiap file
sumber ditetapkan bagian yang unik. Nilai default untuk tag ini:
debug_options ALL,1
• Log_fqdn on|off
Set menjadi on jika menginginkan pencatatan nama domain yang
berkualitas ke dalam access.log. Untuk melakukan ini Squid Proxy Server
melakukan DNS lookup untuk semua IP yang terhubung dengannya. Untuk
beberapa situasi, ini dapat meningkatkan latency yang dapat membuat
cache terlihat lebih lambat saat browsing. Nilai default untuk tag ini:
log_fqdn off
54
• Client_netmask
Suatu netmask untuk alamat client di logfiles dan cachemgr output. Ubah
option ini untuk menjaga privacy dari cache client. Netmask 255.255.255.0
akan mencatat semua IP pada jangkauan tersebut dengan digit terakhirnya
di set menjadi ‘0’.
Nilai default untuk tag ini: client_netmask 255.255.255.255
2.6.7.5 Options for External Support Programs
• ftp_user
Agar password login yang anonymous menjadi lebih informatif, set option
ini menjadi sesuatu yang memiliki arti untuk domain.
Nilai default untuk tag ini: ftp_user Squid@
• ftp_list_width
Set lebar dari daftar ftp. Ini harus di set agar sesuai dengan lebar dari
browser standar. Jika di set terlalu kecil dapat memotong nama file yang
panjang saat melihat site ftp. Nilai default untuk tag ini: ftp_list_width 32
• ftp_passive
Jika firewall tidak mengijinkan Squid Proxy Server untuk menggunakan
koneksi pasif, sebaiknya option ini di set off. Nilai default untuk tag ini:
ftp_passive on
• ftp_sanitycheck
Untuk alasan keamanan dan integritas data, secara default Squid Proxy
Server melakukan pemeriksaan sanity (sanity check) terhadap alamat dari
55
koneksi data FTP untuk memastikan koneksi data ke server yang diminta.
Jika ingin memperbolehkan koneksi FTP ke server menggunakan IP
lainnya untuk koneksi data maka set option ini menjadi off.
Nilai default untuk tag ini: ftp_sanitycheck on
• ftp_telnet_protocol
Protokol FTP secara resmi didefinisikan untuk menggunakan protokol
telnet sebagai transport channel untuk control connection. Nilai default
untuk tag ini: ftp_telnet_protocol on
• cache_dns_program
Option ini hanya dapat digunakan jika Squid Proxy Server di built dengan
–disable-internal-dns. Option ini menunjukkan lokasi dari pengeksekusian
untuk proses dnslookup.
Nilai default untuk tag ini: cache_dns_program /usr/lib/squid/dnsserver
• dns_children
Option ini hanya dapat digunakan jika Squid Proxy Server di built dengan
–disable-internal-dns. Sejumlah proses lahir untuk melayani dns name
lookup. Untuk cache yang bermuatan berat pada server yang besar, nilai
option ini harus ditambah sedikitnya 10 dan maksimumnya adalah 32.
Sedikitnya harus memiliki satu proses dnsserver. Nilai default untuk tag
ini: dns_children 5
• dns_retransmit_interval
Permulaan dalam mengantarkan interval untuk DNS query. Interval
digandakan setiap kali semua konfigurasi DNS server selesai dicoba.
56
Nilai default untuk tag ini: dns_retransmit_interval 5 seconds
• dns_timeout
Merupakan timeout dari DNS query. Jika tidak ada respon yang diterima ke
DNS query selama waktu ini, maka semua DNS server untuk domain yang
diquery dianggap tidak ada.
Nilai default untuk tag ini: dns_timeout 2 minutes
• dns_defnames on|off
Option ini hanya dapat digunakan jika Squid Proxy Server di built dengan
–disable-internal-dns. Untuk menjaga cache dalam sebuah hirarki dari
penerjemahan single-component hostname secara lokal. Untuk mengijinkan
dnsserver agar menangani single-component name, set option ini menjadi
on. Nilai default untuk tag ini: dns_defnames off
• dns_nameservers
Daftar dari dns server yang digunakan selain yang ada di file
/etc/resolv.conf. contoh: dns_nameservers 10.0.0.1 192.172.0.4
• hosts_file
Lokasi dari asosiasi database host-local IP name-address. File ini di cek
saat starup dan saat konfigurasi. Jika di set ‘none’ maka tidak akan di cek.
Jika append-domain digunakan, maka domain tersebut akan ditambahkan
ke domain-local. Nilai default untuk tag ini: hosts_file /etc/hosts
• diskd_program
Menunjukkan lokasi dari diskd yang dapat dieksekusi. Ini hanya berguna
jika diskd dicompile sebagai salah satu dari modul penyimpanan I/O.
57
Nilai default untuk tag ini: diskd_program /usr/lib/squid/diskd
• unlinkd_program
Menunjukkan lokasi dari proses penghapusan file yang dapat dieksekusi.
Nilai default untuk tag ini: unlinkd_program /usr/lib/squid/unlinkd
• pinger_program
Option ini hanya dapat digunakan jika Squid Proxy Server di built dengan
–enable-icmp. Option ini menunjukkan lokasi dari proses pinger yang
dapat dieksekusi.
Nilai default untuk tag ini: pinger_program /usr/lib/squid/pinger
• redirect_program
Menunjukkan lokasi dari URL redirector yang dapat dieksekusi.
• Redirect_children
Jumlah proses redirector yang dilahirkan. Jika dimulai dengan sangat
sedikit, Squid Proxy Server akan menunggu untuk memproses backlog dari
URL, sedangkan jika dimulai dengan sangat banyak maka Squid Proxy
Server akan menggunakan RAM dan sistem lain.
Nilai default untuk tag ini: redirect_children 5
• redirect_rewrites_host_header
Secara default Squid Proxy Server menuliskan berbagai Host: header pada
permintaan yang dialihkan.
Nilai default untuk tag ini: redirect_rewrites_host_header on
58
• redirector_access
Jika didefinisikan, daftar akses ini menunjukkan permintaan mana yang
dikirim ke proses redirector.
• Auth_param
Digunakan untuk mendefinisikan parameter untuk berbagai susunan
authentikasi yang didukung oleh Squid Proxy Server.
Format: auth_param scheme parameter [setting]
Konfigurasi minimum yang disarankan:
#auth_param digest program
#auth_param digest children 5
#auth_param digest realm Squid proxy-caching web server
#auth_param digest nonce_garbage_interval 5 minutes
#auth_param digest nonce_max_duration 30 minutes
#auth_param digest nonce_max_count 50
#auth_param ntlm program
#auth_param ntlm children 5
#auth_param ntlm max_challenge_reuses 0
#auth_param ntlm max_challenge_lifetime 2 minutes
#auth_param ntlm use_ntlm_negotiate off
#auth_param basic program
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
59
• authenticate_cache_garbage_interval
Periode waktu antara koleksi garbage berseberangan dengan username
cache. Ini merupakan pertukaran antara utilisasi memori dengan CPU.
Nilai default untuk tag ini: authenticate_cache_garbage_interval 1 hour
• authenticate_ttl
Waktu saat user dan kepercayaannya tinggal di dalam logged pada user
cache sejak request terakhirnya.
Nilai default untuk tag ini: authenticate_ttl 1 hour
• authenticate_ip_ttl
Jika menggunakan proxy authentication dan ‘max_user_ip’ ACL, ini
mengarahkan pengawasan berapa lama Squid Proxy Server mengingat
alamat IP yang diasosiasikan dengan tiap user. Nilai default untuk tag ini:
authenticate_ip_ttl 0 seconds
• external_acl_type
Option ini mendefinisikan external acl classes dengan menggunakan
program helper untuk melihat status.
Format: external_acl_type name [options] FORMAT.. /path/to/helper
[helper arguments...]
Options: ttl=n TTL dalam detik untuk hasil cache
Negative_ttl=n TTL untuk cached negative lookup, dalam detik
Children=n Sejumlah proses dilahirkan untuk melayani
external acl lookup dari tipe ini
Cache=n Ukuran hasil cache, default=0
60
Protocol=3.0 Menggunakan URL-escaped strings sebagai ganti
dari kutip
Format: %LOGIN nama user login diauthentikasi
%IDENT ident username
%SRC IP client
%DST Host yang di request
%PROTO Protokol yang di request
%PORT Port yang di request
%METHOD cara yang di request
%{header} HTTP Request Header
%{Hdr:member} Daftar anggota dari HTTP Request Header
%{Hdr:;member} Daftar HTTP Request Header yang
menggunakan ; (titik koma) sebagai pemisah
2.6.7.6 Options for Tuning the Cache
• wais_relay_host
wais_relay_port
Relay wais meminta ke host (argumen 1) pada port (argumen 2).
Nilai default untuk tag ini: wais_relay_port 0
• request_header_max_size (KB)
Menunjukkan ukuran maksimum untuk HTTP headers dalam sebuah
request. Nilai default untuk tag ini: request_header_max_size 20 KB
61
• request_body_max_size (KB)
Menunjukkan ukuran maksimum untuk HTTP request body. Dengan kata
lain, ukuran maksimum dari PUT/POST request. Jika parameter ini di set
nol, berarti tidak terbatas.
Nilai default untuk tag ini: request_body_max_size 0 KB
• refresh_pattern
Format: refresh_pattern [-i] regex min percent max [options]
Secara default, regular expression-nya adalah case-sensitive. Untuk
membuatnya menjadi case-insensitive, gunakan –i.
Min: waktu dalam menit suatu objek tanpa waktu habis yang tegas dapat
dianggap baru.
Percent: persentase dari umur objek sejak modifikasi terakhir.
Max: batas teratas dari berapa lama objek tanpa waktu habis yg tegas dapat
dianggap baru
Options: override-expire, override-lastmode, reload-into-ims, ignore-
reload
Default: refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
62
• quick_abort_min (KB)
quick_abort_max (KB)
quick_abort_pct (percent)
Secara default, cache terus mendownload request yang digugurkan tetapi
yang hampir selesai (sisanya kurang dari 16 KB). Jika tidak ingin
melanjutkan download setelah permintaan client digugurkan, set
‘quick_abort_min’ dan ‘quick_abort_max” menjadi ‘0 KB’.
Nilai default untuk tag ini:
quick_abort_min 16 KB
quick_abort_max 16 KB
quick_abort_pct 95
• negative_ttl time-units
Time-to-live (TTL) untuk permintaan yang gagal. Nilai default untuk tag
ini: negative_ttl 5 minutes
• positive_dns_ttl time-units
Batas teratas dari berapa lama Squid Proxy Server akan men-cache respon
dari positive DNS. Option ini harus di set lebih besar dari negative_dns_ttl.
Nilai default untuk tag ini: positive_dns_ttl 6 hours
• negative_dns_ttl time-units
TTL untuk DNSlookups yang gagal dari negative caching. Nilai
maksimumnya 1 detik dan disarankan agar tidak mengisinya dibawah 10
detik. Nilai default untuk tag ini: negative_dns_ttl 1 minute
63
• range_offset_limit (bytes)
Menetapkan batas teratas seberapa jauh jangkauan permintaan ke file yang
mungkin dapat menyebabkan Squid Proxy Server untuk melakukan
prefetch semua file. Nilai –1 dapat menyebabkan Squid Proxy Server selalu
mengambil objek dari awal jadi itu dapat men-cache hasilnya. Nilai 0 dapat
menyebabkan Squid Proxy Server tidak pernah mengambil lebih dari yang
diminta oleh client. Nilai default untuk tag ini: range_offset_limit 0 KB
2.6.7.7 Timeouts
• forward_timeout time-units
Parameter ini menunjukkan berapa lama Squid Proxy Server harus
mencoba untuk menemukan jalur ke depan untuk request sebelum berhenti.
Nilai default untuk tag ini: forward_timeout 4 minutes
• connect_timeout time-units
Parameter ini menunjukkan berapa lama untuk menunggu TCP terhubung
ke server yang diminta atau peer hingga selesai sebelum Squid Proxy
Server mencoba untuk menemukan jalur lain untuk mem-forward request.
Nilai default untuk tag ini: connect_timeout 1 minute
• peer_connect_timeout time-units
Parameter ini menunjukkan berapa lama untuk menunggu koneksi TCP
yang pending ke peer cache.
Nilai default untuk tag ini: peer_connect_timeout 30 seconds
64
• read_timeout time-units
read_timeout diaplikasikan di koneksi server-side. Setelah berhasil read(),
timeout akan diperpanjang oleh jumlah ini. Jika tidak ada data yang dibaca
lagi setelah waktu ini, permintaan akan digugurkan dan dicatat dengan
ERR_READ_TIMEOUT. Nilai default untuk tag ini: read_timeout 15
minutes
• request_timeout
Berapa lama waktu untuk menunggu permintaan HTTP selanjutnya pada
koneksi yang persistent setelah permintaan sebelumnya selesai.
Nilai default untuk tag ini: persistent_request_timeout 1 minutes
• persistent_request_timeout
Berapa lama waktu yang dibutuhkan untuk menunggu permintaan HTTP
selanjutnya pada sebuah koneksi persistent setelah permintaan sebelumnya
selesai. Default: persistent_request_timeout 1 minute
• client_lifetime time-units
Waktu maksimum dari client (browser) yang diijinkan untuk terhubung ke
proses cache. Ini menjaga cache dari banyak socket (dan selanjutnya file
descriptor) diikat dalam status CLOSE_WAIT dari remote client yang pergi
tanpa shutting down yang benar.
Nilai default untuk tag ini: client_lifetime 1 day
• half_closed_clients
Beberapa client mungkin men-shutdown sisi pengiriman dari koneksi TCP,
ketika meninggalkan sisi penerimanya dengan terbuka. Secara default,
65
koneksi half-closed client tetap dibuka hingga read(2) atau write(2) pada
socket mengembalikan pesan kesalahan.
Nilai default untuk tag ini: half_closed_clients on
• pconn_timeout
Timeout untuk koneksi persintent ke server dan proxy lainnya saat tidak
melakukan apa-apa dalam suatu waktu.
Nilai default untuk tag ini: pconn_timeout 120 seconds
• ident_timeout
Waktu maksimum yang dibutuhkan untuk menunggu IDENT lookups
hingga selesai. Nilai default untuk tag ini: ident_timeout 10 seconds
• shutdown_lifetime time-units
Ketika SIGTERM atau SIGHUP diterima, cache diletakkan ke mode
“shutdown pending” hingga semua soket yang aktif ditutup.
Nilai default untuk tag ini: shutdown_lifetime 30 seconds
2.6.7.8 Access Control
• acl
Mendefinisikan access list
Format: acl aclname acltype string1 ....
acl aclname acltype “file” ....
acl aclname time [day-abbrevs] [h1:m1-h2:m2]
day-abbrevs: S – Minggu
M – Senin
66
T – Selasa
W – Rabu
H – Kamis
F – Jumat
A – Sabtu
H1:m1 harus lebih kecil dari h2:m2
Konfigurasi minimum yang disarankan:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535# unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
67
• follow_x_forwarded_for
Mengijinkan atau melarang header X-Forwarded-For disertakan untuk
menemukan sumber yang asli dari request.
Contoh: acl localhost src 127.0.0.1
acl my_other_proxy srcdomain .proxy.example.com
follow_x_forwarded_for allow localhost
follow_x_forwarded_for allow my_other_proxy
Nilai default untuk tag ini: follow_x_forwarded_for deny all
• acl_uses_indirect_client
Mengontrol alamat indirect client digunakan sebagai ganti dari alamat
direct client pada penyesuaian acl.
Nilai default untuk tag ini: acl_uses_indirect_client on
• delay_pool_uses_indirect_client on|off
Mengontrol alamat indirect client digunakan sebagai ganti dari alamat
direct client pada delay pools. Nilai default untuk tag ini:
delay_pool_uses_indirect_client on
• log_uses_indirect_client on
Mengontrol alamat indirect client digunakan sebagai ganti dari alamat
direct client pada access log.
Nilai default untuk tag ini: log_uses_indirect_client on
• http_access
Mengijinkan atau melarang akses yang berdasarkan pada yang
didefinisikan pada access list.
68
Format: http_access allow|deny [!]aclname ...
Konfigurasi minimum yang disarankan:
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
• http_reply_access
Mengijinkan reply ke client requests. Ini melengkapi http_access.
Format: http_reply_access allow|deny [!] aclname ...
Nilai default untuk tag ini: http_reply_access allow all
• icp_access
Mengijinkan atau melarang akses ke port ICP yang berbasiskan pada yang
didefinisikan dalam access list.
Format: icp_access allow|deny [!] aclname ....
Nilai default untuk tag ini: icp_access allow all
• miss_access
Digunakan untuk memaksa neighbor agar menggunakan server sebagai
sibling daripada parent.
Contoh: acl localclients src 172.16.0.0/16
Miss_access allow localclients
Miss_access deny !localclients
69
Ini berarti hanya client lokal yang diperbolehkan untuk fetch MISSES dan
client lainnya hanya dapat fetch HITS.
Nilai default untuk tag ini: miss_access allow all
• cache_peer_access
Mirip dengan ‘cache_peer_domain’ tetapi lebih fleksibel dengan
menggunakan element ACL.
Format: cache_peer_access cache_host allow|deny [!]aclname ...
• ident_lookup_access
Sederetan dari elemen acl, dimana jika sesuai, dapat menyebabkan ident
(RFC031) lookup dilakukan untuk request ini. Contoh untuk mengaktifkan
ident lookup untuk alamat client tertentu:
acl ident_aware_hosts src 198.168.1.0/255.255.255.0
ident_lookup_access allow ident_aware_hosts
ident_lookup_access deny all
• tcp_outgoing_tos
Parameter ini memberi akses untuk memilih nilas TOS/Diffserv untuk
menandai koneksi yang keluar berdasarkan username atau alamat sumber
yang membuat permintaan.
Format: tcp_outgoing_tos ds-field [!]aclname ...
Contoh dimana normal_service_net menggunakan TOS dengan nilai 0x00
dan good_service_net menggunakan 0x20:
acl normal_service_net src 10.0.0.0/255.255.255.0
acl good_service_net src 10.0.1.0/255.255.255.0
70
tcp_outgoing_tos 0x00 normal_service_net 0x00
tcp_outgoing_tos 0x20 good_service_net
• tcp_outgoing_address
Memungkinkan untuk memetakan request menggunakan alamat ip yang
keluar berdasarkan username atau alamat sumber dari user yang membuat
request tersebut. Format: tcp_outgoing_address ipaddr [[!]aclname] ...
• reply_header_max_size (KB)
Menunjukkan ukuran minimum dari header HTTP dalam sebuah reply.
Nilai default untuk tag ini: reply_header_max_size 20 KB
• reply_body_max_size bytes allow|deny acl acl ...
Parameter ini menunjukan ukuran maksimum dari reply body dalam byte.
Jika parameter ini di set nol berarti ukurannya tidak terbatas.
Nilai default untuk tag ini: reply_body_max_size 0 allow all
2.6.7.9 Administrative Parameters
• cache_mgr
Alamat email dari manajer cache lokal yang akan menerima mail jika
cache mati. Nilai default untuk tag ini: cache_mgr root
• mail_from
Tujuan dari alamat email untuk pengiriman email saat cache mati.
• mail_program
Parameter ini digunakan untuk mengirim email jika cache mati.
Nilai default untuk tag ini: mail_program mail
71
• cache_effective_user
Jika cache_effective_user didefinisikan sedangkan cache_effective_group
tidak, maka Squid Proxy Server akan mengubah GID menjadi GID default
yang diambil dari file password dan list group tambahan dari group
membership cache_effective_user. Nilai default untuk tag ini:
cache_effective_user squid
• cache_effective_group
Set parameter ini untuk menjalankan Squid Proxy Server menggunakan
GID yang diinginkan.
Nilai default untuk tag ini: cache_effective_group squid
• visible_hostname
Parameter ini digunakan untuk menampilkan hostname khusus pada pesan
kesalahan, dan lain-lain.
• unique_hostname
Jika memiliki banyak mesin dengan ‘visible_hostname’ yang sama, setiap
mesin harus diberikan ‘unique_hostname’ yang berbeda agar forwarding
loop dapat dideteksi.
• hostname_aliases
Sekumpulan dari nama DNS lainnya yang dimiliki oleh cache.
72
2.6.7.10 Options for the Cache Registration Service
• announce_period
Parameter ini menunjukkan berapa kali mengirimkan cache announcement.
Nilai defaultnya adalah 0 yang berarti tidak mengirimkan pesan
pemberitahuan.
• announce_host
announce_file
announce_port
Announce_host dan announce_port men-set hostname dan nomor port
kemana pesan pendaftaran akan dikirimkan.
Nilai default untuk tag ini:
announce_host tracker.ircache.net
announce_port 3131
2.6.7.11 HTTPD-Accelerator Options
• httpd_accel_host
httpd_accel_port
Jika ingin menjalankan Squid Proxy Server sebagai httpd accelerator, set
nama host dan nomor port sesuai dengan yang ada pada server HTTP. Jika
menginginkan IP berdasarkan virtual host support, set hostname “virtual”
dan port “0”. Nilai default untuk tag ini: httpd_accel_port 80
73
• httpd_accell_single_host on|off
Jika menjalankan Squid Proxy Server sebagai accelerator dan memiliki
server yang single backend, set parameter ini menjadi on. Set menjadi off
jika memiliki banyak backend server dan gunakan redirector untuk
memetakan request ke backend server yang sesuai.
Nilai default untuk tag ini: httpd_accel_single_host off
• httpd_accel_with_proxy on|off
Jika ingin menggunakan Squid Proxy Server sebagai local httpd
accelerator sekaligus sebagai proxy, set parameter ini menjadi on.
Nilai default untuk tag ini: httpd_accel_with_proxy off
• httpd_accel_uses_host_header on|off
Jika accelerator harus menyediakan domain yang didasarkan pada virtual
host pada alamat IP yang sama, parameter ini harus di set on. Jika tidak
tahu apa yang harus dilakukan terhadap tag ini, sebaiknya di set off. Tetapi
jika ingin menjalankan Squid Proxy Server sebagai transparent proxy,
maka lebih baik di set on.
• httpd_accel_no_pmtu_disc on|off
Nilai default untuk tag ini: httpd_accel_no_pmtu_disc off
2.6.7.12 Miscellaneous
• dns_testnames
DNS test keluar setelah situs pertama berhasil dilihat. Test ini dapat di
disable dengan option command line –D.
74
Nilai default untuk tag ini:
dns_testnames netscape.com internic.net nlanr.net microsoft.com
• logfile_rotate
Menunjukan angka dari rotasi logfile yang akan dibuat ketika mengetik
‘squid –k rotate’. Nilai default untuk tag ini: logfile_rotate 0
• append_domain
Melampirkan nama domain lokal ke dalam bentuk hostname tanpa adanya
titik didalamnya. Contoh: append_domain .yourdomain.com
• tcp_recv_bufsize (bytes)
Ukuran dari buffer penerima untuk di set pada soket TCP.
Nilai default untuk tag ini: tcp_recv_bufsize 0 bytes
• err_html_text
Teks HTML untuk dimasukkan ke dalam pesan kesalahan.Buat ini sebagai
URL “mailto” ke alamat admin, atau mungkin hanya link ke website
organisasi.
• deny_info
Digunakan untuk mengembalikan halaman ERR_ untuk request yang tidak
memenuhi aturan ‘http_access’.
Format: deny_info err_page_name acl
deny_info http://..... acl
Contoh: deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys
75
• memory_pools on|off
Jika di set on maka Squid Proxy Server akan menjaga kumpulan dari
memori yang dialokasikan tersedia untuk digunakan nantinya.
Nilai default untuk tag ini: memory_pools on
• Memory_pools_limit (bytes)
Jika nilai yang dimasukkan bukan nol maka Squid Proxy Server akan
menyimpan pada batasan tertentu dari memori yang dialokasikan di
memory pools. Jika di set nol, Squid Proxy Server akan menyimpan semua
memori semampunya. Untuk men-disable memory allocation optimization,
jangan set memory_pools_limit menjadi 0.
Nilai default untuk tag ini: memory_pools_limit 5 MB
• forwarded_for on|off
Jika di set on, Squid Proxy Server akan memasukkan nama atau alamat IP
sistem pada HTTP request yang di forward.
Contoh: secara default akan tampil seperti ini:
X-Forwarded-For: 192.1.2.3
Tetapi jika di set off, maka akan tampil seperti berikut:
X-Forwarded-For: unknown
• log_icp_queries on|off
Jika di set on, ICP queries akan dicatat di access.log.
Nilai default untuk tag ini: log_icp_queries on
76
• icp_hit_stale on|off
Jika ingin mengembalikan ICP_HIT untuk objek cache yang kadarluarsa,
set option ini menjadi on. Jika hubungannya dengan cache di
administrative domain lainnya adalah sibling, maka sebaiknya di set off.
Nilai default untuk tag ini: icp_hit_stale off
• minimum_direct_hops
Jika menggunakan alat untuk ping ICMP, lakukan fetch secara langsung
untuk situs yang lompatannya tidak lebih banyak dari ini.
Nilai default untuk tag ini: minimum_direct_hops 4
• minimum_direct_rtt
Jika menggunakan alat untuk ping ICMP, lakukan fetch secara langsung
untuk situs yang rtt-nya tidak lebih banyak dari ini.
Nilai default untuk tag ini: minimum_direct_rtt 400
• cachemgr_passwd
Menunjukkan password untuk operasi cachemgr.
Format: cachemgr_passwd password action action ...
Set disable, untuk men-disable action. Untuk mengijinkan kinerja dari
suatu action tanpa menggunakan password, set menjadi “none”. Gunakan
kata “all” untuk men-set password yang sama untuk semua aksi.
Contoh: cachemgr_passwd secret shutdown
cachemgr_passwd lesssssssecret info stats/objects
cachemgr_passwd disable all
77
• store_avg_object_size (kbytes)
Ukuran rata-rata objek yang digunakan untuk memperkirakan jumlah objek
yang dapat ditampung oleh cache.
Nilai default untuk tag ini: store_avg_object_size 13 KB
• store_objects_per_bucket
Jumlah target dari objek tiap bucket yang ada di dalam penyimpanan tabel
hash. Nilai default untuk tag ini: store_objects_per_bucket 20
• client_db on|off
Jika ingin men-disable koleksi statistik per-client, matikan client_db disini
Nilai default untuk tag ini: client_db on
• netdb_low
netdb_high
Low dan high water marks untuk pengukuran database ICMP.
Nilai default untuk tag ini:
netdb_low 900
netdb_high 1000
• netdb_ping_period
Periode mimimum untuk mengukur suatu situs.
Nilai default untuk tag ini: netdb_ping_period 5 minutes
• query_icmp on|off
Jika ingin peer agar menyertakan data ICMP pada ICP reply, maka set
parameter ini menjadi on. Nilai default untuk tag ini: query_icmp off
78
• test_reachability on|off
Jika di set on, ICP MISS reply akan menjadi ICP_MISS_NOFETCH
sebagai ganti dari ICP_MISS jika host target tidak ada di dalam database
ICMP atau memiliki nol RTT.
Nilai default untuk tag ini: test_reachability off
• buffered_logs on|off
File cache.log ditulis dengan menggunakan fungsi stdio, dan dapat berupa
buffered atau unbuffered. Defaultnya adalah unbuffered.
Nilai default untuk tag ini: buffered_logs off
• reload_into_ims on|off
Jika option ini di enable, client no-cache atau “relaod” request akan diubah
menjadi If-Modified-Since request. Default: reload_into_ims off
• always_direct
Format: always_direct allow|deny [!]aclname ...
Disini dapat digunakan elemen ACL untuk menunjukkan request yang
harus selalu di forward oleh Squid Proxy Server ke server asal tanpa
menggunakan peer. Untuk selalu mem-forward ftp request secara langsung,
gunakan:
acl FTP proto FTP
always_direct allow FTP
79
• never_direct
Format: never_direct allow|deny [!]aclname ...
Dengan ‘never_direct’ dapat digunakan elemen ACL untuk menunjukkan
request yang tidak akan pernah di forward secara langsung ke server asal.
• header_access
Format: header_access header_name allow|deny [!]aclname ...
Option ini mengganti ‘anonymize_headers’ dan ‘http_anonymizer’ yang
lama dengan sesuatu yang lebih dapat dikonfigurasi. Cara baru ini
membuat daftar ACL untuk setiap header. Contoh, untuk mencapai
behavior yang sama dengan ‘http_anonymizer standard’ yang lama,
gunakan:
header_access From deny all
header_access Referer deny all
header_access Server deny all
header_access User-Agent deny all
header_access WWW-Authenticate deny all
header_access Link deny all
• header_replace
Format: header_replace header_name message
Option ini memungkinkan untuk mengubah isi dari header yang ditolak
dengan header_access diatasnya dengan cara menggantinya dengan
beberapa fixed string. Ini akan menggantikan fake_user_agent yang lama.
Contoh: header_replace User_Agent Nutscrape/1.0 (CP/M; 8-bit)
80
• icon_directory
Tempat dimana icon disimpan. Normalnya disimpan di
/use/share/squid/icons.
Nilai default untuk tag ini: icon_directory /usr/share/squid/icons
• global_internal_static
Pengendalian yang direktif ini adalah Squid Proxy Server perlu
menginterupsi semua permintaan untuk /squid-internal-static/ tidak peduli
host mana yang URL-nya melakukan request (parameter di set on) atau jika
tidak ada yang spesial yang harus diselesaikan untuk URL seperti itu
(parameter di set off). Nilai default untuk tag ini: global_internal_static on
• short_icon_urls
Jika di set on maka Squid Proxy Server akan menggunakan URL yang
pendek sebagai icon. Tetapi jika di set off, URL sebagai icon akan selalu
menjadi URL yang absolut termasuk nama proxy dan portnya.
Nilai default untuk tag ini: short_icon_urls off
• error_directory
Suatu direktori dimana file-file kesalahan (error) dibaca.
Nilai default untuk tag ini: error_directory /usr/share/squid/errors/English
• maximum_single_addr_tries
Parameter ini men-set jumlah maksimum dari koneksi yang dicoba pada
sebuah host yang hanya memiliki satu alamat (untuk host yang memiliki
banyak alamat, tiap alamat dicoba sekali).
Nilai default untuk tag ini: maximum_single_addr_tries 1
81
• retry_on_error
Jika di set on, Squid Proxy Server akan secara otomatis mencoba
mengirimkan permintaan saat menerima respon error. Ini terutama berguna
jika sedang berada di cache hierarchy yang kompleks untuk bekerja pada
kesalahan access control. Nilai default untuk tag ini: retry_on_error off
• snmp_port
Sekarang Squid Proxy Server menyajikan informasi status dan statistik
melalui SNMP. Nilai “0” men-disable SNMP support. Jika ingin
menggunakan SNMP, set parameter ini menjadi “3401” untuk
menggunakan SNMP support yang normal.
• snmp_access
Mengijinkan atau melarang akses ke port SNMP.
Format: snmp_access allow|deny [!]aclname ...
Contoh: snmp_access allow snmppublic localhost
snmp_access deny all
• snmp_incoming_address
Digunakan untuk menerima pesan SNMP socket dari agen SNMP.
Nilai default untuk tag ini: snmp_incoming_address 0.0.0.0
• snmp_outgoing_address
Digunakan untuk pengembalian paket SNMP ke agen SNMP.
Nilai default untuk tag ini: snmp_outgoing_address 255.255.255.255
82
• as_whois_server
Server WHOIS digunakan sebagai query untuk nomor AS.
Nilai default untuk tag ini: as_whois_server whois.ra.net
• wccp_router
Gunakan option ini untuk mendefinisikan router WCCP untuk Squid Proxy
Server. Jika di set ‘0.0.0.0’ maka WCCP akan disable.
Nilai default untuk tag ini: wccp_router 0.0.0.0
• wccp_version
Berdasarkan beberapa user, Cisco IOS 11.2 hanya mendukung WCCP versi
3. Jika digunakan IOS versi tersebut, nilai parameter ini dapat diubah
menjadi 3. Nilai default untuk tag ini: wccp_version 4
• wccp_incoming_address
Gunakan option ini jika membutuhkan pesan WCCP agar diterima hanya
pada satu interface. Jangan menggunakan option ini jika tidak yakin berapa
interface yang dimiliki, atau jika hanya memiliki satu interface.
Nilai default untuk tag ini: wccp_incoming_address 0.0.0.0
• wccp_outgoing_address
Gunakan option ini jika membutuhkan pesan WCCP agar dikirim hanya
pada satu interface. Jangan menggunakan option ini jika tidak yakin berapa
interface yang dimiliki, atau jika hanya memiliki satu interface.
Nilai default untuk tag ini: wccp_outgoing_address 255.255.255.255
83
2.6.7.13 Delay Pool Parameters
• delay_pools
Parameter ini mewakili jumlah dari delay pool yang akan digunakan.
Nilai default untuk tag ini: delay_pools 0
• delay_class
Parameter ini mendefinisikan kelas dari tiap delay pool. Harus ada tepat
satu baris delay_class untuk tiap delay pool. Kelas-kelas dalam delay pool:
Kelas 1 Semua dibatasi oleh satu bucket yang agregat
Kelas 2 Semua dibatasi oleh satu bucket yang agregat seperti
halnya bucket “individual” yang dipilih dari bit 25 hingga
bit 32 dari alamat IP
Kelas 3 Semua dibatasi oleh satu bucket yang agregat seperti
halnya bucket “network” yang dipilih dari bit 17 hingga bit
24 dari alamat IP dan bucket “individual” yang dipilih dari
bit 17 hingga bit 32 dari alamat IP
Jika alamat IP adalah a.b.c.d
Bit 25 hingga 32 adalah “d”
Bit 17 hingga 24 adalah “c”
Bit 17 hingga 32 adalah “c * 256 + d”
• delay_access
Parameter ini digunakan untuk menentukan request masuk ke delay pool
mana.
84
Contoh: delay_access 1 allow some_big_clients
delay_access 1 deny all
delay_access 2 allow lotsa_little_clients
delay_access 2 deny all
• delay_parameters
Mendefinisikan parameter untuk delay pool. Tiap delay pool memiliki
jumlah “bucket” yang diasosiasikan dengannya seperti yang telah
dijelaskan dalam delay_class.
Format: Untuk delay pool kelas 1:
Delay_parameters pool aggregate
Untuk delay pool kelas 2:
Delay_parameters pool aggregrate individual
Untuk delay pool kelas 3:
Delay_parameters pool aggregate network individual
Keterangan: pool : jumlah pool
Aggregrate: “delay parameters” untuk bucket yang agregat
(kelas 1,2,3)
Individual: “delay parameters” untuk individual bucket (kelas
2,3)
Network: “delay parameters” untuk network bucket (kelas 3)
Contoh: delay_parameters 1 -1/-1 8000/8000
delay_parameters 2 32000/32000 8000/8000 600/8000
85
• delay_initial_bucket_level (percent, 0-100)
Persentase dari initial bucket digunakan untuk menentukan berapa banyak
yang ditaruh di tiap bucket ketika Squid Proxy Server di start, di konfigur
ulang, atau pertama mengenali host yang mengaksesnya.
Nilai default untuk tag ini: delay_initial_bucket_level 50
• incoming_icp_average
incoming_http_average
incoming_dns_average
min_icp_poll_cnt
min_dns_poll_cnt
min_http_poll_cnt
Jika tidak mengerti algoritma yang berada di comm_select.c sebaiknya
tidak mengubah value yang ada di parameter ini
Nilai default untuk tag ini:
incoming_icp_average 6
incoming_http_average 4
incoming_dns_average 4
min_icp_poll_cnt 8
min_dns_poll_cnt 8
min_http_poll_cnt 8
86
• max_open_disk_fds
Untuk mencegah memiliki disk sebagai I/O bottleneck Squid Proxy Server
dapat memilih melewatkan on-disk cache jika jumlah disk file descriptor
yang terbuka melebihi jumlah ini.
Nilai default untuk tag ini: max_open_disk_fds
• offline_mode
Jika parameter ini di set on maka Squid Proxy Server tidak akan pernah
memvalidasi objek yang di cache.
Nilai default untuk tag ini: offline_mode off
• uri_whitespace
Parameter ini menjelaskan tentang apa yang harus dilakukan dengan
request yang memiliki karakter whitespace (spasi) pada URI. Pilihan yang
dapat digunakan: ‘strip’, ‘deny’, ‘allow’, ‘encode’, dan ‘chop’.
Nilai default untuk tag ini: uri_whitespace strip
• broken_posts
Sekumpulan elemen ACL yang jika cocok dapat menyebabkan Squid Proxy
Server mengirimkan CRLF pair tambahan setelah body dari PUT?POST
request. Beberapa HTTP server memiliki implementasi yang rusak dari
PUT/POST, dan mempercayakan pada CRLF pair tambahan yang dikirim
oleh beberapa client WWW.
Contoh: acl buggy_server url_regex ^http:// ....
broken_posts allow buggy_server
87
• mcast_miss_addr
Option ini hanya tersedia jika Squid Proxy Server dibangun dengan
–DMULTICAST_MISS_STREAM. Jika option ini di enable, setiap URL
“cache miss” akan dikirim pada alamat multicast tertentu.
Nilai default untuk tag ini: mcast_miss_addr 255.255.255.255
• mcast_miss_ttl
Option ini hanya tersedia jika Squid Proxy Server dibangun dengan
–DMULTICAST_MISS_STREAM. Ini merupakan nilai time-to-live untuk
paket yang di multicast saat multicasting off cache miss URL diaktifkan.
Nilai default untuk tag ini: mcast_miss_ttl 16
• mcast_miss_port
Option ini hanya tersedia jika Squid Proxy Server dibangun dengan
–DMULTICAST_MISS_STREAM. Ini merupakan nomor port yang
digunakan dalam berhubungan dengan ‘mcast_miss_addr’
Nilai default untuk tag ini: mcast_miss_port 3135
• mcast_miss_encode_key
Option ini hanya tersedia jika Squid Proxy Server dibangun dengan
–DMULTICAST_MISS_STREAM. URL yang dikirim dalam multicast miss
stream telah di enkripsi. Ini adalah kunci enkripsi-nya.
Nilai default untuk tag ini:
mcast_miss_encode_key XXXXXXXXXXXXXXX
88
• nonhierarchical_direct
Secara default, Squid Proxy Server akan mengirimkan berbagai non-
hierarchical request langsung ke server asal. Jika di set off, Squid Proxy
Server lebih memilih untuk mengirimkan request-nya ke parent.
Nilai default untuk tag ini: nonhierarchical_direct on
• prefer_direct
Jika di set on, Squid Proxy Server akan menggunakan parent pada hampir
semua request. Dengan menkombinasikan nonhierarchical_direct off dan
prefer_direct on, Squid Proxy Server dikonfigurasi untuk menggunakan
parent sebagai backup jika going direct gagal.
Nilai default untuk tag ini: prefer_direct off
• strip_query_terms
Secara default, Squid Proxy Server memotong batas query dari URL yang
diminta sebelum mencatat. Ini menjaga privacy user.
Nilai default untuk tag ini: strip_query_terms on
• coredump_dir
Secara default, Squid Proxy Server meninggalkan file core di dalam
direktori dari tempat dimulainya.
Nilai default untuk tag ini: coredump_dir /var/spool/squid
• redirector_bypass
Jika di set on, request tidak akan melewati redirector jika semua redirector
sibuk. Jika di set off dan antrian redirector semakin lama semakin banyak,
Squid Proxy Server akan keluar dengan kesalahan yang FATAL dan
89
meminta untuk menaikkan jumlah redirector. Nilai default untuk tag ini:
redirector_bypass off
• ignore_unknown_nameservers
Secara default, Squid memeriksa bahwa DNS response telah diterima dari
alamat IP yang sama dengan alamat IP yang dikirimkan. Jika tidak cocok,
Squid Proxy Server akan mengabaikan respon dan menuliskan pesan
peringatan ke cache.log. Jika ingin mengijinkan respon dari nameserver
yang tidak diketahui, set parameter ini menjadi ‘off’.
Nilai default untuk tag ini: ignore_unknown_nameservers on
• digest_generation
Parameter ini mengontrol apakah server akan menghasilkan isi dari cache
digest. Secara default, hasil cache digest akan ada jika Squid Proxy Server
di compile dengan USE_CACHE_DIGEST.
Nilai default untuk tag ini: digest_generation on
• digest_bits_per_entry
Ini merupakan jumlah bit dari cache digest server yang akan diasosiasikan
dengan digest entry untuk kombinasi URL (public key) dan HTTP method
yang diberikan. Nilai default untuk tag ini: digest_bits_per_entry 5
• digest_rebuilt_period (seconds)
Jumlah detik antara Cache Digest rebuilds.
Nilai default untuk tag ini: digest_rebuilt_period 1 hour
90
• digest_rewrite_period (seconds)
Waktu yang dibutuhkan Cache Digest untuk menulis ke disk.
Nilai default untuk tag ini: digest_rewrite_period 1 hour
• digest_swapout_chunk_size (bytes)
Jumlah byte dari Cache Digest untuk menulis ke disk dalam suatu waktu.
Nilai default untuk tag ini: digest_swapout_chunk_size 4096 bytes
• digest_rebuild_chunk_percentage (percent, 0-100)
Persentase dari Cache Digest yang di scan pada suatu waktu.
Nilai default untuk tag ini: digest_rebuild_chunk_percentage 10
• chroot
Gunakan ini agar Squid Proxy Server melakukan chroot() pada saat
inisialisasi. Ini juga dapat menyebabkan Squid Proxy Server menurunkan
hak istimewa root secara penuh setelah inisialisasi.
• client_persistent_connections
server_persistent_connections
Koneksi persistent mendukung client dan server. Secara default, Squid
Proxy Server menggunakan koneksi persistent pada client dan server-nya.
Nilai default untuk tag ini:
client_persistent_connections on
Server_persistent_connections on
91
• detect_broken_pconn
Jika di set on, Squid Proxy Server akan mendeteksi reply yang rusak
(broken) dan secara otomatis menduga bahwa reply akan selesai setelah
timeout selama 10 detik.
Nilai default untuk tag ini: detect_broken_pconn off
• balance_on_multiple_ip
Secara default, Squid Proxy Server merotasi IP untuk tiap request. Jika
parameter ini di set off, petunjuk ini hanya connection failure triggers
rotation. Nilai default untuk tag ini: balance_on_multiple_ip on
• pipeline_prefetch
Untuk meningkatkan kinerja dari aliran request ke yang paling sesuai dari
lingkungan yang tidak menggunakan Squid Proxy Server dapat mencoba
untuk melakukan fetch hingga 2 request dalam aliran yang paralel.
Nilai defaultnya off dimaksudkan untuk bandwidth management dan access
logging.
• extension_methods
Squid Proxy Server hanya mengetahui tentang cara HTTP request yang
standard. Dengan parameter ini dapat ditambah 20 cara “extension”.
• request_entities
Set parameter ini menjadi on jika memiliki client yang menuntut untuk
mengirimkan request entities dalam GET atau HEAD.
Nilai default untuk tag ini: request_entities off
92
• high_response_time_warning (msec)
Jika median dari waktu respon dalam 1 menit berlebihan, Squid Proxy
Server akan mencetak peringatan dengan debug level 0 untuk menarik
perhatian administrator.
Nilai default untuk tag ini: high_response_time_warning 0
• high_page_fault_warning
Jika rata-rata tingkat kesalahan halaman dalam 1 menit terlalu berlebihan,
Squid Proxy Server akan mencetak peringatan dengan debug level 0 untuk
menarik perhatian administrator. Nilai default untuk tag ini:
high_page_fault_warning 0
• high_memory_warning
Jika penggunaan memori berlebihan, Squid Proxy Server akan mencetak
peringatan dengan debug level 0 untuk menarik perhatian administrator.
Nilai default untuk tag ini: high_memory_warning 0
• store_dir_select_algorithm
Set parameter ini menjadi ‘round-robin’ sebagai alternatif.
Nilai default untuk tag ini: store_dir_select_algorithm least-load
• forward_log
Option ini hanya tersedia jika Squid Proxy Server di built dengan
menggunakan –DWIP_FWD_LOG. Parameter ini digunakan untuk
mencatat server-side request.
93
• ie_refresh on|off
Microsoft Internet Explorer hingga versi 5.5 Sevice Pack 1 memiliki
masalah dengan transparent proxy, dimana sangat tidak mungkin untuk
me-refresh. Dengan mengubah parameter ini menjadi on dapat
menyelesaikan masalah ini dengan menyebabkan semua permintaan IMS-
REFRESH dari versi IE yang lebih lama untuk memeriksa server asal
mencari isi yang masih segar. Nilai default untuk tag ini: ie_refresh off
• vary_ignore_expire on|off
Banyak server HTTP yang mendukung vary memberikan suatu objek
waktu berakhirnya dengan segera dengan no cache-control header ketika
diminta oleh client HTTP/1.0. Parameter ini membuat Squid Proxy Server
mengabaikan waktu yang sudah berakhir tersebut hingga HTTP/1.1
diimplementasikan secara penuh.
Nilai default untuk tag ini: vary_ignore_expire off
• sleep_after_fork (microseconds)
Ketika parameter ini di set ke nilai yang bukan nol, proses utama Squid
Proxy Server menidurkan sejumlah mikrodetik setelah fork() system call.
Tidur ini dapat membantu situasi dimana sistem melaporkan kegagalan
fork() yang berkaitan dengan kekurangan (virtual) memori.
Nilai default untuk tag ini: sleep_after_fork 0
• relaxed_header_parser on|off|warn
Jika di set “on”, Squid Proxy Server menerima format tertentu dari non-
compliant HTTP message yang unambigu tentang maksud dari mengirim
94
aplikasi bahkan jika pesan tidak dalam bentuk format yang benar. Pesan ini
kemudian dinormalisasi ke dalam format yang benar ketika di forward oleh
Squid Proxy Server. Jika di set “warn”, peringatan akan diedarkan ke
dalam cache.log setiap kali kesalahan seperti HTTP error ditemui. Jika di
set “off”, HTTP error tersebut akan menyebabkan request atau response di
tolak. Nilai default untuk tag ini: relaxed_header_parser on
• max_filedesc
Jumlah maksimum dari pembukaan file descriptor.
Nilai default untuk tag ini: max_filedesc 1024
2.8 NAT vs Proxy Server
2.8.1 Network Address Translation (NAT)
(http://id.wikipedia.org/wiki/Network_Address_Translation, 2006) Network
Address Translation atau yang lebih biasa disebut dengan NAT adalah suatu metode
untuk menghubungkan lebih dari satu komputer ke jaringan internet dengan
menggunakan satu alamat IP. Banyaknya penggunaan metode ini disebabkan karena
ketersediaan alamat IP yang terbatas, kebutuhan akan keamanan (security), dan
kemudahan serta fleksibilitas dalam administrasi jaringan.
Kapanpun jaringan internal menginginkan untuk terhubung ke internet, NAT
akan menghubungkan alamat IP yang valid dari internet dengan alamat IP private
yang melakukan request. Setelah itu semua traffic akan ditulis kembali dari NAT
public IP address ke NAT private address. Jika alamat IP public yang dihubungkan
menjadi idle untuk beberapa waktu yang ditentukan, alamat IP public tersebut akan
dikembalikan ke kumpulan public NAT. Masalah utama pada NAT adalah jika semua
95
alamat IP public yang bebas sudah digunakan, berbagai user private tambahan tidak
dapat melakukan request ke layanan internet hingga public NAT address menjadi
bebas kembali.
Kelebihan NAT:
• Mudah dikonfigurasi
• Didukung oleh aplikasi yang umum digunakan
• Dapat didukung oleh server internal
• User akan menerima pesan kesalahan jika koneksi gagal dan user juga dapat
melakukan beberapa diagnosa
Kekurangan dari NAT:
• Tidak seaman proxy server
• Tidak ada memiliki fitur caching
2.8.2 Proxy Server
(http://www.cablemodemhelp.com/proxy_vs_nat.htm, 2006) Proxy server
hanya menggunakan satu alamat IP public, seperti IP MASQ, dan bersikap sebagai
penerjemah kepada client yang berada dalam LAN. Proxy server dapat menerima
request seperti TELNET, FTP, WWW, dan lain-lain dari private network dalam satu
interface. Kemudian pada gilirannya, proxy server akan membuat request tersebut
seolah-olah berasal dari seseorang yang berada dalam sebuah kotak yang lokal.
Sekali remote internet server mengirimkan kembali informasi dari suatu request,
server tersebut akan menerjemahkan kembali alamat TCP/IP ke client MASQ
internal dan mengirimkan traffic ke host internal yang di request.
96
Kelebihan proxy server:
• Dapat lebih cepat jika cache digunakan dan ukuran dari cache cukup besar
• Merupakan cara yang aman untuk menghubungkan LAN
Kekurangan proxy server:
• Cache tidak mengetahui jika halaman web yang dihasilkan sudah tidak up to
date
• Tidak semua aplikasi didukung oleh proxy server
• Mesin yang berada di belakang proxy server tidak dapat digunakan sebagai
server eksternal
2.9 HTML
HyperText Markup Language (HTML) adalah sebuah bahasa markup yang
digunakan untuk membuat sebuah halaman web dan menampilkan berbagai informasi di
dalam sebuah browser Internet (http://id.wikipedia.org/wiki/HTML, 2006). Bermula
dari sebuah bahasa yang sebelumnya banyak digunakan di dunia penerbitan dan
percetakan yang disebut dengan SGML, HTML adalah sebuah standar yang digunakan
secara luas untuk menampilkan halaman web dan HTML kini merupakan standar
Internet yang saat ini dikendalikan oleh World Wide Web Consortium (W3C).
HTML berupa kode-kode tag yang menginstruksikan browser untuk
menghasilkan tampilan sesuai dengan yang diinginkan. Sebuah file yang merupakan file
HTML dapat dibuka dengan menggunakan browser web seperti Mozilla Firefox atau
Microsoft Internet Explorer. HTML juga dapat dikenali oleh aplikasi pembuka email
ataupun dari PDA dan program lain yang memiliki kemampuan browser.
97
Secara garis besar, terdapat 4 jenis elemen dari HTML:
• structural. tanda yang menentukan level atau tingkatan dari sebuah teks (contoh,
<h1>Golf</h1> akan memerintahkan browser untuk menampilkan "Golf"
sebagai teks tebal besar yang menunjukkan sebagai Heading 1
• presentational. tanda yang menentukan tampilan dari sebuah teks tidak peduli
dengan level dari teks tersebut (contoh, <b>boldface</b> akan menampilkan
bold. Tanda presentational saat ini sudah mulai digantikan oleh CSS dan tidak
direkomendasikan untuk mengatur tampilan teks,
• hypertext. tanda yang menunjukkan link ke bagian dari dokumen tersebut atau
link ke dokumen lain (contoh, <a href="http://binusmaya.binus.ac.id/">Bina
Nusantara</a> akan menampilkan ‘Bina Nusantara’ sebagai sebuah hyperlink ke
URL tertentu),
• Elemen widget yang membuat objek-objek lain seperti tombol (<button>), list
(<li>), dan garis horizontal (<hr>).
Selain markup presentational , markup yang lain tidak menentukan bagaimana
tampilan dari sebuah teks. Namun untuk saat ini, penggunaan tag HTML untuk
menentukan tampilan telah dianjurkan untuk mulai ditinggalkan dan sebagai gantinya
digunakan Cascading Style Sheets.
98
2.10 Apache HTTP Server
Server HTTP Apache atau Server Web/WWW Apache adalah server web yang
dapat dijalankan di banyak sistem operasi (Unix, BSD, Linux, Microsoft Windows dan
Novell Netware serta platform lainnya) yang berguna untuk melayani dan
memfungsikan situs web. Protokol yang digunakan untuk melayani fasilitas web/www
ini mengunakan HTTP.
Apache memiliki fitur-fitur canggih seperti pesan kesalahan yang dapat
dikonfigurasi, autentikasi berbasis basis data dan lain-lain. Apache juga didukung oleh
sejumlah antarmuka pengguna berbasis grafik (GUI) yang memungkinkan penanganan
server menjadi mudah.
Apache merupakan perangkat lunak sumber terbuka dikembangkan oleh
komunitas terbuka yang terdiri dari pengembang-pengembang dibawah naungan Apache
Software Foundation.
Pada awal mulanya, Apache merupakan perangkat lunak sumber terbuka yang
menjadi alternatif dari server web Netscape (sekarang dikenal sebagai Sun Java System
Web Server). Sejak April 1996 Apache menjadi server web terpopuler di internet. Pada
Mei 1999, Apache digunakan di 57% dari semua web server di dunia. Pada November
2005 persentase ini naik menjadi 71%. (sumber: Netcraft Web Server Survey, November
2005).
Asal mula nama Apache berasal ketika sebuah server web populer yang
dikembangkan pada awal 1995 yang bernama NCSA HTTPd 1.3 memiliki sejumlah
perubahan besar terhadap kode sumbernya (patch). Saking banyaknya patch pada
perangkat lunak tersebut sehingga disebut sebuah server yang memiliki banyak patch
("a patchy" server). Tetapi pada halaman FAQ situs web resminya, disebutkan bahwa
99
"Apache" dipilih untuk menghormati suku asli Indian Amerika Apache (Indé), yang
dikenal karena keahlian dan strategi perangnya. Versi 2 dari Apache ditulis dari awal
tanpa mengandung kode sumber dari NCSA.
2.11 PHP
Menurut Tim Converse and Joyce Park with Clark Morgan (2001), PHP adalah
bahasa pemrograman web yang ditulis oleh dan untuk web developer. PHP adalah
singkatan dari PHP: Hypertext Preprocessor, yang awalnya bernama Personal Home
Page Tools, dan banyak orang hingga saat ini masih menganggap bahwa itulah
kepanjangan dari PHP. Tetapi dengan semakin meluasnya ruang lingkup PHP, sebuah
nama yang baru dan lebih tepat akhirnya dipilih berdasarkan voting yang dilakukan oleh
komunitas.
PHP adalah sebuah server-side scripting language, yang dapat di-embedded ke
dalam HTML atau digunakan sebagai standalone binary. PHP pertama kali dibuat oleh
Rasmus Lerdorf pada tahun 1994. Saat itu, aplikasi yang dibuatnya hanyalah sebuah
CGI wrapper yang membantunya untuk mendapatkan informasi mengenai orang-orang
yang mengunjungi situs pribadinya. Tahun berikutnya, ia menciptakan sebuah paket
yang disebut sebagai Personal Home Page Tools (alias PHP Construction Kit) untuk
menanggapi permintaan dari user-user. Versi kedua dirilis dengan nama PHP/FI dan
disertakan Form Interpreter, sebuah tool untuk melakukan parsing SQL query.
Pada pertengahan tahun 1997, PHP digunakan oleh hampir 50.000 situs di dunia.
Hal ini menandakan bahwa PHP saat itu sudah terlalu besar untuk ditangani oleh satu
orang saja. Hingga terbentuklah sebuah tim pengembangan yang menjalankan proyek
PHP dengan model open source “benevolent junta”, dengan kontribusi dari berbagai
100
developer dan user dari berbagai tempat di dunia. Zeev Suraski dan Andi Gutmans, dua
orang programmer Israel yang mengembangkan PHP3 dan PHP4 parsers, juga
melakukan generalisasi dan memperluas pekerjaan mereka dalam rubrik zend.com (Zeev,
Andi, Zend, get it?).
Pada kuarter keempat tahun 1998 menandai periode meledaknya pertumbuhan
PHP, seiring dengan teknologi open source yang mendapat publisitas luar biasa. Pada
Oktober 1998, terdapat lebih dari 100.000 unique domain yang menggunakan PHP.
Hanya dalam waktu satu tahun kemudian, PHP melewati angka 1 juta domain. Pada
versi terbarunya, PHP5 menunjukkan sesuatu kepada para user, yaitu fungsionalitas
object-oriented programming (OOP) yang lebih baik dari sebelumnya.
Kelebihan PHP dibanding bahasa pemrograman lain:
• Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak melakukan
sebuah kompilasi dalam penggunaanya.
• Web Server yang mendukung PHP dapat ditemukan dimana-mana dari mulai IIS
sampai dengan apache, dengan configurasi yang relatif mudah.
• Dalam sisi pengembangan lebih mudah, karena banyaknya milis-milis dan
developer yang siap membantu dalam pengembangan.
• Dalam sisi pemahamanan, PHP adalah bahasa scripting yang paling mudah
karena referensi yang banyak.
• PHP adalah bahasa open source yang dapat digunakan di berbagai mesin (linux,
unix, windows) dan dapat dijalankan secara runtime melalui console serta juga
dapat menjalankan perintah-perintah system.
101
2.12 MYSQL
Menurut Tim Converse and Joyce Park with Clark Morgan (2001), MySQL
seringkali digunakan untuk merujuk kepada MySQL database management system dan
kerapkali digunakan untuk merujuk pada perusahaan yang ada di balik aplikasi MySQL.
Perusahaan ini lebih dikenal dengan nama MySQL AB. Sedangkan aplikasi MySQL
adalah sebuah produk DBMS yang dimiliki, dikembangkan dan dijual oleh MySQL AB,
yang merupakan sebuah aplikasi database server (dan produk terkait, seperti program
client untuk berkomunikasi dengan server dan programming interface untuk
mengembangkan client baru).
Tidak sama dengan proyek-proyek seperti Apache, dimana perangkat lunak
dikembangkan oleh komunitas umum, dan hak cipta untuk kode sumber dimiliki oleh
penulisnya masing-masing, MySQL dimiliki dan disponsori oleh sebuah perusahaan
komersial Swedia MySQL AB, dimana memegang hak cipta hampir atas semua kode
sumbernya. Kedua orang Swedia dan satu orang Finlandia yang mendirikan MySQL AB
adalah: David Axmark, Allan Larsson, dan Michael "Monty" Widenius.
Terdapat beberapa API tersedia yang memungkinkan aplikasi-aplikasi komputer
yang ditulis dalam berbagai bahasa pemrograman untuk dapat mengakses basis data
MySQL antara lain: bahasa pemrograman C, C++, C#, bahasa pemrograman Eiffel,
bahasa pemrograman Smalltalk, bahasa pemrograman Java, bahasa pemrograman Lisp,
Perl, PHP, bahasa pemrograman Python, Ruby, REALbasic dan Tcl. Sebuah antarmuka
ODBC memanggil MyODBC yang memungkinkan setiap bahasa pemrograman yang
mendukung ODBC untuk berkomunikasi dengan basis data MySQL.
MySQL sangat populer dalam aplikasi web seperti MediaWiki (perangkat lunak
yang dipakai Wikipedia dan proyek-proyek sejenis) dan PHP-Nuke dan berfungsi
102
sebagai komponen basis data dalam LAMP. Popularitas sebagai aplikasi web
dikarenakan kedekatannya dengan popularitas PHP, sehingga seringkali disebut sebagai
Dynamic Duo.
Untuk melakukan administrasi dalam basis data MySQL, dapat menggunakan
modul yang sudah termasuk yaitu command-line (perintah: mysql dan mysqladmin). Juga
dapat diunduh dari situs MySQL yaitu sebuah modul berbasis grafik (GUI): MySQL
Administrator dan MySQL Query Browser. Selain itu terdapat juga sebuah perangkat
lunak gratis untuk administrasi basis data MySQL berbasis web yang sangat populer
yaitu phpMyAdmin. Untuk perangkat lunak untuk administrasi basis data MySQL yang
dijual secara komersial antara lain: MySQL front, Navicat dan EMS SQL Manager for
MySQL.
2.13 Javascript
Javascript diperkenalkan pertama kali oleh Netscape pada tahun 1995. Pada
awalnya bahasa yang sekarang disebut JavaScript ini dulunya dinamai “LiveScript”
yang berfungsi sebagai bahasa sederhana untuk browser Netscape Navigator 2 yang
sangat populer pada saat itu. Kemudian sejalan dengan sedang giatnya kerjasama antara
Netscape dan Sun (pengembang bahasa pemrograman “Java”) pada masa itu, maka
Netscape memberikan nama “JavaScript” kepada bahasa tersebut pada tanggal 4
desember 1995. Pada saat yang bersamaan Microsoft sendiri mencoba untuk
mengadaptasikan teknologi ini yang disebut sebagai “Jscript” di browser milik
Microsoft yaitu Internet Explorer 3. JavaScript sendiri merupakan modifikasi dari
bahasa pemrograman C++ dengan pola penulisan yang lebih sederhana dari bahasa
pemrograman C++.
103
JavaScript adalah bahasa pemrograman yang khusus untuk halaman web agar halaman
web menjadi lebih hidup (http://supono.wordpress.com/tag/javascript/, 2005). Kalau
dilihat dari suku katanya terdiri dari dua suku kata, yaitu Java dan Script. Java adalah
Bahasa pemrograman berorientasi objek, sedangkan Script adalah serangkaian instruksi
program.
Ada beberapa hal yang harus diperhatikan dalam pengelolaan pemrograman
JavaScript, diantaranya JavaScript adalah “case sensitive”, yang artinya JavaScript
membedakan huruf besar dan huruf kecil. Dalam bahasa pemrograman JavaScript juga,
sebagai contoh fungsi perintah var tidak boleh ditulis Var dan juga tidak boleh ditulis
VAR (huruf besar semua), yang benar adalah var (huruf kecil semua). Perintah lain
adalah new Date tidak boleh ditulis new date (huruf kecil semua), dan banyak yang
lainnya.
2.14 Webmin
Webmin merupakan suatu interface berbasiskan web yang dapat digunakan untuk
administrasi sistem pada Unix. Dengan menggunakan browser apa saja yang
mendukung tabel, dan form (dan Java untuk modul file manager), dapat dibuat user
account, Apache, DNS, file sharing, dan sebagainya
(http://www.webmin.com/intro.html, 2006).
Webmin terdiri dari web server yang sederhana dan sejumlah program CGI yang
secara langsung dapat meng-update sistem file seperti /etc/inetd.conf dan /etc/passwd.
Web server dan semua program CGI ditulis menggunakan bahasa pemrograman Perl
versi 5 dan tidak menggunakan modul Perl yang non-standart.
104
Hampir semua pengembangan Webmin dilakukan oleh Jamie Cameron.
Meskipun begitu banyak orang yang melakukan konstribusi patches dan
menerjemahkannya ke bahasa-bahasa lain. Terdapat juga third-party modules yang
dikembangkan oleh orang lain secara terpisah.
2.15 Web (World Wide Web)
Web (yang merupakan penyederhanaan dari World Wide Web) adalah sebuah
sistem informasi yang mengelola jaringan internet dengan menggunakan suatu set
protocol tertentu. Web adalah sistem client/ server yang dirancang untuk menggunakan
dokumen hypertext dan hypermedia via internet. Perlu diketahui bahwa pengertian
internet dan web berbeda, namun keduanya memiliki keterkaitan satu sama lain. Internet
adalah suatu jaringan global, sedangkan web bukanlah sekedar jaringan tetapi
merupakan suatu set aplikasi komunikasi dan sistem perangkat lunak yang memiliki
karakterstik sebagai berikut:
• Umumnya terletak pada internet host dan client
• Umumnya menggunakan protocol TCP/IP
• Mengerti HTML
• Mengikuti model client/ server untuk komunikasi data dua arah
• Memungkinkan client untuk mengakses informasi dalam berbagai media
(seperti teks, audio, video)
• Menggunakan model alamat Uniform Resource Locator (URL)
(Kurniawan, 2001, p 2-3)
105
2.16 Wizard
Sebuah wizard adalah sebuah program komputer interaktif yang bertindak
sebagai sebuah interface yang membimbing user melalui serangkaian tugas yang
kompleks, menggunakan dialog langkah demi langkah (step-by-step dialogs). Pertama
kali diperkenalkan pada sistem operasi Microsoft Windows 95, yaitu Internet Connection
Wizard.
Aplikasi web juga menggunakan paradigma wizard untuk menyelesaikan proses-
proses interaktif yang relatif panjang (misalnya, situs booking tiket pada sebuah
maskapai penerbangan). (http://en.wikipedia.org/wiki/Wizard_%28programming%29,
2007)