PT. Hawk Teknologi Solusi

Silahkan Cari Disini

Rabu, 05 November 2008

Simple Queue IIX dan International dengan Satu Router

Sebelumnya luangkan waktu untuk baca blog bos baba berikut ini
http://baba.blogdetik.com/2008/11/05/ajakan-jangan-asal-copy-paste-apaan-tuwh/

Pada blog ini saya mencoba memberikan contoh bagaimana mengatur bandwidth iix/nice menggunakan pc router mikrotik menggunakan teknik mangle yang sebenarnya sudah sering dibahas di forum-forum maupun di blog-blog. Tulisan ini hanya sebagai tambahan saja untuk melengkapi blog / artikel yang ada terdahulu. Jadi artikel ini "ASLI" saya buat sendiri bukan "Copy Paste" hehehe. Jujur saya juga akhirnya ikut-ikutan copy paste blog / artikel orang, soalnya blog ini saya jadikan kumpulan catatan juga, tujuannya kalau saya lupa sesuatu tinggal cari di blog sendiri hehehe. Jadi mohon maaf jika di blog saya juga ada beberapa artikel dari blog orang lain yang saya copy paste , tapi pasti saya tulis linknya dibawah atau diatasnya. Tapi emang lebih baik kalau orang yang mau baca artikel aslinya di hantarkan ke URL aslinya , atau artikelnya di terjemahkan dulu katanya bos baba, tapi emang gue tukang translate dari jalan pramuka heheheh :)

Tapi kalau teman-teman mau copy paste ya monggo sih asal ditulis asalnya dari mana gitu aja cukup kalau buat gue, tapi kalau buat orang bule gak cukup loh hehehe.

Mari kita bahas permasalahan yang sebenarnya

Skenario dari Simple Queue IIX dan International berikut ini adalah satu router dengan minimal dua Interface:
1. Backhaul -> yang mendapat IP Public dari ISP atau IP Point-to-Point biasanya sih /30 dari ISP
2. Distribution -> Interface yang menghadap ke pelanggan / user

Dalam contoh ini saya tidak melakukan NAT karena IP yang di routing semuanya IP Public karena kebetulan saya punya ISP sendiri , masa ISP pake IP Private , kalau ISP itu punya ASN dan IP Public sendiri hehehe peace (FYI: saya cuman Direktor Operasional bukan pemilikinya tapi what ever lah emang gue pikirin)
Gambaran Sederhananya:

[Internet IIX dan Intl]-[(Interface Backhaul) Mikrotik (Interface Distribution)]-[Router Kantor / Pelanggan]

Catatan:
Karena di interface distribution saya banyak vlan untuk memisah-misahkan link pelanggan (idealnya mah satu pelanggan satu vlan biar lebih aman), maka dalam contoh ini

in-interface=!backhaul-to-cbyer

artinya interface inputnya adalah semua interface selain selain "backhaul-to-cyber"
Skrip Manglenya

# nov/05/2008 19:39:55 by RouterOS 2.9.50
# software id = 9CS2-87N
#
/ ip firewall mangle
add chain=prerouting action=mark-connection new-connection-mark=con-iix \
passthrough=yes in-interface=!backhaul-to-cyber dst-address-list=nice \
comment="con-iix" disabled=no
add chain=prerouting action=mark-packet new-packet-mark=packet-iix \
passthrough=no connection-mark=con-iix comment="packet-iix" disabled=no
add chain=prerouting action=mark-packet new-packet-mark=packet-intl \
passthrough=no comment="packet-intl" disabled=no


Skrip diatas adalah hasil export dari Mikrotik v 2.9.50, perhatikan tulisan yang saya bold
dari hasil percobaan yang paling bener itu adalah chain=prerouting karena kalau chain=forward nanti di queue-simplenya hanya Rx-Rate yang efektif sedangkan Tx-Rate nya tidak , tetapi kalau dengan chain "prerouting" Rx dan Tx Ratenya efektif, kalau mau lebih jelasnya baca aja referensi tentang iptables di link berikut misalnya:

http://rootbox.or.id/tips/iptables.html

baca sendiri ya udah bahasa Indonesia tuh, Thanks to:
Lukman HDP/s3trum (lukman_hdp@yahoo.com)
supaya gue gak di gugat lagi hehehe.

Kemudian untuk bagian action=mark-connection new-connection-mark=con-iix, passthrought=yes supaya setelah di marking new-connection-mark packetnya diteruskan ke rule dibawahnya lagi (ini sih menurut pengertian gue semoga aja bener)

