Tutorial Failover Mikrotik dan External Proxy


Tutorial Failover Mikrotik dan External Proxy
Pendahuluan

Tutorial ini diperuntukan mesin Mikrotik dengan External Proxy, yang akan dibahas disini adalah bagaimana Mikrotik bisa menonaktifkan perintah redirect port yang dibelokkan ke external proxy ketika mesin server mati atau terputus dengan server atau service port proxy dalam kondisi mati secara tiba-tiba tetapi kondisi mesin masih menyala, dan bagaimana Mikrotik bisa kembali mengaktifkan redirect port ke external proxy ketika terhubung kembali dengan server atau port proxy tersedia kembali. Dengan cara:

1. Mikrotik selalu melakukan ping ke IP server external proxy, jika terputus maka Mikrotik akan menonaktifkan perintah redirect port dan sebaliknya.
2. Disini tidak akan tergantung dengan  situs-situs diluar agar kondisinya bisa digaransi, melainkan dari server external proxy akan memantau port proxy-nya sendiri setiap berapa detik sekali, setiap kondisi port proxy mengalami kegagalan maka server akan mengirimkan perintah ke Mikrotik melalui SSH agar Mikrotik menonaktifkan perintah redirect port dan kondisi sebaliknya pula.

Tujuannya adalah ketika tiba-tiba server external proxy dalam kondisi mati sendiri dan daemon proxy down sendiri karena ada sesuatu yang faild maka dari sisi client masih tetapi bisa browsing tanpa memakai external proxy tanpa campur tangan administratornya karena yang bersangkutan sedang tertidur dan keperluan lainnya.
Tutorial ini hanya contoh, silahkan disesuaikan kondisi masing-masing, maka itu sebelumnya saya memberi contoh topology yang saya pakai…

