Rabu, 04 April 2012

Simple Queue, Memisah Bandwidth Lokal dan Internasional


Selama mengelola Mikrotik Indonesia, banyak sekali muncul pertanyaan bagaimana cara melakukan pemisahan queue untuk trafik internet internasional dan trafik ke internet Indonesia (OpenIXP dan IIX). Di internet sebetulnya sudah ada beberapa website yang menampilkan cara pemisahan ini, tapi kami akan coba menampilkan kembali sesederhana mungkin supaya mudah diikuti.
Pada artikel ini, kami mengasumsikan bahwa:
  1. Router Mikrotik melakukan Masquerading / src-nat untuk client. Client menggunakan IP privat.
  2. Gateway yang digunakan hanya satu, baik untuk trafik internasional maupun IIX.
  3. Anda bisa menggunakan web-proxy internal ataupun tanpa web-proxy. Jika Anda menggunakan web-proxy, maka ada beberapa tambahan rule yang perlu dilakukan. Perhatikan bagian NAT dan MANGLE pada contoh di bawah ini.
Jika ada parameter di atas yang berbeda dengan kondisi Anda di lapangan, maka konfigurasi yang ada di artikel ini harus Anda modifikasi sesuai dengan konfigurasi network Anda. 
network diagram
Pengaturan Dasar

Berikut ini adalah diagram network dan asumsi IP Address yang akan digunakan dalam contoh ini.
Untuk mempermudah pemberian contoh, kami mengupdate nama masing-masing interface sesuai dengan tugasnya masing-masing.
 
[admin@MikroTik] > /interface pr
Flags: X - disabled, D - dynamic, R - running
#    NAME            TYPE   RX-RATE  TX-RATE  MTU 
0  R ether-public     ether  0        0       1500
1  R ether-local      ether  0        0       1500

Untuk klien, akan menggunakan blok IP 192.168.0.0/24, dan IP Address 192.168.0.1 difungsikan sebagai gateway dan dipasang pada router, interface ether-local. Klien dapat menggunakan IP Address 192.168.0-2 hingga 192.168.0.254 dengan subnet mask 255.255.255.0.
 
[admin@MikroTik] > /ip ad pr
Flags: X - disabled, I - invalid, D - dynamic 
# ADDRESS         NETWORK     BROADCAST     INTERFACE
0 202.0.0.1/24    202.0.0.0   202.0.0.255   ether-public   
1 192.168.0.1/24  192.168.0.0 192.168.0.255 ether-local 

Jangan lupa melakukan konfigurasi DNS server pada router, dan mengaktifkan fitur "allow remote request".
Karena klien menggunakan IP private, maka kita harus melakukan fungsi src-nat seperti contoh berikut.
 
[admin@MikroTik] > /ip fi nat pr
Flags: X - disabled, I - invalid, D - dynamic
 0   chain=srcnat out-interface=ether-public 
     action=masquerade

Jika Anda menggunakan web-proxy transparan, Anda perlu menambahkan rule nat redirect, seperti terlihat pada contoh di bawah ini (rule tambahan yang tercetak tebal).
 
[admin@MikroTik] > /ip fi nat pr
Flags: X - disabled, I - invalid, D - dynamic
0  chain=srcnat out-interface=ether-public 
   action=masquerade
1  chain=dstnat in-interface=ether-local protocol=tcp 
   dst-port=80 action=redirect to-ports=8080

Jangan lupa mengaktifkan fitur web-proxy, dan men-set port layanan web-proxynya, dan disesuaikan dengan port redirect pada contoh di atas.
CEK: Pastikan semua konfigurasi telah berfungsi baik. Lakukanlah ping (baik dari router maupun dari klien) ke luar network Anda secara bergantian.
Pengaturan IP Address List
Mulai Mikrotik RouterOS versi 2.9, dikenal dengan fitur yang disebut IP Address List. Fitur ini adalah pengelompokan IP Address tertentu dan setiap IP Address tersebut bisa kita namai. Kelompok ini bisa digunakan sebagai parameter dalam mangle, firewall filter, nat, ataupun queue.
Mikrotik Indonesia telah menyediakan daftar IP Address yang diadvertise di OpenIXP dan IIX, yang bisa didownload dengan bebas di URL:http://www.mikrotik.co.id/getfile.php?nf=nice.rsc
File nice.rsc ini dibuat secara otomatis di server Mikrotik Indonesia setiap jam, dan merupakan data yang telah dioptimalkan untuk menghilangkan duplikasi entri dan tumpang tindih subnet. Saat ini jumlah baris pada script tersebut berkisar 7000 baris.
Contoh isi file nice.rsc :
 
# Script created by: Valens Riyadi @ www.mikrotik.co.id
# Generated at 26 April 2007 05:30:02 WIB ... 431 lines
/ip firewall address-list
add list=nice address="1.2.3.4"
rem [find list=nice]
add list=nice address="125.162.0.0/16"
add list=nice address="125.163.0.0/16"
add list=nice address="152.118.0.0/16"
add list=nice address="125.160.0.0/16"
add list=nice address="125.161.0.0/16"
add list=nice address="125.164.0.0/16"
.
.
dst...