baru rule berikutnya action=mark-packet new-packet-mark=packet-iix, passthrought=no supaya setelah di marking new-packet-mark=packet-iix paket-paket tersebut tidak diteruskan ke rule selanjutnya. Dengan demikian kalau udah jadi paket-iix tidak usah di di marking lagi di paket-intl , ya kalau dimarking lagi jadi paket-intl semuanya jadi paket-intl donk bos :)

jadi tujuannya passthrought=no itu menurut gue nih ya supaya paket2 itu gak usah di teruskan ke proses lebih lanjut dibawahnya semoga aja bener :)

referensinya baca aja sendiri di:
http://www.mikrotik.com/testdocs/ros/2.9/ip/mangle.php
Thaks to Mikrotik Developer :)

Setelah di mangle selanjutnya set di Queue Simplenya

# nov/05/2008 19:44:39 by RouterOS 2.9.50
# software id = 9CS2-87N
#
/ queue simple
add name="JKT-OFFICE" target-addresses=203.89.24.71/32 dst-address=0.0.0.0/0 \
interface=all parent=none direction=both priority=8 \
queue=default-small/default-small limit-at=2000000/2000000 \
max-limit=2000000/3000000 total-queue=default disabled=no
add name="JKT-OFFICE-IIX" target-addresses=203.89.24.71/32 \
dst-address=0.0.0.0/0 interface=all parent=JKT-OFFICE \
packet-marks=packet-iix direction=both priority=8 \
queue=default-small/default-small limit-at=0/0 max-limit=0/0 \
total-queue=default-small disabled=no
add name="JKT-OFFICE-INTL" target-addresses=203.89.24.71/32 \
dst-address=0.0.0.0/0 interface=all parent=JKT-OFFICE \
packet-marks=packet-intl direction=both priority=8 \
queue=default-small/default-small limit-at=0/0 max-limit=0/0 \
total-queue=default-small disabled=no


contoh skrip diatas juga adalah hasil export dari Mikrotik 2.9.50
Jadi JKT-OFFICE-IIX dan JKT-OFFICE-INTL parent ke JKT-OFFICE
JKT-OFFICE-IIX untuk memantau penggunaan IIX sedangkan JKT-OFFICE-INTL untuk memantau penggunaan International , kalau mau dilimit di child nya juga bisa kalau mau, hanya saja di contoh ini saya cuman mau mantau penggunaan antara IIX dan Internationalnya.
target-address=203.89.24.71 adalah IP WAN Router Kantor / IP WAN Router Pelanggan.

ini screen capturenya di winbox



Bisa dilihat bahwa JKT-OFFICE adalah gabungan antara traffic JKT-OFFICE-IIX dan JKT-OFFICE-INTL

Dah beres!
Tapi jangan lupa address-list=nice harus di import ya!

