Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    HOWTO: Ping hosts and reset/reboot on failure - Multi WAN (Load Balancing)

    Scheduled Pinned Locked Moved General pfSense Questions
    1 Posts 1 Posters 1.6k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      reshab912
      last edited by

      using @BennTech's Earlier post

      http://forum.pfsense.org/index.php/topic,17243.msg89348.html

      i found that it doesnot work for Multi-Wan Load Balancing scenarios.

      Below is my updated process which would help to accomplish the same.

      Go to Diagnostics > Edit file
      Cut & paste the code below, editing the user variables to match your settings.
      Save the file as /usr/local/bin/pingtest_em0.sh (or path/name of your choosing)
      Go to Diagnostics > Command
      Execute the command "chmod +x /usr/local/bin/pingtest_em0.sh" (makes the file executable)
      Go to System > Packages and install the Cron package
      Go to Services > Cron
      Install a new cron with settings "*/5 * * * * root /usr/local/bin/pingtest_em0.sh" (runs test every 5 minutes)

      #!/bin/sh
      
      #=====================================================================
      # pingtest.sh, v1.0.1
      # Created 2009 by Bennett Lee
      # Released to public domain
      #
      # (1) Attempts to ping several hosts to test connectivity.  After
      #     first successful ping, script exits.
      # (2) If all pings fail, resets interface and retries all pings.
      # (3) If all pings fail again after reset, then reboots pfSense.
      #
      # History
      # 1.0.1   Added delay to ensure interface resets (thx ktims).
      # 1.0.0   Initial release.
      #=====================================================================
      
      #=====================================================================
      # USER SETTINGS
      #
      # Set multiple ping targets separated by space.  Include numeric IPs
      # (e.g., remote office, ISP gateway, etc.) for DNS issues which
      # reboot will not correct.
      # ALLDEST should be your WAN router's gateway, else it will sucessfully ping sites like google, yahoo using other WAN connection
      ALLDEST="192.168.0.254"
      # Interface to reset, usually your WAN - modify for each em
      BOUNCE=em0
      # Log file - modify for each em
      LOGFILE=/root/pingtest_em0.log
      #=====================================================================
      
      COUNT=1
      while [ $COUNT -le 2 ]
      do
      
      	for DEST in $ALLDEST
      	do
      		#echo `date +%Y%m%d.%H%M%S` "Pinging $DEST" >> $LOGFILE
      		ping -c1 $DEST >/dev/null 2>/dev/null
      		if [ $? -eq 0 ]
      		then
      			#echo `date +%Y%m%d.%H%M%S` "Ping $DEST OK." >> $LOGFILE
      			exit 0
      		fi
      	done
      
      	if [ $COUNT -le 1 ]
      	then
      		echo `date +%Y%m%d.%H%M%S` "All pings failed. Resetting interface $BOUNCE." >> $LOGFILE
      		/sbin/ifconfig $BOUNCE down
      		# Give interface time to reset before bringing back up
      		sleep 10
      		/sbin/ifconfig $BOUNCE up
      		# Give WAN time to establish connection
      		sleep 60
      	else
      		echo `date +%Y%m%d.%H%M%S` "All pings failed twice. Rebooting..." >> $LOGFILE
      		/sbin/shutdown -r now >> $LOGFILE
      		exit 1
      	fi
      
      	COUNT=`expr $COUNT + 1`
      done
      

      And similarly do the same for other WAN as well.

      The current process however just support pinging to your routers gateway, as ping to sites like google, yahoo are completed using other WAN in case of 1 wan is down. This script could be further improved if someone could find a way to ping google, yahoo using the mentioned specified em only and not by other wan.

      1 Reply Last reply Reply Quote 1
      • First post
        Last post
      Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.