Proses pengambilan file nice.rsc bisa dilakukan langsung dari terminal di RouterOS dengan perintah:
 
/tool fetch address=ixp.mikrotik.co.id src-path=/download/nice.rsc;

Kemudian, import-lah file tersebut.
 
[admin@MikroTik] > import nice.rsc

Opening script file nice.rsc
Script file loaded and executed successfully

Pastikan bahwa proses import telah berlangsung dengan sukses, dengan mengecek Address-List pada Menu IP - Firewall 

address list nice
Proses upload ini dapat juga dilakukan secara otomatis jika Anda memiliki pengetahuan scripting. Misalnya Anda membuat shell script pada Linux untuk melakukan download secara otomatis dan mengupload file secara otomatis setiap pk 06.00 pagi. Kemudian Anda tinggal membuat scheduler pada router untuk melakukan import file.
Jika Anda menggunakan RouterOS versi 3.x, proses update juga dapat dilakukan secara otomatis.
Perintah yang perlu dibuat adalah :
 
/system sched add comment=”update-nice” disabled=no interval=1d name=”update-nice-rsc” on-event=”:if ([:len [/file find name=nice.rsc]] > 0) do={/file remove nice.rsc }; /tool fetch address=ixp.mikrotik.co.id src-path=/download/nice.rsc mode=http;/import nice.rsc” start-date=jan/01/1970 start-time=06:00:00

Hati-hati! : Setelah copy paste, pastikan hasil copy paste sama persis. Proses copy paste kadang-kadang menghilangkan beberapa karakter tertentu. 
Pengaturan Mangle
Langkah selanjutnya adalah membuat mangle. Kita perlu membuat 1 buah connection mark dan 2 buah packet mark, masing-masing untuk trafik internasional dan lokal.
 
[admin@MikroTik] > /ip firewall mangle pr
Flags: X - disabled, I - invalid, D - dynamic

0 chain=prerouting in-interface=ether-local 
  dst-address-list=nice 
  action=mark-connection new-connection-mark=conn-iix 
  passthrough=yes

1 chain=prerouting connection-mark=conn-iix 
  action=mark-packet new-packet-mark=packet-iix 
  passthrough=no

2 chain=prerouting action=mark-packet 
  new-packet-mark=packet-intl passthrough=no
  

Untuk rule #0, pastikanlah bahwa Anda memilih interface yang mengarah ke client. Untuk chain, kita menggunakan prerouting, dan untuk kedua packet-mark, kita menggunakan passthrough=no.
Jika Anda menggunakan web-proxy internal dan melakukan redirecting trafic, maka Anda membuat 2 buah rule tambahan seperti contoh di bawah ini (rule tambahan yang tercetak tebal).
 
[admin@MikroTik] > /ip firewall mangle pr
Flags: X - disabled, I - invalid, D - dynamic

0 chain=prerouting in-interface=ether-local 
  dst-address-list=nice 
  action=mark-connection new-connection-mark=conn-iix 
  passthrough=yes

1 chain=prerouting connection-mark=conn-iix 
  action=mark-packet new-packet-mark=packet-iix 
  passthrough=no

2 chain=output connection-mark=conn-iix 
  action=mark-packet new-packet-mark=packet-iix 
  passthrough=no

3 chain=prerouting action=mark-packet 
  new-packet-mark=packet-intl passthrough=no

4 chain=output action=mark-packet 
  new-packet-mark=packet-intl passthrough=no

Pengaturan Simple Queue
Untuk setiap client, kita harus membuat 2 buah rule simple queue. Pada contoh berikut ini, kita akan melakukan limitasi untuk IP client 192.168.0.2/32, dan kita akan memberikan limitasi iix (up/down) sebesar 64k/256k, dan untuk internasional sebesar (up/down) 32k/128k.
 
[admin@MikroTik]> /queue simple pr
Flags: X - disabled, I - invalid, D - dynamic
0 name="client02-iix" target-addresses=192.168.0.2/32 
  dst-address=0.0.0.0/0 interface=all parent=none 
  packet-marks=packet-iix direction=both priority=8 
  queue=default-small/default-small limit-at=0/0 
  max-limit=64000/256000 total-queue=default-small 

1 name="client02-intl" target-addresses=192.168.0.2/32 
  dst-address=0.0.0.0/0 interface=all parent=none 
  packet-marks=packet-intl direction=both priority=8 
  queue=default-small/default-small limit-at=0/0 
  max-limit=32000/128000 total-queue=default-small 


simple queue
Pengecekan Akhir
Setelah selesai, lakukanlah pengecekan dengan melakukan akses ke situs lokal maupun ke situs internasional, dan perhatikanlah counter baik pada firewall mangle maupun pada simple queue.
Anda juga dapat mengembangkan queue type menggunakan pcq sehingga trafik pada setiap client dapat tersebar secara merata.

Tidak ada komentar:

Posting Komentar