diff --git a/wireguard-monitor/README.md b/wireguard-monitor/README.md index 9abeec6..305dbd9 100644 --- a/wireguard-monitor/README.md +++ b/wireguard-monitor/README.md @@ -4,6 +4,10 @@ Shell script and systemd service that will monitor if wireguard link is active. ### Installation +Assumption is that wireguard is already installed on the system, this script does not handle installation of wireguard itself. This script assumes that wireguard interface name is `home`. Script assumes that IP address for gateway is set to 192.168.5.1. + +For more details look at the `wireguard-monitor` script. + To install simply run: ``` sudo ./install.sh diff --git a/wireguard-monitor/wireguard-reconnect b/wireguard-monitor/wireguard-reconnect index e3443f0..6949506 100755 --- a/wireguard-monitor/wireguard-reconnect +++ b/wireguard-monitor/wireguard-reconnect @@ -1,5 +1,7 @@ #!/bin/bash +set -x + GATEWAY_IP="192.168.5.1" PING_DELAY_S=30 RECONNECT_ATTEMPTS=10 @@ -9,35 +11,47 @@ REBOOT_AFTER_FAILED_ATTEMPTS=true FAILED_ATTEMPTS=0 +function is_host_reachable() { + for i in {1..5}; do + echo "Sending ping..." + if ping -c 1 "$1" > /dev/null; then + echo "Ping received" + return 0 + fi + echo "WARNING: Failed to ping $GATEWAY_IP" + done + return 1 +} + while : ; do - if ! wg show "$WG_INTERFACE" > /dev/null; then - echo "INFO: WG interface $WG_INTERFACE is not active, not doing anything" - sleep "$PING_DELAY_S" - continue - fi + # if ! wg show "$WG_INTERFACE" > /dev/null; then + # echo "INFO: WG interface $WG_INTERFACE is not active, not doing anything" + # sleep "$PING_DELAY_S" + # continue + # fi - if ! ping -c 1 "$GATEWAY_IP" > /dev/null; then - echo "ERROR: Failed to ping the gateway ($GATEWAY_IP). Restarting interface $WG_INTERFACE" - wg-quick down "$WG_INTERFACE" - echo "INFO: Stopped WG interface $WG_INTERFACE" - sleep "$RECONNECT_DELAY" - if ! wg-quick up "$WG_INTERFACE"; then - echo "WARNING: Failed starting the interface..." - else - echo "INFO: Started WG interface $WG_INTERFACE" - fi + if ! is_host_reachable "$GATEWAY_IP" > /dev/null; then + echo "ERROR: ($GATEWAY_IP) is not reachable. Restarting interface $WG_INTERFACE" + # wg-quick down "$WG_INTERFACE" + # echo "INFO: Stopped WG interface $WG_INTERFACE" + # sleep "$RECONNECT_DELAY" + # if ! wg-quick up "$WG_INTERFACE"; then + # echo "WARNING: Failed starting the interface..." + # else + # echo "INFO: Started WG interface $WG_INTERFACE" + # fi - FAILED_ATTEMPTS=$(( FAILED_ATTEMPTS + 1)) - if (( FAILED_ATTEMPTS > RECONNECT_ATTEMPTS )); then - echo "Failed $FAILED_ATTEMPTS times to recover connection..." - if $REBOOT_AFTER_FAILED_ATTEMPTS; then - echo "Rebooting..." - reboot - else - echo "Will continue trying..." - FAILED_ATTEMPTS=$(( 0 )) - fi - fi + # FAILED_ATTEMPTS=$(( FAILED_ATTEMPTS + 1)) + # if (( FAILED_ATTEMPTS > RECONNECT_ATTEMPTS )); then + # echo "Failed $FAILED_ATTEMPTS times to recover connection..." + # if $REBOOT_AFTER_FAILED_ATTEMPTS; then + # echo "Rebooting..." + # reboot + # else + # echo "Will continue trying..." + # FAILED_ATTEMPTS=$(( 0 )) + # fi + # fi fi sleep "$PING_DELAY_S"