Failover Proxy, Disable NAT Mikrotik Saat Squid Failed

Bagi pengguna Proxy external yang digabungkan dengan router mikrotik, pasti sudah paham dan sangat membutuhkan yang namanya Disable NAT jika mesin proxy mati atau shutdown. Kita bisa menggunakan tool Netwatch yang tersedia di mikrotik untuk memantau konektifitas antara proxy dan mikrotik, dimana Netwatch akan melakukan ping dan jika terjadi timeout maka mikrotik akan melakukan disable NAT yang meredirect trafik HTTP ke proxy. Namun, bagaimana jika yang tidak berjalan hanya program squid-nya saja, sedangkan mesin proxy tetap menyala dan tetap “reply” saat di ping? Maka mikrotik tetap menganggap proxy “UP” dan NAT redirect ke proxy akan tetap hidup yang akan menyebabkan client tidak bisa browsing.

Script ini berfungsi untuk memantau squid dalam mesin proxy, dan jika squid tersebut STOP atau FAILED maka dia akan melakukan login ke router mikrotik untuk mendisable NAT yang me-redirect ke proxy dan sebaliknya jika squid berjalan maka akan meng-enable NAT redirect ke proxy.

Disini saya menggunakan Ubuntu server sebagai proxy eksternal, gak bertanggung jawab untuk distro lain atau OS lain..

IP Mikrotik to proxy : 192.168.3.254
IP eksternal Proxy : 192.168.3.253

dengan menggunakan terminal atau winbox buat dulu user baru dengan nama proxy, tanpa menggunakan password dan akses full.

/user add address=192.168.3.253/32 comment="" disabled=no group=full name=proxy


disisi ubuntu,
pertama login ke server proxy dari terminal (pake putty jg bisa)

pertama install paket nmap

apt-get install nmap

langkah kedua, buat script failovernya :

pico /sbin/failover-proxy

Paste code berikut :


#!/bin/bash
#######################################################
# DIBUAT OLEH OPiKdesign EMAIL [email protected]
# 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"
#port SSH Mikrotik
portssh="221"
#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 -p $portssh $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 info 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
#######################################################

pada script diatas, pada bagian connect ssh ke mikrotik saya rubah sedikit dari aslinya untuk menambahkan port ssh. karena saya menggunakan port ssh yg tidak standart. Bagi agan2 yang merubah port ssh di > ip > services silahkan sesuaikan portnya.

selanjutnya ubah permission dari script tersebut biar bisa di eksekusi :

chmod +x /sbin/failover-proxy

biar script langsung jalan saat server reboot tambahkan bari berikut pada file /etc/rc.local diatas baris exit 0

nohup /sbin/failover-proxy &

selanjutnya, silahkan reboot server proxynya, setelah itu lakukan pengetesan dengan mematikan service squid di ubuntu dan lihat apakah fungsi NAT di mikrotik berhasil di disable atau nggak.
mematikan service squid :

service squid stop

cek NAT di mikrotik apakah berhasil di disable.
menghidupkan kembali service squid

service squid start

cek kembali di mikrotik apakah NAT bisa di enable kembali.

Sumber : Postingan pribadi di KasKus dari modifikasi script mbah opikdesign

One thought on “Failover Proxy, Disable NAT Mikrotik Saat Squid Failed

Leave a Reply

Your email address will not be published. Required fields are marked *