Website accelerator dengan Freebsd 9 dan squid 3.1 (reverse proxy)

Teknik mempercepat website ada banyak; baik di level DNS, peletakan file static di domain/server yang berbeda dll. kali ini saya akan mempergunakan OS Freebsd 9 dan squid bawaan dari Port System.

Oke, pertama-tama konsep dari Web-accelerator dipahami dulu. Misalkan ada user A dari IP External me-request file index.htm pada server Z, dimana untuk menghasilkan file index.htm *** tsb melibatkan banyak komponen; antara lain service apache (webserver), mysql (database server).

Begitu file index.htm terunduh oleh browser user A, di dalam file index.htm tsb membutuhkan file statik image-jpg, css  & js pada server Z yang sama, hanya beda direktori, karena browser secara default akan merambat semua file yang diperlukan di proses lagi request ke Server Z untuk mengunduh file css dsb nya. sampai selesai. Dan ini membuat apache (webserver) pada server Z sibuk. Bayangkan kalau ada 50-100 pengunjung dalam 1 menit, dan index.htm membutuhkan 70 file jpg/css/js didalamnya!

reverse proxy 01
Yang kebanyakan terjadi pada website sibuk (konfigurasi single server)

Lihat diagaram diatas, Web server dan DB server akan sibuk hanya untuk menghasilkan output index.htm yang sama untuk setiap request. Apalagi jika Webserver tidak di konfigurasi untuk menghasilkan gzip output. Deflate/Compressed/Gzipped output memang mengurangi trafik network sangat signfikan untuk file-file css/js. Tetapi, prosesor server akan banyak terutilitas untuk meng-gzip-kan file-file static tsb.

Nah untuk website yang sibuk, diperlukan sebuah mesin lagi untuk menampung object-object static; biasanya dinamakan Web Accelerator. Engine-X (nginx) bisa dimanfaatkan juga untuk kepentingan ini, tetapi setahu saya lebih baik menggunakan SQUID pada situasi diatas. Sehingga diagram networknya berubah menjadi:

reverse proxy 02
Mesin Freebsd akan dijadikan Reverse Proxy; memperingan kerja webserver.

Tidak jauh berbeda untuk membuat proxy untuk kepentingan internet sharing; web-accelerator hanya ‘tweak’ di sisi squid.conf. Untuk itu, pelajari dulu artikel sebelumnya yang sudah saya pernah buat tentang pembuatan proxy server dengan freebsd.

Modifikasi saja squid.conf dari artikel sebelumnya, rubah squid.conf:

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

acl localnet src 10.0.0.0/8 # RFC1918
read more

FreeBSD 9 sebagai proxy server Squid

Pada artikel FreeBSD sebelumnya, hanyalah tutorial dasar installasi FreeBSD 9. Kali ini saya akan menginstall fbsd sebagai mesin proxy server; Menggunakan 2 harddisk cache. Harddisk boot di jadikan cache #1 dan harddisk lainnya menjadi cache #2. Squid yang dipergunakan bukan type Head (lusca). Bawaan dari directory ports system.

Sebagai topologi networknya; internet-> router-> freebsd squid ->client. FreeBSD sejajar dengan client; untuk itu masukan pengecualian redirect request http dari ip Freebsd; redirect semua httpp request dari LAN ke Ip freebsd. Karena ada banyaknya jenis router. Saya tidak menjelaskan bagaimana caranya 😀

muka gile

Pada harddisk boot system, partisi sewaktu installasi saya biarkan system yang mengaturnya. Jadi tidak ada partisi khusus cache pada harddisk boot, hanya folder untuk cache saja yang saya buat.

Pertama-tama (jika fresh install), saya install dulu nano-editor

# cd /usr/ports/editors/nano
# make clean install

Tunggulah beberapa saat, ini mengambil paket dari internet dan mengcompile paket nano.

Jika sudah, aktifkan ssh untuk root login, jika memang membutuhkan root di SSH.

# nano /etc/ssh/ssh_config
# nano /etc/ssh/sshd_config

Lalu tambahkan ini ke file ssh_config & sshd_config

PermitRootLogin yes
PasswordAuthentication yes
AllowUsers root
Port 22

jangan lupa di restart service ssh nya:

# service sshd restart

Jika tidak tampak pesan error, anda sudah bisa meremote ssh mesin freebsd ini. Saatnya berpindah dari monitor mesin freebsd ke ruangan lain 😀

yang bener5

Lalu saatnya squid di install. Pada fbsd 9, di dalam /usr/ports ada terdapat 2 versi squid; 3.1 dan 3.2. Saya pilih yang 3.1 saja 😀 untuk itu; install squid 3.1 dengan cara ports:

# cd /usr/ports/www/squid31
# make clean install