either3
                                                          -------------- AP RT/RW NET )))))) ((((((( CLIENT WIFI
                                                          |
                                      either0          |      either2
MODEM BRIDGE -------------------- MIKROTIK  ---------SWITCH ---------- CLIENT WARNET
                                                          |
                                              either1  |
                                                          | eth0
                                              EXTERNAL PROXY

Keterangan contoh:
IP either1: 192.168.3.254, nama interfaces: to_proxy
IP either2: 192.168.1.254, nama interfaces: to_warnet
IP either3: 192.168.2.245, nama interfaces: to_wifi
IP eth0 external proxy: 192.168.3.253

Disini saya anggap bahwa server proxy sudah diinstall dan berjalan dengan baik, begitu juga kondisi dial modem maupun Mikrotik sudah bisa berjalan tanpa external proxy.


Langkah Pertama
Buat Rule di Mirkotik untuk Redirect port 80/HTTP dan 3128/PROXY dari  wifi maupun warnet diarahkan ke external proxy 192.168.3.253 port 3128


Code:

/ip firewall mangle
add action=add-src-to-address-list address-list="wifi hot-spot" \
    address-list-timeout=1m chain=prerouting \
    comment="User online list adding from HotSpot" disabled=no \
    in-interface=to_wifi src-address=192.168.2.0/24 \
    src-address-type=!local
add action=add-src-to-address-list address-list="warnet" \
    address-list-timeout=1m chain=prerouting \
    comment="User online list adding from Warnet" disabled=no \
    in-interface=to_warnet src-address=192.168.1.0/24 \
    src-address-type=!local
/ip firewall nat
add action=dst-nat chain=dstnat comment="Redirect_Proxy_Warnet" \
    disabled=no dst-port=80,3128 in-interface=to_warnet \
    protocol=tcp src-address-list=warnet \
    to-addresses=192.168.3.253 to-ports=3128
add action=dst-nat chain=dstnat comment="Redirect_Proxy_WiFi" \
    disabled=no dst-port=80,3128 in-interface=to_wifi \
    protocol=tcp src-address-list="wifi hot-spot" \
    to-addresses=192.168.3.253 to-ports=3128
Langkah Kedua
Buat script di Mikrotik yang bertujuan selalu mengontrol koneksi dari mikrotik ke external proxy, bila terjadi koneksi terputus akan menonaktifkan redirect dan sebaliknya, dalam interval 1 detik sekali melakukan ping dengan batasan latency maksimal 20ms.
Code:
/tool netwatch
add comment="" disabled=no down-script="/ip firewall nat set [find comment=\"\
    Redirect_Proxy_Warnet\"] disabled=yes\r\
    \n/ip firewall nat set [find comment=\"Redirect_Proxy_WiFi\"] disabled=yes\r\
    \n:log error \"External Server is DOWN...!\"" host=192.168.3.253 \
    interval=1s timeout=20ms up-script="/ip firewall nat set [find comment=\"Redirect_Proxy_Warnet\"] disabled=no\r\
    \n/ip firewall nat set [find comment=\"Redirect_Proxy_WiFi\"] disabled=no\r\
    \n:log error \"External Server is UP...!\""
Kemudian diujicoba, cabut kabel UTP yang menuju ke external proxy dan lihat rule ip firewall nat untuk Redirect port-nya, apakah sudah disabled atau belum, klo sudah disabled berarti sudah berjalan sesuai harapan.

Dan sebaliknya colokan kembali kabel UTP-nya, seharusnya otomatios akan enable.


Langkah Ketiga
Buat account user di Mikrotik missal dengan nama proxy tanpa password dan beri allow hanya bisa dipakai dari host ber-IP interfaces server external proxy untuk keamanan.
Code:
/user
add address=192.168.3.253/32 comment="" disabled=no group=full name=proxy
Langkah Keempat
Buat script di linux (external proxy) tetapi install dahulu repository NMAP karena akan menghandalkan tools tersebut untuk deteksi port proxy.

install NMAP….
Code:
# apt-get install nmap
buat script di /sbin/failover-proxy…
Code:
pico /sbin/failover-proxy
dan isi script-nya sebagai berikut….

Code:

#!/bin/bash
 
#######################################################
#  DIBUAT OLEH OPiKdesign EMAIL th@opikdesign.com
#  DIDEDIKASIKAN UNTUK KOMUNITAS INDONESIA OPENSOURCE
#######################################################
 
#######################################################
#  VARIABLE......
#  SILAHKAN DISESUAIKAN
#######################################################
 
#User Mikrotik tanpa password
user="proxy"
 
#IP Mikrotik yang terhubung ke proxy
ip_mt="192.168.3.254"
 
#Comment redirect sesuaikan seperti rule di Mikrotik > ip > firewall > nat
comment_nat_wifi="Redirect_Proxy_WiFi"
comment_nat_warnet="Redirect_Proxy_Warnet"
 
#Port Proxy
port=3128
 
#Interval berapa detik sekali
INTERVAL=1
 
 
#######################################################
#  MULAI BARIS INI......
#  JANGAN MERUBAH SCRIPT JIKA TIDAK AHLI
#######################################################
 
 
#  VARIABLE FILE TEMP
TEMP="/root/failover.status"
 
#  VARIABLE CONNECT SSH KE MIKROTIK
connect_ssh="ssh $user@$ip_mt"
 
#  VARIABLE PERINTAH REDIRECT ENABLE/DISABLE KE MIKROTIK
redirect_dis_wifi='/ip firewall nat set [find comment="'$comment_nat_wifi'"] disabled=yes'
redirect_ena_wifi='/ip firewall nat set [find comment="'$comment_nat_wifi'"] disabled=no'
p firewall nat set [find comment="'$comment_nat_warnet'"] disabled=yes'
redirect_ena_warnet='/ip firewall nat set [find comment="'$comment_nat_warnet'"] disabled=no'
 
#  VARIABLE PENGIRIMAN PESAN LOG KE MIKROTIK
log_down='/log error message="Proxy Server is DOWN...!"'
log_up='/log error message="Proxy Server is UP...!"'
 
 
#  PENGECEKAN AWAL: PORT PROXY DAN PENGATURAN KE MIKROTIK
 
nmap localhost | grep $port > /dev/null 2>&1
TEST_SQUID=$?
 
if [ $TEST_SQUID -ne 0 ]; then
    $connect_ssh $redirect_dis_wifi
    $connect_ssh $redirect_dis_warnet
    $connect_ssh $log_down
    echo "disable" > $TEMP
else
    $connect_ssh $redirect_ena_wifi
    $connect_ssh $redirect_ena_warnet
p
    echo "enable" > $TEMP
fi
 
 
#  PENGECEKAN SECARA CONTINUE: PORT PROXY DAN PENGATURAN KE MIKROTIK
 
while : ; do
 
    nmap localhost | grep $port > /dev/null 2>&1
    TEST_SQUID=$?
 
    if [ $TEST_SQUID -ne 0 ]; then
        cat $TEMP | grep enable > /dev/null 2>&1
        STATUS=$?
        if [ $STATUS -ne 1 ]; then
            $connect_ssh $redirect_dis_wifi
            $connect_ssh $redirect_dis_warnet
            $connect_ssh $log_down
            echo "disable" > $TEMP
grep disable > /dev/null 2>&1
        STATUS=$?
        if [ $STATUS -ne 1 ]; then
            $connect_ssh $redirect_ena_wifi
            $connect_ssh $redirect_ena_warnet
            $connect_ssh $log_up
            echo "enable" > $TEMP
        fi
    fi
 
    sleep $INTERVAL
 
done
 
 
#######################################################
#  AKHIR SCRIPT
#######################################################

kemudian beri permission untuk bisa di jalankan…

Code:

 
# chmod +x /sbin/failover-proxy
Langkah Kelima
Agar setiap kali si server external proxy booting/restart selalu dipanggil dan berjalan sebagai daemon maka tambahkan baris perintah dibawah ini di dalam file /etc/rc.local….

Code:

nohup /sbin/failover-proxy &
Langkah Keenam (terakhir)
Reboot server external proxy-nya, kemudian uji coba dengan memantau Mikrotik ip firewall nat, coba daemon squid-nya matikan dan seharusnya rule redirect di Mikrotik otomatis disable dan di log pasti ada pesan tanda merah… dan sebaliknya hidupkan kembali daemon squid-nya, seharusnya rule redirect di Mikrotik akan aktif kembali dan ada pesan di log-nya.

untuk mematikan daemon squid/proxy

Code:

# service squid stop
untuk menghidupkan kemabli daemon squid/proxy

Code:

# service squid start
-----------------------------

Silahkan tutorial ini dengan bebas dipakai dan dikembangkan namun mohon penghargaannya jika tutorial ini akan ditulis kembali ditempat lain semisal di forum, wiki maupun dimanapun… mohon menyebutkan sumbernya dengan memberikan link thread ini.

------------------------------
 sumber:komunitas indonesia open source

Automatic Failover dengan Mikrotik

Setelah posting di forum tidak ada  yang reply, akhirnya script automatic failover di MT V.3x berhasil saya terapkan.
Script ini diambil dari sini, akan tetapi saya rubah sedikit, karena belum jalan di mikrotik saya.
Sebelumnya saya akan terangkan skenario-nya,
ISP 1 ————– |            |
                            |  Mikrotik | ========= LAN
ISP 2 ————– |            |
Sebuah Mikrotik terhubung dengan 2 ISP (WAN), ISP 1 sebagain main link, sedangkan ISP 2 sebagai backup link. Bila ISP 1 down, maka routing internet akan ke ISP 2, jika ISP 1 up kembali, routing kembali ke semula.
Setelah semua dikonfigurasi secara standar, Berikut adalah step2-nya :
1. Beri nilai 1 untuk distance di routing utama (main link), dan nilai 2 untuk routing backup.
2. Define IP Public luar yang bisa di monitoring, misal saya ambil 172.16.64.13 sebagai ip netwatch saya, kemudian tmbahkan routing ke ip tersebut melalui main link.
Misal :
ISP 1 = ADSL
ISP 2 = Cable/IM2

3. Tambahkan script berikut yang berfungsi script fail over dan ip monitoring :
==============================================================
/system script add name=”failover” source={
:if ([/ip route get [/ip route find comment="utama"] disabled]=”yes”) do={/ip route enable [/ip route find comment="utama"]} else={/ip route disable [/ip route find comment="utama"]}
/system script add name=”back2main” source={
:if ([/ip route get [/ip route find comment="utama"] disabled]=”yes”) do={/ip route enable [/ip route find comment="utama"]}
/tool netwatch add host=172.16.64.13 interval=10s timeout=1s down-script=”failover”
/tool netwatch add host=172.16.64.13 interval=10s timeout=1s up-script=”back2main”

pemberian interval dan timeout silahkan disesuaikan dengan kebutuhan jaringan anda.
keterangan :
Monitoring ke ip 172.16.64.13 setiap 10 detik, bila dideteksi down maka failover script yang berfungsi untuk mendisable routing utama yang aktif, dan sebaliknya, bil ip tersebut up kembali maka mikrotik akan menjalan script back2main untuk meng-enable-kan routing utama.
Silahkan dicoba…..

Mereboot Mikrotik

Sebuah Alasan Harus Reboot Wireless

Satu dan lain hal alasan saya harus membuat reboot wireles mikrotik yang melayanin salah satu pelanggan. Script auto reboot router mikrotik saya pergunakan dengan interval 30 menit (gilakkk benerrr ya).

Scriptnya berikut:


/system script name="reboot" owner="admin" \
policy=ftp,reboot,read,write,policy,test,winbox,password,sniff run-count=0\
source=/system reboot


Schedulenya ini:

/system scheduler add name="reboot6am" start-date="jan/01/2009"\
start-time="06:00:00" interval="30m" on-event="{/system reboot;}"


Mudah mudahan script autoreboot interval 30 menit ini bermanfaat untuk anda suatu saat apapun alasannya :P

Port Game Online di Mikrotik

Untuk sebuah warnet yang juga menyediakan game online ternyata lebih optimal dengan Bandwith Management menggunakan methode Simple Queue. Dengan Simple queue kita cukup me mangle setiap ip/port game online dan seterusnya di queue diberikan limit bandwith yang lebih besar atau unlimited saja dan prioritaskan paling tinggi. Untuk browse/download baru kita limit per ip klien.Juga memungkinakan untuk membagi trafik IIX dan OIX nya sekaligus memprioritaskannya juga. Karena sesuai namanya simple queue ternyata memang simple.CMIIW. Berikut saya sertakan port game online yang menggunakan IIX/koneksi lokal:

1. Ayo Dance : tcp 18901-18909

2. SealOnline : tcp 1818
3. PointBlank : tcp 39190, udp 40000-40010
4. Lineage2 : tcp 7777
5. GhostOnline : tcp 19101
6. RF-Elven : tcp 27780
7. Perfect world : tcp 29000
8. Rohan : tcp 22100
9. Zeus RO : tcp 5121
10. Dotta : tcp 6000-6152
11. IdolStreet : tcp 2001
12. CrazyKart : 9601-9602
13. WOW AMPM : tcp 8085
14. DriftCity : tcp 11011-11041
15. GetAmped : tcp 13413
16. Yullgang : tcp 19000
17. RAN Online : tcp 5105
18. CrossFire : tcp 10009, udp 12060-12070
19. WarRock : tcp 5340-5352
20. FastBlack : tcp 6000-6001
21. Rose Online : tcp 29200
22. Return Of Warrior : tcp 10402
23. CrazyKart 2 : tcp 9600
25. Luna Online : tcp 15002
26. Runes Of Magic : tcp 16402-16502
27. FreshRO : tcp 5126
28. Tantra Online : tcp 3010
29. Heroes Of Newearth Incatamers : tcp 11031 udp 11100-11125,11440-11460
30. Atlantica : tcp 4300 , ip 203.89.147.0/24
31. ECO Online : tcp Port 12011 , 12110
32. Cabal Indo : tcp Port 15001, 15002
33. X-SHOT : tcp 7341,7451 , udp 7808,3000034. 3 Kingdoms : UDP 42051-42052
35. AVALON : TCP 9376-9377
36. Free Style : TCP 10001-10011,40000, UDP 40040-40500,1293,1479
37. Grand Chase : TCP 9300,9400,9700, UDP 9401,9600
38. Lost Saga : TCP 14009-14010, UDP: 14009-14010
39. CS Online Indonesia : UDP 27017, TCP : 8001,9015,40300-40404,36567