Fajar
Fajar
Published on 2025-08-26 / 435 Visits
0
0

Script Auto Reconnect Modem Rakitan

Artikel ini dibuat karena sebelumnya salah satu koneksi internet saya sering offline yang menyebabkan beberapa website dan rule internet tidak berjalan, mungkin pengguna modem rakitan lainnya mengalami hal serupa. Modem sering offline setelah tersambung beberapa jam dan openwrt tidak otomatis melakukan koneksi ulang kembali.

Karena koneksi modem saya melewati Openclash, jadi saya mempunyai ide untuk memasang script auto reconnect dengan tujuan agar modem akan melakukan renew dhcp apabila tidak ada koneksi internet.

Kenapa pada Openclash?

Sebelumnya saya sudah mencoba beberapa tools, seperti internet detector dan conn monitor. Tapi saya tidak mendapatkan hasil yang puas. Jadi saya mencoba membuat script sendiri untuk mengatasi masalah saya.

Beberapa alasan saya menggunakan script pada Openclash:

  • Tools lain akan tetap berjalan meski openclash sudah tidak aktif, sedangkan script ini akan mengikuti service openclash.

  • Memperpanjang umur modem karena tidak sering restart interface ataupun restart modem.

  • Saya butuh script ini hanya berjalan saat openclash berjalan. Karena saya menggunkan loadbalance pada router saya, jadi interface lain tidak akan berdampak.

Persyaratan awal

Untuk dapat menggunakan script ini, kita harus cek koneksi ping ke target (contoh: ping dpr.go.id), usahakan website yang tidak terlalu terkenal dan bisa diping. jangan menggunakan web mainstream seperti fb.me, facebook.com, youtube.com. Karena web-web itu bisa diping meskipun tidak ada kuota.

Pemasangan script

Jalankan perintah ini pada terminal atau ttyd

cat << EOF > /usr/sbin/cek
#!/bin/bash
# Get the IP address of the wwan0 interface
IP_ADDRESS=\$(ip addr show wwan0 | grep "inet " | awk "{print \$2}" | cut -d"/" -f1)

while :
do
        ping -I wwan0 -4 -w20 dpr.go.id > /dev/null
        if [ \$? -ne 0 ];
        then
                # Log the IP address to wwan_monitor.log before restarting the interface
                echo -e "\$(date) [\$IP_ADDRESS] \e[31mPING NOT OK, RESTARTING INTERFACE\e[0m"
                echo "\$(date) [\$IP_ADDRESS] PING NOT OK, RESTARTING INTERFACE" | tee -a /root/wwan_monitor.log /tmp/wwan.log >/dev/null 2>&1
                logger -t modem -p warning -s "[$IP_ADDRESS] PING NOT OK, RESTARTING INTERFACE" 

                ifdown modem
                sleep 1
                ifup modem
                sleep 300
        else
                echo -e "\$(date) [\$IP_ADDRESS] \e[32mPING OK\e[0m"
        fi

        sleep 5
done
EOF

Lalu berikan permission execute script itu

chmod +x /usr/sbin/cek

Menambahkan script pada Openclash

Agar script bisa berjalan setelah openclash running, kita harus memasang script tersebut pada Developer Setting. Untuk cara memasangnya, hanya perlu paste script dibawah pada Service → Openclash → Overwrite Settings → Developer settings. Tempel script dibawah setelah line CONFIG_FILE="$1" #config path.

### Auto reconnect after modem disconnect (c) isiotak.com
sleep 30
PING_COMMAND="bash /usr/sbin/cek"
PING_PID=$(pgrep -f "$PING_COMMAND")
if [ -n "$PING_PID" ]; then
    echo "Menghentikan proses ping yang sedang berjalan dengan PID: $PING_PID"
    kill -9 $PING_PID
else
    echo "Tidak ada proses ping yang berjalan."
fi
echo "Running ping command"
eval $PING_COMMAND &

script in openclash dev mode

Selanjutnya Commit Settings dan Apply Settings. Openclash akan restart dan menjalankan scriptnya.

Pengujian

Berikut untuk video test yang saya lakukan. Memang ada beberapa detik delay untuk reconnect.

Kesimpulan

Ada banyak cara untuk fix masalah modem sering disconnect atau yang biasa disebut bengong. Salah satunya dengan menggunakan script monitoring konektivitas modem. Sampai saat ini saya masih menggunakan script ini dibanding tools lain, karena simple dan dapat dipasang bersama Openclash.

Demikian artikel ini saya tulis. Apabila ada yang mau ditanya, silakan tinggalkan komentar.


Comment