Pastikan SQUID_PF dan SQUID_AUFS dipilih, karena saya membutuhkan delaypools, saya cek delay-pool juga. Pilih tombol {OK} lalu {enter} untuk memulai. Proses compile agak lama; jadi harap sabar. Karena metode ini mengcompile dari file source — bukan mengunduh file binari. Jika sudah terlanjur enter, tekan {ctrl-c} lalu ketik ‘make config’ untuk kembali ke menu awal konfigurasi.

freebsd squid install 002 freebsd squid install 001

Karena saya memiliki 1 harddisk lagi yang belum di partisi dan di format, untuk itu saya siapkan dulu harddisk tsb untuk tempat penampungan cache.

# mkdir /squid
# mkdir /squid/cache1
# mkdir /squid/cache2
# mkdir /squid/log
# chown -R squid:squid /squid

Contoh direktori diatas bisa menimbulkan masalah sekuriti, harap jangan ditiru 😀

Lalu list saja daftar harddisk pada mesin:

# dmesg | grep ata
# dmesg | grep scsi
# dmesg | grep ide

Pilih saja, yang mana sesuai dengan controller disk di mesin. Pada controller scsi link harddisk ada di /dev/daXX. Untuk IDE /dev/adXX. Misalnya /dev/da0p2 artinya harddisk scsi urutan 1 partisi 2; dsb dsb.

Untuk partisi harddisk tambahan, ada 2 cara. Bisa memakai cli gparted atau ‘sysinstall’. Saya akan memakai cara kedua, karena lebih gui walaupun text-mode 😀

Ketikkan sysinstall pada prompt lalu pilih ‘configure’ — Partition. Tekan {a} (untuk memakai semua kapasitas harddisk). Setelah itu tekan {q} untuk keluar. pilih NONE pada bootloader. lalu Pilih kembali dibawah partition yaitu Label (Format disk).

freebsd squid install 003freebsd squid install 004freebsd squid install 005

Pada menu LABEL — tekan {C} untuk menformat partisi. Lalu pilih FS. Masukkan mount point /squid/cache2. Tekan {W} {yes} untuk proses formating. Diakhiri dengan {Q} untuk keluar ke menu.

freebsd squid install 008.pgfreebsd squid install 008.pg freebsd squid install 009

Lakukan tes baca tulis dulu untuk memastikan 😀

# cd /squid/cache2
# echo tes tulis>tes.txt
# tail tes.txt

cari tahu dulu apa simbolik link untuk harddisk tambahan. dengan menggunakan:

# df -h

Filesystem Size Used Avail Capacity Mounted on
/dev/da0p2 16G 2.9G 12G 19% /
devfs 1.0k 1.0k 0B 100% /dev
/dev/da1s1 36G 17M 33G
read more

Setup Debian sebagai gateway dengan shorewall

Tulisan saya kali ini membuat gateway manual dengan Debian 7 ditambah implementasi Shoreline Firewall (ShoreWall) yang katanya membuat seting iptables menjadi tidak rumit.

gareth-davies-logo3

Kalau butuh yang instan-instan untuk keperluan internet sharing, saya rekomendasikan menggunakan distro-distro Router yang sangat mudah di konfigurasikan, misalnya seperti Zentyal, Clearos, IPCop, Smoothwall, Mikrotik dll.

Lanjut ke ShoreWall; untuk itu perhatikan diagram network yang akan dijadikan praktek:

debian router2
Dari MODEM, semua port sudah di forward ke Debian, TCP, UDP dll.

Modem FO akan memberikan IP LAN kelas C, 192.168.30.2~254 secara default DHCP ke interface (eth) 1 pada mesin Debian. Saya set manual, sehingga mesin Debian ber-ip kan 192.168.30.20/24. DNS #1 menggunakan DNS ISP sisanya menggunakan Google Public DNS. Interface #2 diperuntukan ke LAN melalui hub-switch yang akan melayani kebutuhan internet sharing. Interface #3 akan dipergunakan sebagai DMZ; dimana seluruh mesin di area DMZ akan bisa diakses oleh public internet/LAN.

Unduh dulu Shorewallnya dari  http://www.shorewall.net/download.htm; atau gunakan fungsi “apt-get install shorewall”. Dan karena saya lebih suka CLI, saya gunakan text-editor yang saya sukai.

Config utama ShoreWall ada di /etc/default/shorewall. Konfigurasi tambahannnya ada di /etc/shorewall

Untuk mengaktivkan shorewall edit

# nano  /etc/default/shorewall

lalu rubah

startup=0

menjadi

startup=1

Artinya Shorewall akan aktif ketika boot awal system.

Agar dari eth1 bisa mengakses ke eth2 (local to dmz), edit file:

# nano /etc/shorewall/shorewall.conf

cari IP_FORWARDING set ke On

