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
/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.
/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.
/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….
# apt-get install nmap
buat script di /sbin/failover-proxy…
pico /sbin/failover-proxy
dan isi script-nya sebagai berikut….
#!/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'
redirect_dis_warnet='/ip 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
    $connect_ssh $log_up
    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
        fi
    else
        cat $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…
 
# 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….
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
# service squid stop
untuk menghidupkan kemabli daemon squid/proxy
# 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.
------------------------------
Akhir kata wassalamualaikum dan semoga bermanfaat.
Comments
0 Comments