Pada
penggunaan queue (bandwidth limiter), penentuan CHAIN pada MENGLE sangat
menentukan jalannya sebuah rule. Jika kita memasang SRC-NAT dan WEB-PROXY pada
mesin yang sama, sering kali agak sulit untuk membuat rule QUEUE yang sempurna.
Percobaan
yang dilakukan menggunakan sebuah PC dengan Mikrotik RouterOS versi 2.9.28.
Pada mesin tersebut, digunakan 2 buah interface, satu untuk gateway yang
dinamai PUBLIC dan satu lagi untuk jaringan lokal yang dinamai LAN.
|
[admin@instaler] > in pr
Flags: X - disabled, D - dynamic, R - running
# NAME
TYPE RX-RATE TX-RATE
MTU
0 R public
ether 0 0 1500
1 R lan
wlan 0 0 1500
|
Dan
berikut ini adalah IP Address yang digunakan. Subnet 192.168.0.0/24 adalah
subnet gateway untuk mesin ini.
|
[admin@instaler] > ip ad pr
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS NETWORK BROADCAST INTERFACE
0 192.168.0.217/24 192.168.0.0
192.168.0.255 public
1 172.21.1.1/24 172.21.1.0 172.21.1.255 lan
|
Fitur
web-proxy dengan transparan juga diaktifkan.
|
[admin@instaler] > ip web-proxy pr
enabled: yes
src-address: 0.0.0.0
port: 3128
hostname: "proxy"
transparent-proxy: yes
parent-proxy: 0.0.0.0:0
cache-administrator: "webmaster"
max-object-size: 4096KiB
cache-drive: system
max-cache-size: none
max-ram-cache-size: unlimited
status: running
reserved-for-cache: 0KiB
reserved-for-ram-cache: 154624KiB
|
Fungsi
MASQUERADE diaktifkan, juga satu buah rule REDIRECTING untuk membelokkan
traffic HTTP menuju ke WEB-PROXY
|
[admin@instaler] ip firewall nat> pr
Flags: X - disabled, I - invalid, D - dynamic
0 chain=srcnat out-interface=public
src-address=172.21.1.0/24 action=masquerade
1 chain=dstnat in-interface=lan
src-address=172.21.1.0/24
protocol=tcp dst-port=80 action=redirect to-ports=3128
|
Berikut ini
adalah langkah terpenting dalam proses ini, yaitu pembuatan MANGLE. Kita akan
membutuhkan 2 buah PACKET-MARK. Satu untuk paket data upstream, yang pada
contoh ini kita sebut test-up. Dan satu lagi untuk paket data
downstream, yang pada contoh ini kita sebut test-down.
Untuk paket
data upstream, proses pembuatan manglenya cukup sederhana. Kita bisa langsung
melakukannya dengan 1 buah rule, cukup dengan menggunakan parameter SRC-ADDRESS
dan IN-INTERFACE. Di sini kita menggunakan chain prerouting. Paket data
untuk upstream ini kita namai test-up.
Namun, untuk
paket data downstream, kita membutuhkan beberapa buah rule. Karena kita
menggunakan translasi IP/masquerade, kita membutuhkan Connection Mark. Pada
contoh ini, kita namai test-conn.
Kemudian,
kita harus membuat juga 2 buah rule. Rule yang pertama, untuk paket data
downstream non HTTP yang langsung dari internet (tidak melewati proxy). Kita
menggunakan chain forward, karena data mengalir melalui router.
Rule yang
kedua, untuk paket data yang berasal dari WEB-PROXY. Kita menggunakan chain output,
karena arus data berasal dari aplikasi internal di dalam router ke mesin di
luar router.
Paket data
untuk downstream pada kedua rule ini kita namai test-down.
Jangan lupa, parameter passthrough hanya diaktifkan
untuk connection mark saja.
|
[admin@instaler] > ip firewall mangle print
Flags: X - disabled, I - invalid, D - dynamic
0 ;;; UP TRAFFIC
chain=prerouting in-interface=lan
src-address=172.21.1.0/24 action=mark-packet
new-packet-mark=test-up passthrough=no
1 ;;; CONN-MARK
chain=forward src-address=172.21.1.0/24
action=mark-connection
new-connection-mark=test-conn passthrough=yes
2 ;;; DOWN-DIRECT CONNECTION
chain=forward in-interface=public
connection-mark=test-conn action=mark-packet
new-packet-mark=test-down passthrough=no
3 ;;; DOWN-VIA PROXY
chain=output out-interface=lan
dst-address=172.21.1.0/24 action=mark-packet
new-packet-mark=test-down passthrough=no
|
Untuk
tahap terakhir, tinggal mengkonfigurasi queue. Di sini kita menggunakan queue
tree. Satu buah rule untuk data dowstream, dan satu lagi untuk upstream. Yang
penting di sini, adalah pemilihan parent. Untuk downstream, kita menggunakan
parent lan, sesuai dengan interface yang mengarah ke jaringan lokal, dan
untuk upstream, kita menggunakan parent global-in.
|
[admin@instaler] > queue tree pr
Flags: X - disabled, I - invalid
0 name="downstream" parent=lan
packet-mark=test-down
limit-at=32000 queue=default priority=8
max-limit=32000 burst-limit=0
burst-threshold=0 burst-time=0s
1 name="upstream" parent=global-in
packet-mark=test-up limit-at=32000
queue=default priority=8
max-limit=32000 burst-limit=0
burst-threshold=0 burst-time=0s
|
Variasi
lainnya, untuk bandwidth management, dimungkinkan juga kita menggunakan tipe
queue PCQ, yang bisa secara otomatis membagi trafik per client.
Semoga bermanfaat dan selamat mencoba...