Bandwidth Management Menggunakan WebHTB

10
Bandwidth management menggunakan WebHTB, Squid ZPH, mangle TOS iptables di Ubuntu Server 8.04 Setelah surfing di forum-forum akhirnya saya temukan management bandwidth berbasis web yaitu WebHTB pengembangan dari HTB Tool. WebHTB dapat memaksimalkan bandwidth yang kita peroleh dari ISP. Dalam kasus ini saya menggunakan Speedy paket unlimited 1Mbps untuk 15 client. Langkah-langkah untuk instalasi : 1. Instalasi Squid versi 2.7 STABLE3 atau yang terbaru dan support ZPH. Tambahkan repo main untuk intrepid pada file /etc/apt/source.list pada baris terakhir admin@proxy:~$sudo nano /etc/apt/source.list deb http://kambing.ui.ac.id/ubuntu intrepid main atau menggunakan repo yang lainnya deb http://id.archive.ubuntu.com/ubuntu/ intrepid main kemudian update source list anda dan install squidnya admin@proxy:~$sudo apt-get update admin@proxy:~$sudo apt-get install squid squid-client squid-cgi saat ini Squid telah terinstall dan berjalan dengan baik. 2. Konfigurasi Squid. Sebelumnya kita matikan service squid yang sedang berjalan admin@proxy:~$sudo /etc/init.d/squid stop yang paling penting adalah cara menandai paket-paket yang ada di mesin proxy ( CacheHIT ), yang memungkinkan implementasi ZPH ( Zero Penalty Hit )

Transcript of Bandwidth Management Menggunakan WebHTB

Page 1: Bandwidth Management Menggunakan WebHTB

Bandwidth management menggunakan WebHTB, Squid ZPH, mangle TOS iptables di Ubuntu Server 8.04

Setelah surfing di forum-forum akhirnya saya temukan management bandwidth berbasis web yaitu WebHTB pengembangan dari HTB Tool. WebHTB dapat memaksimalkan bandwidth yang kita peroleh dari ISP. Dalam kasus ini saya menggunakan Speedy paket unlimited 1Mbps untuk 15 client.

Langkah-langkah untuk instalasi :

1. Instalasi Squid versi 2.7 STABLE3 atau yang terbaru dan support ZPH.

Tambahkan repo main untuk intrepid pada file /etc/apt/source.list pada baris terakhir

admin@proxy:~$sudo nano /etc/apt/source.listdeb http://kambing.ui.ac.id/ubuntu intrepid main

atau menggunakan repo yang lainnya

deb http://id.archive.ubuntu.com/ubuntu/ intrepid main

kemudian update source list anda dan install squidnya

admin@proxy:~$sudo apt-get updateadmin@proxy:~$sudo apt-get install squid squid-client squid-cgi

saat ini Squid telah terinstall dan berjalan dengan baik.

2. Konfigurasi Squid.

Sebelumnya kita matikan service squid yang sedang berjalan

admin@proxy:~$sudo /etc/init.d/squid stop

yang paling penting adalah cara menandai paket-paket yang ada di mesin proxy ( CacheHIT ), yang memungkinkan implementasi ZPH ( Zero Penalty Hit )

Page 2: Bandwidth Management Menggunakan WebHTB

konfigurasi squid.conf nya

http_port 3128 transparenthierarchy_stoplist cgi-bin ? .js .jspacl QUERY urlpath_regex cgi-bin \? .js .jspcache deny QUERYcache_mem 32 MBcache_swap_low 98cache_swap_high 99max_filedesc 8192maximum_object_size 32 MBminimum_object_size 0 KBmaximum_object_size_in_memory 512 bytesipcache_size 4096ipcache_low 98ipcache_high 99cache_replacement_policy heap LFUDAmemory_replacement_policy heap GDSFcache_dir aufs /cache 16000 16 256cache_access_log /var/log/squid/access.logcache_log /var/log/squid/cache.logcache_store_log nonepid_filename /var/run/squid.piddns_nameservers 202.134.2.5 203.130.196.155cache_swap_log /var/log/squid/swap.stateemulate_httpd_log onhosts_file /etc/hostsrefresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-privaterefresh_pattern -i \.(iso|avi|wav|mp3|mp4|mpeg|mpg|swf|flv|x-flv)$ 43200 90% 432000 override-expire ignore-no-cache ignore-privaterefresh_pattern -i \.(deb|rpm|exe|zip|tar|tgz|ram|rar|bin|pdf|ppt|doc|tiff)$ 10080 90% 43200 override-expire ignore-no-cache ignore-privaterefresh_pattern -i \.index.(html|htm|php|asp|aspx)$ 0 40% 10080refresh_pattern -i \.(html|htm|css|js) 1440 40% 40320refresh_pattern . 0 40% 40320negative_ttl 1 minuteshalf_closed_clients off

acl all src 0.0.0.0/0.0.0.0acl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255acl to_localhost dst 127.0.0.0/8acl SSL_ports port 443 563 # https, snewsacl SSL_ports port 873 # rsyncacl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 563 # https, snewsacl Safe_ports port 70 # gopher