nah supaya address-list=nice setiap pagi di update cara yang saya lakukan adalah sbb:
(catatan ini beneran gue oprek sendiri gak nyontoh wong idenya dari buku ku sendiri kok:
http://inetshoot.blogspot.com/2008/08/buku-firewall-melindungi-jaringan-dari.html sekalian promosi buku ke tiga saya jadi jangan lupa sisihkan Rp. 19.500 untuk beli buku saya hehehe mayan buat ke SPA kalau dah kemeng sama Mikrotik)

Nah caranya gini ni:
Buat script "nice-address-list-downloader" yang isinya sbb:

#!/bin/sh
lynx -dump -nolist http://ixp.mikrotik.co.id/download/nice.rsc > /var/www/apf/nice.rsc

taro di mesin linux
misal di /var/www/apf/nice-address-list-downloader

jangan lupa di chmod 755 supaya bisa eksekusi, hasil dari script tersebut adalah file nice.rsc yang berisi daftar prefix yang ada di NICE/IIX , keterangan lebih lanjut baca di:
http://www.mikrotik.co.id/artikel_lihat.php?id=23
Thanks to Pak Valens Riadi dkk.

Buat lagi script "nice-address-list-update" yang isinya sbb:

#!/bin/sh
# Rubah http://localhost sesuai dengan URL server uploader Anda
#
lynx -dump http://localhost/apf/nice-ftp-uploader.php


Nah script nice-ftp-uploader.php nya sbb:




catatan misal:
$ftp_user_name="nice";
$ftp_user_pass="123456";

sesuaikan dengan username dan password di mikrotiknya tar dijelasin dibawah ya sabar.
nah file nice-ftp-uploader.php karena disitu ada informasi user dan password lebih baik dibuat chmod 640 , dan jangan lupa di buat chown root:www-data supaya user root dan group www-data (yang merupakan user apache) boleh baca tapi orang lain "NO ACCESS".

masukkan IP mesin mikrotik yang mau diupload file nice.rsc di file:
/var/www/apf/nice-target.list

yang isinya misal:

192.168.0.1

jadi isinya cuman daftar ip mesin2 mikrotik yang mau diupload file nice.rsc tersebut

Berikutnya buat user "nice" dengan password "123456" misalnya (jangan nekat pake password "123456" banyak brute force sekarang di IIX hehehe) di router mikrotiknya.

untuk user nice tersebut baiknya dibuat group "nice" juga di mikrotiknya contohnya bisa dilihat di screen capture berikut:


terus buat user "nice" screen capturenya bisa dilihat sbb:


nah baiknya dibatasi "allowed address" dari IP Linux yang akan mengambil nice.rsc dan menguploadnya ke mikrotik tersebut.

selanjutnya tinggal di jalankan saja script:

/var/www/apf/nice-address-list-downloader
/var/www/apf/nice-address-list-update

menggunakan crond, masukkan baris berikut ke /etc/crontab

00 6 * * * * root /var/www/apf/nice-address-list-downloader
15 6 * * * * root /var/www/apf/nice-address-list-update

lalu restart crond misal kalau pake debian

/etc/init.d/cron restart

kalau pake fedora

service crond restart

dengan demikian tiap jam 6.00 nice-address-list-downloader di jalankan menghasilnya nice.rsc
dan tiap jam 6.15 nice-address-list-update dieksekusi untuk mengupload nice.rsc ke mesin-mesin mikrotik yang ip-nya tertera di nice-target.list , gampang kan jadi dengan demikian bisa update ke beberapa mesin mikrotik sekaligus , tapi ingat buat user "nice" dulu di tiap router mikrotiknya.

ini daftar file-file yang harus ada di dalam satu directory, dan directory tersebut harus bisa diakses lewat http://localhost/apf/

/var/www/apf# ls -l nice*
-rwxr-xr-x 1 root root 97 2008-11-05 18:40 nice-address-list-downloader
-rwxr-xr-x 1 root root 131 2008-11-05 18:42 nice-address-list-update
-rw-r----- 1 root www-data 708 2008-11-05 19:21 nice-ftp-uploader.php
-rw-r--r-- 1 root root 24986 2008-11-05 19:19 nice.rsc
-rw-r--r-- 1 root root 37 2008-11-05 19:24 nice-target.list

directory apf itu hanya contoh aja jadi silahken di taro dimana aja suka-suka.

sudah selesai ? belum la yau

selanjutnya perlu buat script "nice" di mikrotik yang isinya "/import nice.rsc;" dengan cara klik system->scripts
ini contoh screen capturenya:


berikutnya script tersebut dieksekusi secara periodik dengan scheduler, buat scheduler dengan cara klik system->scheduler , isinya lihat aja di screen shoot nya berikut ini:


Jadi setiap jam 7.00 script "nice" yang menjalankan "/import nice.rsc;" dieksekusi per hari

dah beres , tapi jangan lupa coba di run dulu jalankan:

1. /var/www/apf/nice-address-list-downloader -> mesti menghasilkan file nice.rsc
2. /var/www/apf/nice-address-list-update -> mengupload file nice.rsc ke mikrotik
3. jalankan script "nice" dari menu System->scrips , pilih nice lalu klik "Run Script"
4. cek di /ip firewall address-list apakah "nice" sudah terimport dengan baik, contohnya bisa dilihat di screen capture berikut:


Done!
Semoga bermanfaat dan gak ada yang complaint :)

Salam
Harijanto Pribadi

3 komentar:

bayu99 mengatakan...

klo pembatasan icmp biar saat bandwidth full latency gak naik gmana ? apa ada solusi

imam mengatakan...

Pak kalo pake mikrotik memang enak sih

cuman saya sudah terlanjur cinta ma fedora

apa punya saran untuk pengaturan pembagian iix dan internya di fedora?? soalnya saya coba menterjemahkan apa yang ada di mikrotik ke fedora masih belum jalan juga

Arief Yudhawarman mengatakan...

Nice tutorial. Saya juga buat script bash di linux untuk download nice, ftp ke mikrotik dan sekaligus execute (pakai ssh nologin). Sebenarnya di mikrotik bisa pakai tool fetch karena address list nice perlu dimodifikasi makanya pakai script bash.