...
IP_FORWARDING=On
...

Karena yang akan saya buat menggunakan 3 interface, dengan area zone LAN dan DMZ. Editlah file zone nya:

# nano /etc/shorewall/zones

tinggal menambahkan ini aja; saya belum coba penamaan zone nya bisa bebas atau tidak 😀

fw firewall
net ipv4
dmz ipv4
loc ipv4

Nah lanjutnya seting area untuk interface; assign eth1 untuk LAN (loc), eth2 untuk DMZ dan eth0 sebagai net (akses internet utama).

nano /etc/shorewall/interfaces

Sesuaikan dengan interface dengan diagaram diawal artikel ini.

net eth0 detect dhcp,routefilter,tcpflags
loc eth1 detect dhcp
dmz eth2 detect dhcp

Woke, assign zone sudah. selanjutnya seting policy. tergantung kebutuhan, jadinya beda-beda.

nano  /etc/shorewall/policy

Tidak Menganut konsep policy untuk OpenBSD — incoming di reject/drop.

loc all REJECT
net all DROP
dmz all
read more

Merubah jenis hurup di Console Debian

Bagi yang berhadapan langsung dengan mesin Debian dan sering menggunakan CLI murni tanpa Desktop Environment pasti pernah terlintas, koq hurup console tty-nya Debian (ubuntu juga) rada beda dengan hurup standar…?

debian 7 console fonts setup 01debian 7 console fonts setup 02Saya sih tidak suka dengan jenis font model gini… 😀

untuk itu saya mau rubah ke font default, caranya cukup simple —  hanya rubah file console-setup yang terletak di /etc/default/console-setup

# nano /etc/default/console-setup

GNU nano 2.2.6 File: /etc/default/console-setup

# CONFIGURATION FILE FOR SETUPCON
# Consult the console-setup(5) manual page.

ACTIVE_CONSOLES="/dev/tty[1-6]"

CHARMAP="UTF-8"

CODESET="Lat15"
FONTFACE="Fixed"
FONTSIZE="8x16"

VIDEOMODE=

#
read more

Setup tambah harddisk & ethernet baru di Debian dengan CLI

Ada kalanya dibutuhkan penambahan hardware; yang paling sering dilakukan di mesin-mesin server Debian, seperti harddisk dan ethernet. Karena Debian saya tidak menggunakan Desktop Environment jadi proses konfigurasi dilakukan di console.

hdd jadulether 4 ports

Penambahan Harddisk

Shutdown dulu mesin Debian  dengan benar, menggunakan perintah ‘init 0’ atau ‘shutdown’. lalu buka casing server/pc dan pasang harddisk ke slot yang masih kosong. Baik SAS/Scsi/Sata/Ide tidak masalah, yang penting controllernya terdeteksi di Debian. Dilanjutkan pemasangan Ethernet tambahan pada slot pci/pcie.

Lantas ketika sudah masuk ke prompt root ketikan

root@debian7:~# dmesg | grep disk
[ 2.849077] sd 0:0:1:0: [sdb] Attached SCSI disk
[ 2.865557] sd 0:0:0:0: [sda] Attached SCSI disk
[ 3.209401] PM: Starting manual resume from disk
root@debian7:~#

Nah perhatikan output diatas, harddisk yang terpasang lebih awal — tetapi kalau pemasangan jalur kabelnya sembarangan, ya belum tentu boot drive adalah sda 😀 — sdX artinya harddisk  bertipe SCSI (lain dengan iSCSI). Jika harddisk IDE/Sata biasanya hdX, jadi sesuaikan dengan kondisi hardware anda.

Kembali ke hasil output dmesg. Harddisk ‘baru’ saya terdeteksi oleh sistem dan dikasih ‘link’ bernama ‘sdb’. Kalau tidak yakin, yang mana harddisk sistem (boot) anda, coba ketikkan ini ‘cat /etc/fstab’. Akan muncul nama harddisk boot anda disitu. Misalnya /dev/sda1 atau /dev/sda2.

Nah kalau bingung koq ada nomor di belakan sda? Itu maksudnya partisi. /dev/sda1 artinya harddisk scsi pertama dengan urutan partisi 1. sengaja saya tidak dump output dari peritah cat nya, karena akan lain-lain hasil outputnya.

Selanjutnya — karena harddisk baru belum di belum bisa diakses. Karena biasanya masih bersifat Raw file system. alias kosong — bawaan pabrik. Untuk itu kita perlu membuat partisi agar bisa di format dengan file system, dengan tujuan agar bisa di isi file. Debian 7 secara default; sudah mengikutsertakan paket partisi cfdisk. Kalau cfdisk tidak ada, terpaksa menggunakan perintah fdisk yang menakutkan 😀

clint eastwood 1_2

#
read more