Page 3: Bandwidth Management Menggunakan WebHTB

acl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl Safe_ports port 631 # cupsacl Safe_ports port 873 # rsyncacl Safe_ports port 901 # SWATacl purge method PURGEacl CONNECT method CONNECThttp_access allow manager localhosthttp_access deny managerhttp_access allow purge localhosthttp_access deny purgehttp_access deny !Safe_portshttp_access deny CONNECT !SSL_ports

snmp_port 3401acl snmpsquid snmp_community publicsnmp_access allow snmpsquid localhostsnmp_access deny all

acl lokal-net src 192.168.2.0/24 ## Sesuaikanhttp_access allow lokal-nethttp_access deny allhttp_reply_access allow allicp_access deny allalways_direct deny all

cache_mgr [email protected]_hostname proxy.lokal.netcache_effective_user proxycache_effective_group proxycoredump_dir /var/spool/squidshutdown_lifetime 10 secondslogfile_rotate 5

#Marking ZPHzph_mode toszph_local 0×04zph_parent 0zph_option 136

Page 4: Bandwidth Management Menggunakan WebHTB

Type Of Service (TOS) yang diberikan ke objek yang tercache menggunakan kode mnemonic TOS Maximize-Reliability ( 0x04 ) untuk di MARK di iptables. Iptables yang belum dipatch hanya mengenali 5 jenis Type Of Service ( TOS ) yaitu :

Normal-Service 0x00Minimize-Cost 0x02Maximize-Reliability 0x04Maximize-Throughput 0x08Minimize-Delay 0x10

lokasi cache saya pisahkan pada partisi yang berbeda pada 1 harddisk dan di mount pada 1 direktori /cache dengan ukuran 16GB menggunakan ReiserFS sebagai File Systemnya, dalam beberapa forum dijelaskan ReiserFS lebih cepat pembacaan filenya daripada File System EXT3.

Pastikan direktori tersebut dimiliki oleh user & group yang menjalankan squid.

admin@proxy:~$sudo chown -R proxy.proxy /cache

kemudian buat direktor swap

admin@proxy:~$sudo squid -z

apabila tidak ada pesan error, jalankan squidnya

admin@proxy:~$sudo /etc/init.d/squid start

Sampai disini anda telah berhasil memisahkan objek HIT dan MISS dengan ZPH mode TOS.

3. MARK iptables untuk TOS ZPH

Tandai paket dengan Type Of Service 0x04 pada mangle iptables TOS 0x04 dengan MARK id 4.

admin@proxy:~$sudo iptables -A OUTPUT -t mangle -m tos --tos 0x04 -j MARK --set-mark 0x04

Jangan lupa untuk menambahkan rules NAT/MASQUERADE dan REDIRECT HTTP ke port squid serta firewall lainnya

Untuk NAT/MASQUERADE dan REDIRECT HTTP nya sebagai berikut :

admin@proxy:~$sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADEadmin@proxy:~$sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.2.0/24 --dport 80 -j REDIRECT --to-ports 3128

Page 5: Bandwidth Management Menggunakan WebHTB

kemudian save iptablesnya

admin@proxy:~$sudo iptables-save /lokasi-file-config-iptables

Istirahat sebentar sambil minum kopi dan menghisap Djarum Black Slimz

4. Instalasi WebHTB dan Apache2 support SSL.

Diasumsikan Apache2, MySQL, dan php5 telah terinstall dan berjalan dengan baik. Update Apache2 dan php5 dengan Apache2 dan php5 untuk intrepid.

admin@proxy:~$sudo apt-get install apache2 php5 php5-cli php5-mysql php5-snmp php5-xmlrpc

Setelah selesai instalasi disable extra source list tadi dengan memberi tanda # di awal baris

admin@proxy:~$sudo nano /etc/apt/source.list#deb http://kambing.ui.ac.id/ubuntu intrepid mainatau#deb http://id.archive.ubuntu.com/ubuntu/ intrepid main

kemudian update lagi source list anda, agar repo Ibex tidak diaktifkan.

admin@proxy:~$sudo apt-get update

Download source WebHTB di http://biznetnetworks.dl.sourceforge.net/project/webhtb/WebHTB V2.xx/WebHTB_V2.9/WebHTB_V2.9.bz2

Ekstrak ke folder /usr/local

admin@proxy:~$sudo tar -xjvf WebHTB_V2.9.bz2 -C /usr/local

Aktifkan module SSL Apache2

admin@proxy:~$sudo a2enmod ssl

Generate SSL key untuk apache2

admin@proxy:~$sudo apt-get install openssl ssl-certadmin@proxy:~$sudo mkdir -p /etc/apache2/ssladmin@proxy:~$sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

Buat Virtual Host Untuk Webhtb

admin@proxy:~$sudo nano /etc/apache2/sites-available/webhtb

Page 6: Bandwidth Management Menggunakan WebHTB

Masukkan konfigurasi virtual hostnya

o NameVirtualHost *:443 <virtualhost *:443> SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem

ServerAdmin [email protected] DocumentRoot /usr/local/webhtb/ <directory />

Options FollowSymLinks AllowOverride All

</directory> <directory "/usr/local/webthb">

Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all

</directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <directory "/usr/lib/cgi-bin">

AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all

</directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On

o </virtualhost>

Aktifkan Virtual Host WebHTB

admin@proxy:~$sudo a2ensite webhtb

Reload konfigurasi apache anda

admin@proxy:~$sudo /etc/init.d/apache2 force-reload

Copy startup wehbtb

admin@proxy:~$sudo cp /usr/local/webhtb/docs/webhtb /etc/init.d

Set executable

admin@proxy:~$sudo chmod u+x /etc/init.d/webhtb

agar WebHTB start otomatis saat startup, jalankan perintah

admin@proxy:~$sudo invoke-rc.d webhtb start

Akses WebHTB anda dikomputer lain. Ketikkan pada address bar

https://lokasi-ip-webhtb-anda/setup/index.php

Page 7: Bandwidth Management Menggunakan WebHTB

Masukkan :

MySQL admin user: rootMySQL admin password: (password root MySQL ada)MySQL WebHTB user:MySQL WebHTB password:MySQL WebHTB password again:MySQL WebHTB databasename: webhtbDefault interface: eth1 <--- Sesuaikan dengan interface LAN yang menuju ke Lokalnet

Apabila tidak ada pesan error, WebHTB seharusnya berjalan dengan baik

WebHTB siap diakses melalui browser dengan address :

https://lokasi-ip-webhtb-anda/

5. Setup WebHTB

Sebelum mensetup WebHTB sebaiknya anda set dulu password untuk user root, karena password user root pada Ubuntu belum tersetup. Caranya adalah :

admin@proxy:~$sudo passwd rootEnter new UNIX password: ( isikan password untuk user root )Retype new UNIX password: ( isikan lagi passwordnya )passwd: password update successfully

Password untuk user root telah tersetup.

Sekarang kita hitung alokasi bandwidth yang didapat dari ISP, kemudian dibagi ke client-client. Misalnya alokasi bandwidth yang didapat dari Speedy rata2 900Kbps. Jumlal client 15 dan jatah bandwidth untuk masing-masing client 64Kbps limit 256Kbps.

Langkah-langkah pembagiannya sebagai berikut :

o Pilih Interfaces -> Klik Add Interface Pilih interface yang mengarah ke jaringan lokal ( dalam kasus ini eth1 ) lalu klik tulisan Click to add

o Pilih Classes -> Klik Add Classes Isikan seperti dibawah ini : Name: Proxy-DNS Bandwidth: 10240 Limit: 10240 Burst: 0 Priority: 0

Que: SFQ Klik tombol gambar centang untuk menyimpan Name: Administrator Bandwidth: 1024 Limit: 1024 Burst: 0 Priority: 1

Que: SFQ Klik tombol gambar centang untuk menyimpan Name: Client-Net Bandwidth: 640 Limit: 900 Burst: 0 Priority: 2 Que:

SFQ Klik tombol gambar centang untuk menyimpan o Klik Add Clent Pilih pada drop down menu Class: Proxy-DNS Isikan seperti

dibawah ini : Client: CacheHIT Bandwidth: 10240 Limit: 10240 Burst: 32 Priority: 1

Mark: 4 ( sesuai dengan mangle MARK iptables ) Klik tulisan SAVE untuk menyimpan

Page 8: Bandwidth Management Menggunakan WebHTB

Client: DNS-Rekues Bandwidth: 128 Limit: 128 Burst: 0 Priority: 1 SRC IPS: IP DNS Server Lokal/Provider ( untuk mengisikan lebh dari satu IP klik tulisan Click here for new src, dst .. SAVE

Pilih Class: Administrator Isikan seperti dibawah ini :

Client: Admin-Gateway Bandwidth: 1024 Limit: 1024 Burst: 0 Priority: 2 SRC IPS: IP gateway DST IPS: IP Komputer Admin SAVE

Client: Admin-Internet Bandwidth: 64 Limit: 256 Burst: 0 Priority: 3 SRC IPS: kosongkan DST IPS: IP Komputer Admin SAVE

Pilih Class: Client-Net Isikan seperti dibawah ini :

Client: Client-1 Bandwidth: 64 Limit: 256 Burst: 0 Priority: 3 SRC IPS: kosongkan DST IPS: IP Komputer Client 1 SAVE

Client: Client-2 Bandwidth: 64 Limit: 256 Burst: 0 Priority: 3 SRC IPS: kosongkan DST IPS: IP Komputer Client 2 SAVE

dan seterusnya

Untuk mengaktifkan management bandwidthnya pilih Change QOS Status -> Klik Start/Restart QOS.

Setiap melakukan perubahan/penambahan, harus dilakukan Restart QOS agar perubahan/peambahan ditetapkan

Untuk melihat hasilnya bisa pilih Show -> Klik Show traffic

Management Bandwidth telah terinstall dan tersetup, setiap client mendapatkan jatah bandwidthya masing-masing. Setelah itu anda hanya tinggal memantau bandwidth sambil menghabiskan kopi hangat beserta Djarum Black anda he...he...he...