First, a little bit of context. This is related to this issue I was having 5 months ago: Intermittent VPN Issues I have since upgraded my router from 24.10.0 to 24.10.2 and unbeknownst to me, this removed the wireguard/watchdog fail-over script I was using: https://github.com/egc112/OpenWRT-egc-add-on/blob/main/wireguard-watchdog-with-failover/wireguard-watchdog.sh (Thanks to @egc ) it also removed all my packages which I re-installed. I learned recently that this is common practice and I should expect this.
So after re-installing my packages list here:
luci-app-openvpn openvpn-openssl luci-proto-wireguard wireguard-tools kmod-wireguard tailscale pbr luci-app-pbr nlbwmon luci-app-nlbwmon tcpdump conntrack
I re-added the script listed above. Only things I configured in it were my 8 WireGuard interfaces and commented out RESTARTNETWORK= and removed the comment from RESTARTPBR= since I’m using it.
After confirming that it is in fact running, every time an interface drops its connection, it does restart the individual interface, but doesn’t switch to the next one. Here is a view of my interfaces section:
Another weird thing I noticed is there are two IPv4 addresses coming from my WireGuard interface which it’s a bit strange, but I chalked it up to it being a bug in the new firmware. Checking logread -e watchdog doesn’t show any output which again is very strange to me. (It did before)
Only time it does (For a brief moment) is after I kill it and re-enable it. I have tried restarting my router to make sure it’s kicking on after a reboot and it does, but it quickly goes back into a vegetative state after a few minutes. Any idea what’s going on here? Usually when one VPN interface goes down, restarting the same interface doesn’t do me any good and my network just goes in a loop of the WAN not being reachable. Any help at all is greatly appreciated. Thank you!
-Pyro
P.S. - I did notice the script changed a bit since I applied it a few months back. Is there any chance this version does not work for me? I used the one that didn’t include the PBR switch and actually added it myself. I’m at a loss.
1 Like
Seems like a minor detail (Or perhaps a major one) that I feel like I should include. When I installed all my packages back after the firmware upgrade, WireGaurd did NOT automatically start working again. (Even after a reboot) I was getting this error:
Unsupported protocol type.
Install protocol extensions...
I had to get it fixed with the help from ChatGPT:
What’s happening:
You do have luci-proto-wireguard installed,
but none of the expected handler files (wireguard.lua, proto-wireguard.lua, or their ucode equivalents) are present.
That means the LuCI you have installed is not Lua-based anymore — in OpenWrt 24.10.x, most targets have switched to the luci-ng (ucode-based LuCI) .
On your system, the protocol definitions live under /www/luci-static/resources/protocol/ as JavaScript modules, not under /usr/lib/lua/... anymore.
Fix for one interface (example wg0)
Run:
uci set network.wg0=interface
uci set network.wg0.proto='wireguard'
uci set network.wg0.private_key='YOUR_PRIVATE_KEY'
uci add_list network.wg0.addresses='10.2.0.2/32'
uci commit network
/etc/init.d/network restart
Then:
ifup wg0
ip link show wg0
Now the interface should exist.
Only after this “fix” did my WireGuard interfaces finally start working. And this is probably when the 2nd IP started showing up now that I think of it. Thanks for taking the time to read this far.
-Pyro
egc
August 29, 2025, 1:21pm
3
That is not a minor detail, something is not quite right, adding luci-proto-wireguard should install all the necessary packages
The duplicate address on the WireGuard interface is probably because you added that, furthermore your WG6 and WG5 show the interface protocol in the name e.g. wireguard-wg6 which your wg7 does not so perhaps there is more amiss.
when the wireguard-watchdog starts it waits 120 seconds (because it is designed to run at start up) after that you should see output in the log.
Also please get the latest version of the script
Your last tunnel is active so if that fail it should roll over to the first one, but when the watchdog starts it will show in the log all the tunnels you have added.
It might help if show your configs, Please connect to your OpenWRT device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button
Remember to redact keys, passwords, MAC addresses and any public IP addresses you may have but do not redact private RFC 1918 IP addresses as that is not needed:
ubus call system board
cat /etc/config/network
cat /etc/config/firewall
wg show
Lets have a look first at the configs and please update the script.
1 Like
Hey @egc ,
Thanks, I had no choice but to update the script as I lost the last one in the update. Here is the output of all commands you asked for:
root@PyrosRouter:/usr/share# ubus call system board
{
"kernel": "6.6.93",
"hostname": "PyrosRouter",
"system": "ARMv7 Processor rev 1 (v7l)",
"model": "Linksys WRT3200ACM",
"board_name": "linksys,wrt3200acm",
"rootfs_type": "squashfs",
"release": {
"distribution": "OpenWrt",
"version": "24.10.2",
"revision": "r28739-d9340319c6",
"target": "mvebu/cortexa9",
"description": "OpenWrt 24.10.2 r28739-d9340319c6",
"builddate": "1750711236"
}
}
root@PyrosRouter:/usr/share# cat /etc/config/network
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fd6f:b40c:82e5::/48'
option packet_steering '1'
config device
option name 'br-lan'
option type 'bridge'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
list ports 'lan4'
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.2.1'
option netmask '255.255.255.0'
option ip6assign '60'
list dns '192.168.2.148'
list dns '192.168.2.149'
config device
option name 'wan'
option macaddr '[MAC]'
config interface 'wan'
option device 'wan'
option proto 'dhcp'
option peerdns '0'
list dns '10.2.0.1'
config interface 'wan6'
option device 'wan'
option proto 'dhcpv6'
option reqaddress 'try'
option reqprefix 'auto'
option norelease '1'
option ip6assign '64'
config interface 'tun0'
option proto 'none'
option device 'tun0'
option auto '0'
config interface 'wg0'
option proto 'wireguard'
option private_key '[KEY]'
option mtu '1412'
list dns '10.2.0.1'
list dns 'fd00::1'
list addresses '10.2.0.2/32'
list addresses 'fd00::1/128'
option disabled '1'
config wireguard_wg0
option description 'wg-US-NY-198.conf'
option public_key '[KEY]'
option persistent_keepalive '25'
option endpoint_host '[IP]'
option endpoint_port '51820'
option route_allowed_ips '1'
list allowed_ips '0.0.0.0/0'
list allowed_ips '::0/0'
config interface 'wg1'
option proto 'wireguard'
option private_key '[KEY]'
option mtu '1412'
list dns '10.2.0.1'
list dns 'fd00::1'
list addresses '10.2.0.2/32'
list addresses 'fd00::1/128'
option disabled '1'
config interface 'wg2'
option proto 'wireguard'
option private_key '[KEY]'
option mtu '1412'
list addresses '10.2.0.2/32'
list addresses 'fd00::1/128'
list addresses '10.2.0.2/32'
list dns '10.2.0.1'
list dns 'fd00::1'
option disabled '1'
config wireguard_wg2
option description 'wg-US-NY-477.conf'
option public_key '[KEY]'
option persistent_keepalive '25'
option endpoint_host '[IP]'
option endpoint_port '51820'
option route_allowed_ips '1'
list allowed_ips '0.0.0.0/0'
list allowed_ips '::0/0'
config interface 'wg3'
option proto 'wireguard'
option private_key '[KEY]'
option mtu '1412'
list addresses '10.2.0.2/32'
list addresses 'fd00::1/128'
list addresses '10.2.0.2/32'
list dns '10.2.0.1'
list dns 'fd00::1'
option disabled '1'
config interface 'wg4'
option proto 'wireguard'
option private_key '[KEY]'
option mtu '1412'
list dns '10.2.0.1'
list dns 'fd00::1'
list addresses '10.2.0.2/32'
list addresses 'fd00::1/128'
option disabled '1'
config interface 'wg5'
option proto 'wireguard'
option private_key '[KEY]'
option mtu '1412'
list dns '10.2.0.1'
list dns 'fd00::1'
option disabled '1'
list addresses '10.2.0.2/32'
list addresses 'fd00::1/128'
config interface 'wg6'
option proto 'wireguard'
option private_key '[KEY]'
option mtu '1412'
list dns '10.2.0.1'
list dns 'fd00::1'
list addresses '10.2.0.2/32'
list addresses 'fd00::1/128'
option disabled '1'
config interface 'wg7'
option proto 'wireguard'
option private_key '[KEY]'
option mtu '1412'
list addresses '10.2.0.2/32'
list addresses 'fd00::1/128'
list addresses '10.2.0.2/32'
list dns '10.2.0.1'
list dns 'fd00::1'
config wireguard_wg7
option description 'wg-US-IL-592.conf'
option public_key '[KEY]'
option persistent_keepalive '25'
option endpoint_host '[IP]'
option endpoint_port '51820'
option route_allowed_ips '1'
list allowed_ips '0.0.0.0/0'
list allowed_ips '::0/0'
config wireguard_wg1
option description 'wg-US-NY-606.conf'
option public_key '[KEY]'
option persistent_keepalive '25'
option endpoint_host '[IP]'
option endpoint_port '51820'
list allowed_ips '0.0.0.0/0'
list allowed_ips '::0/0'
option route_allowed_ips '1'
config wireguard_wg3
option description 'wg-US-NY-593.conf'
option public_key '[KEY]'
option persistent_keepalive '25'
option endpoint_host '[IP]'
option endpoint_port '51820'
list allowed_ips '0.0.0.0/0'
list allowed_ips '::0/0'
option route_allowed_ips '1'
config wireguard_wg4
option description 'wg-US-NY-494.conf'
option public_key '[KEY]'
option persistent_keepalive '25'
option endpoint_host '[IP]'
option endpoint_port '51820'
list allowed_ips '0.0.0.0/0'
list allowed_ips '::0/0'
option route_allowed_ips '1'
config wireguard_wg5
option description 'wg-US-NY-428.conf'
option public_key '[KEY]'
option persistent_keepalive '25'
option endpoint_host '[IP]'
option endpoint_port '51820'
list allowed_ips '0.0.0.0/0'
list allowed_ips '::0/0'
option route_allowed_ips '1'
config wireguard_wg6
option description 'wg-US-IL-269.conf'
option public_key '[KEY]'
option persistent_keepalive '25'
option endpoint_host '[IP]'
option endpoint_port '51820'
list allowed_ips '0.0.0.0/0'
list allowed_ips '::0/0'
option route_allowed_ips '1'
root@PyrosRouter:/usr/share# cat /etc/config/firewall
config defaults
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
option synflood_protect '1'
config zone
option name 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option mtu_fix '1'
list network 'lan'
list network 'tun0'
config zone
option name 'wan'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1'
option mtu_fix '1'
list device 'tun0'
list network 'wan'
list network 'wan6'
config rule
option name 'Allow-DHCP-Renew'
option src 'wan'
option proto 'udp'
option dest_port '68'
option target 'ACCEPT'
option family 'ipv4'
config rule
option name 'Allow-Ping'
option src 'wan'
option proto 'icmp'
option icmp_type 'echo-request'
option family 'ipv4'
option target 'ACCEPT'
config rule
option name 'Allow-IGMP'
option src 'wan'
option proto 'igmp'
option family 'ipv4'
option target 'ACCEPT'
config rule
option name 'Allow-DHCPv6'
option src 'wan'
option proto 'udp'
option dest_port '546'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-MLD'
option src 'wan'
option proto 'icmp'
option src_ip 'fe80::/10'
list icmp_type '130/0'
list icmp_type '131/0'
list icmp_type '132/0'
list icmp_type '143/0'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-ICMPv6-Input'
option src 'wan'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
list icmp_type 'router-solicitation'
list icmp_type 'neighbour-solicitation'
list icmp_type 'router-advertisement'
list icmp_type 'neighbour-advertisement'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-ICMPv6-Forward'
option src 'wan'
option dest '*'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-IPSec-ESP'
option src 'wan'
option dest 'lan'
option proto 'esp'
option target 'ACCEPT'
config rule
option name 'Allow-ISAKMP'
option src 'wan'
option dest 'lan'
option dest_port '500'
option proto 'udp'
option target 'ACCEPT'
config zone
option name 'vpn'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1'
list network 'wg0'
list network 'wg1'
list network 'wg2'
list network 'wg3'
list network 'wg4'
list network 'wg5'
list network 'wg6'
list network 'wg7'
option mtu_fix '1'
option masq6 '1'
config forwarding
option src 'lan'
option dest 'wan'
config forwarding
option src 'lan'
option dest 'vpn'
config zone 'tailscale'
option name 'tailscale'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
list device 'tailscale0'
config forwarding
option src 'tailscale'
option dest 'lan'
config redirect
option dest 'lan'
option target 'DNAT'
option name 'Plex'
list proto 'tcp'
option src 'wan'
option src_dport '32400'
option dest_ip '192.168.2.200'
option dest_port '32400'
config include 'pbr'
option fw4_compatible '1'
option type 'script'
option path '/usr/share/pbr/firewall.include'
root@PyrosRouter:/usr/share# wg show
interface: wg7
public key: [KEY]
private key: (hidden)
listening port: 38205
peer: [KEY]
endpoint: [IP]:51820
allowed ips: 0.0.0.0/0, ::/0
latest handshake: 7 seconds ago
transfer: 35.38 MiB received, 203.84 MiB sent
persistent keepalive: every 25 seconds
root@PyrosRouter:/usr/share#
I now see why the IPs are being duplicated…
Also, here is a complete list of my WireGuard interfaces:
I do notice that in the screenshot they are listed as wireguard-wg0, wireguard-wg1, etc but when they switch over to being active (Or not disabled) They do change to wg0, wg1, etc. like wg7 in the screenshot.
-Pyro
egc
August 29, 2025, 2:29pm
5
Ah yes I see your wg7 is the active interface.
Remove the duplicate addresses from the config and reboot.
If you have the wireguard-watchdog.sh added to the startup it should automatically start (after 120 seconds) and write to the log how many tunnels it has found and which one is active.
If that does not happen then enable debug by removing the # on the second line of the script, view with: logread | grep debug maybe you can post that here
1 Like
Addresses removed from my network config, committed, and device was rebooted.
Here is my local startup config:
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
/usr/share/wireguard-watchdog.sh &
exit 0
./wireguard-watchdog.sh did seem to start without any problems, but immediately the wg7 interface dropped and started up again. For reference:
I’ll post that for now and see if it happens again in a few minutes. The 2nd IP does seem to be gone which is good news.
Here is the output of both logread | grep debug and logread -e watchdog:
root@PyrosRouter:~# logread | grep debug
Fri Aug 29 10:38:11 2025 kern.debug kernel: [ 108.454789] ieee80211 phy0: staid 8 deleted
Fri Aug 29 10:38:27 2025 kern.debug kernel: [ 124.707855] ieee80211 phy0: staid 8 deleted
Fri Aug 29 10:40:08 2025 kern.debug kernel: [ 225.876718] ieee80211 phy1: staid 2 deleted
root@PyrosRouter:~# logread -e watchdog
Fri Aug 29 10:38:53 2025 user.notice wireguard-watchdog.sh[4125]: WireGuard watchdog: Available tunnels: wg0; wg1; wg2; wg3; wg4; wg5; wg6; wg7;
Fri Aug 29 10:38:53 2025 user.notice wireguard-watchdog.sh[4125]: WireGuard watchdog: tunnel wg7 is enabled
Fri Aug 29 10:38:53 2025 user.notice wireguard-watchdog.sh[4125]: WireGuard watchdog: started, pinging every 30 seconds to 8.8.8.8 on tunnel wg7 with endpoint 79.127.187.214
root@PyrosRouter:~#
Thanks for your help again.
-Pyro
Not even 2 minutes later, logread -e watchdog became empty:
root@PyrosRouter:~# logread -e watchdog
root@PyrosRouter:~# logread | grep debug
Fri Aug 29 10:40:08 2025 kern.debug kernel: [ 225.876718] ieee80211 phy1: staid 2 deleted
Fri Aug 29 10:43:18 2025 kern.debug kernel: [ 416.010102] ieee80211 phy1: staid 8 deleted
root@PyrosRouter:~#
-Pyro
WildPyro:
logread | grep debug
I’m sorry, I missed the part where you said “…removing the # on the second line of the script.,”
I changed the script and rebooted again. Here is the correct output for logread | grep debug
root@PyrosRouter:~# logread | grep debug
Fri Aug 29 10:53:08 2025 kern.debug kernel: [ 47.108668] ieee80211 phy0: staid 2 deleted
Fri Aug 29 10:53:24 2025 kern.debug kernel: [ 63.318654] ieee80211 phy0: staid 2 deleted
Fri Aug 29 10:54:33 2025 kern.debug kernel: [ 132.590164] ieee80211 phy0: staid 2 deleted
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + get_tunnels
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo -e -n 'WireGuard watchdog: Available tunnels: '
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: WireGuard watchdog: Available tunnels: + seq 1 10
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG1
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo '$WG1'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo wg0
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' -z wg0 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG1
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo -n '$WG1'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo -n wg0
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: wg0+ echo -n '; '
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: ; + echo WG2
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo '$WG2'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo wg1
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' -z wg1 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG2
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo -n '$WG2'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo -n wg1
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: wg1+ echo -n '; '
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: ; + echo WG3
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo '$WG3'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo wg2
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' -z wg2 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG3
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo -n '$WG3'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo -n wg2
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: wg2+ echo -n '; '
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: ; + echo WG4
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo '$WG4'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo wg3
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' -z wg3 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG4
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo -n '$WG4'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo -n wg3
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: wg3+ echo -n '; '
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: ; + echo WG5
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo '$WG5'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo wg4
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' -z wg4 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG5
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo -n '$WG5'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo -n wg4
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: wg4+ echo -n '; '
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: ; + echo WG6
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo '$WG6'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo wg5
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' -z wg5 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG6
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo -n '$WG6'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo -n wg5
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: wg5+ echo -n '; '
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: ; + echo WG7
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo '$WG7'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo wg6
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' -z wg6 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG7
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo -n '$WG7'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo -n wg6
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: wg6+ echo -n '; '
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: ; + echo WG8
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo '$WG8'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo wg7
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' -z wg7 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG8
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo -n '$WG8'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo -n wg7
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: wg7+ echo -n '; '
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: ; + echo WG9
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval echo '$WG9'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' -z ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + maxtunnels=8
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + break
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + search_active
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + seq 1 8
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG1
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval 'wgi=$WG1'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + wgi=wg0
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q show
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + grep 'wg0=interface'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q get network.wg0.disabled
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1 '=' 1 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1 -eq 8 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG2
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval 'wgi=$WG2'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + wgi=wg1
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q show
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + grep 'wg1=interface'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q get network.wg1.disabled
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1 '=' 1 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2 -eq 8 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG3
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval 'wgi=$WG3'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + wgi=wg2
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q show
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + grep 'wg2=interface'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q get network.wg2.disabled
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1 '=' 1 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 3 -eq 8 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG4
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval 'wgi=$WG4'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + wgi=wg3
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q show
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + grep 'wg3=interface'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q get network.wg3.disabled
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1 '=' 1 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 4 -eq 8 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG5
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval 'wgi=$WG5'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + wgi=wg4
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q show
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + grep 'wg4=interface'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q get network.wg4.disabled
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1 '=' 1 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 5 -eq 8 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG6
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval 'wgi=$WG6'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + wgi=wg5
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q show
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + grep 'wg5=interface'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q get network.wg5.disabled
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1 '=' 1 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 6 -eq 8 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG7
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval 'wgi=$WG7'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + wgi=wg6
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q show
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + grep 'wg6=interface'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q get network.wg6.disabled
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1 '=' 1 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 7 -eq 8 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo WG8
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + eval 'wgi=$WG8'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + wgi=wg7
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q show
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + grep 'wg7=interface'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci -q get network.wg7.disabled
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' '=' 1 ]]
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo 'WireGuard watchdog: tunnel wg7 is enabled'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: WireGuard watchdog: tunnel wg7 is enabled
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + activetunnel=8
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + wga=wg7
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + break
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + watchdog
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + uci get 'network.@wireguard_wg7[0].endpoint_host'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + echo 'WireGuard watchdog: started, pinging every 30 seconds to 8.8.8.8 on tunnel wg7 with endpoint 79.127.187.214'
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: WireGuard watchdog: started, pinging every 30 seconds to 8.8.8.8 on tunnel wg7 with endpoint 79.127.187.214
Fri Aug 29 10:54:51 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 10:55:21 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' -gt 3600 ]]
Fri Aug 29 10:55:21 2025 user.debug wireguard-watchdog.sh[4135]: + active=30
Fri Aug 29 10:55:21 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 10:55:21 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
root@PyrosRouter:~#
-Pyro
egc
August 29, 2025, 3:17pm
9
That looks like it should.
The fact that all logging is gone points to the router rebooting
The logread -e watchdog command looks good as well since I turned debug mode on.
Fri Aug 29 11:32:55 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2250 -gt 3600 ]]
Fri Aug 29 11:32:55 2025 user.debug wireguard-watchdog.sh[4135]: + active=2280
Fri Aug 29 11:32:55 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:32:55 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:33:25 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2280 -gt 3600 ]]
Fri Aug 29 11:33:25 2025 user.debug wireguard-watchdog.sh[4135]: + active=2310
Fri Aug 29 11:33:25 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:33:25 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:33:55 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2310 -gt 3600 ]]
Fri Aug 29 11:33:55 2025 user.debug wireguard-watchdog.sh[4135]: + active=2340
Fri Aug 29 11:33:55 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:33:55 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:34:25 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2340 -gt 3600 ]]
Fri Aug 29 11:34:25 2025 user.debug wireguard-watchdog.sh[4135]: + active=2370
Fri Aug 29 11:34:25 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:34:25 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:34:55 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2370 -gt 3600 ]]
Fri Aug 29 11:34:55 2025 user.debug wireguard-watchdog.sh[4135]: + active=2400
Fri Aug 29 11:34:55 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:34:55 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:35:25 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2400 -gt 3600 ]]
Fri Aug 29 11:35:25 2025 user.debug wireguard-watchdog.sh[4135]: + active=2430
Fri Aug 29 11:35:25 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:35:25 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:35:55 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2430 -gt 3600 ]]
Fri Aug 29 11:35:55 2025 user.debug wireguard-watchdog.sh[4135]: + active=2460
Fri Aug 29 11:35:55 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:35:55 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:36:25 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2460 -gt 3600 ]]
Fri Aug 29 11:36:25 2025 user.debug wireguard-watchdog.sh[4135]: + active=2490
Fri Aug 29 11:36:25 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:36:25 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:36:55 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2490 -gt 3600 ]]
Fri Aug 29 11:36:55 2025 user.debug wireguard-watchdog.sh[4135]: + active=2520
Fri Aug 29 11:36:55 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:36:55 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:37:25 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2520 -gt 3600 ]]
Fri Aug 29 11:37:25 2025 user.debug wireguard-watchdog.sh[4135]: + active=2550
Fri Aug 29 11:37:25 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:37:25 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:37:55 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2550 -gt 3600 ]]
Fri Aug 29 11:37:55 2025 user.debug wireguard-watchdog.sh[4135]: + active=2580
Fri Aug 29 11:37:55 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:37:55 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:38:25 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2580 -gt 3600 ]]
Fri Aug 29 11:38:25 2025 user.debug wireguard-watchdog.sh[4135]: + active=2610
Fri Aug 29 11:38:25 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:38:26 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:38:56 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2610 -gt 3600 ]]
Fri Aug 29 11:38:56 2025 user.debug wireguard-watchdog.sh[4135]: + active=2640
Fri Aug 29 11:38:56 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:38:56 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:39:26 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2640 -gt 3600 ]]
Fri Aug 29 11:39:26 2025 user.debug wireguard-watchdog.sh[4135]: + active=2670
Fri Aug 29 11:39:26 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:39:26 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:39:56 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2670 -gt 3600 ]]
Fri Aug 29 11:39:56 2025 user.debug wireguard-watchdog.sh[4135]: + active=2700
Fri Aug 29 11:39:56 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:39:56 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:40:26 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2700 -gt 3600 ]]
Fri Aug 29 11:40:26 2025 user.debug wireguard-watchdog.sh[4135]: + active=2730
Fri Aug 29 11:40:26 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:40:26 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:40:56 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2730 -gt 3600 ]]
Fri Aug 29 11:40:56 2025 user.debug wireguard-watchdog.sh[4135]: + active=2760
Fri Aug 29 11:40:56 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:40:56 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:41:26 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2760 -gt 3600 ]]
Fri Aug 29 11:41:26 2025 user.debug wireguard-watchdog.sh[4135]: + active=2790
Fri Aug 29 11:41:26 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:41:26 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:41:56 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2790 -gt 3600 ]]
Fri Aug 29 11:41:56 2025 user.debug wireguard-watchdog.sh[4135]: + active=2820
Fri Aug 29 11:41:56 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:41:56 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:42:26 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2820 -gt 3600 ]]
Fri Aug 29 11:42:26 2025 user.debug wireguard-watchdog.sh[4135]: + active=2850
Fri Aug 29 11:42:26 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:42:26 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 11:42:56 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2850 -gt 3600 ]]
Fri Aug 29 11:42:56 2025 user.debug wireguard-watchdog.sh[4135]: + active=2880
Fri Aug 29 11:42:56 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 11:42:56 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
root@PyrosRouter:~#
I will monitor wg7 closely and post another log when it drops so we can see what it’s doing:
-Pyro
egc
August 29, 2025, 4:34pm
11
Yes lets see.
I just did a quick test, I have two WG interfaces wg_mullv_us and wg_proton , the later is active and you can see it is monitored, after I insert the rule to block the endpoint the script kicked in and as it is my last tunnel it started over with my first tunnel:
Fri Aug 29 18:23:48 2025 user.notice wireguard-watchdog.sh[9960]: WireGuard watchdog: /usr/share/wireguard-watchdog.sh is started, waiting for services
Fri Aug 29 18:25:48 2025 user.notice wireguard-watchdog.sh[9960]: WireGuard watchdog: Available tunnels: wg_mullv_us; wg_proton;
Fri Aug 29 18:25:48 2025 user.notice wireguard-watchdog.sh[9960]: WireGuard watchdog: tunnel wg_proton is enabled
Fri Aug 29 18:25:48 2025 user.notice wireguard-watchdog.sh[9960]: WireGuard watchdog: started, pinging every 30 seconds to 8.8.8.8 on tunnel wg_proton with endpoint 138.199.7.250
Fri Aug 29 18:29:36 2025 user.notice wireguard-watchdog.sh[9960]: WireGuard watchdog: tunnel wg_proton is DOWN, starting next tunnel
Fri Aug 29 18:29:36 2025 user.notice wireguard-watchdog.sh[9960]: WireGuard watchdog: all tunnels failed, starting over
Fri Aug 29 18:29:36 2025 user.notice wireguard-watchdog.sh[9960]: WireGuard watchdog: starting WireGuard interface wg_mullv_us
Fri Aug 29 18:29:46 2025 user.notice wireguard-watchdog.sh[9960]: WireGuard watchdog: tunnel wg_mullv_us is enabled
Fri Aug 29 18:29:46 2025 user.notice wireguard-watchdog.sh[9960]: WireGuard watchdog: started, pinging every 30 seconds to 8.8.8.8 on tunnel wg_mullv_us with endpoint 43.225.189.162
1 Like
Yes, that is the behavior I expected and exactly how it worked pre-firmware upgrade. I just saw the VPN drop 5 minutes or so ago and here is what I see in the logs:
root@PyrosRouter:~# logread -e watchdog
Fri Aug 29 14:30:15 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1860 -gt 3600 ]]
Fri Aug 29 14:30:15 2025 user.debug wireguard-watchdog.sh[4135]: + active=1890
Fri Aug 29 14:30:15 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:30:15 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:30:45 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1890 -gt 3600 ]]
Fri Aug 29 14:30:45 2025 user.debug wireguard-watchdog.sh[4135]: + active=1920
Fri Aug 29 14:30:45 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:30:45 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:31:15 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1920 -gt 3600 ]]
Fri Aug 29 14:31:15 2025 user.debug wireguard-watchdog.sh[4135]: + active=1950
Fri Aug 29 14:31:15 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:31:15 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:31:45 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1950 -gt 3600 ]]
Fri Aug 29 14:31:45 2025 user.debug wireguard-watchdog.sh[4135]: + active=1980
Fri Aug 29 14:31:45 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:31:45 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:32:15 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1980 -gt 3600 ]]
Fri Aug 29 14:32:15 2025 user.debug wireguard-watchdog.sh[4135]: + active=2010
Fri Aug 29 14:32:15 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:32:15 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:32:45 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2010 -gt 3600 ]]
Fri Aug 29 14:32:45 2025 user.debug wireguard-watchdog.sh[4135]: + active=2040
Fri Aug 29 14:32:45 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:32:45 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:33:15 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2040 -gt 3600 ]]
Fri Aug 29 14:33:15 2025 user.debug wireguard-watchdog.sh[4135]: + active=2070
Fri Aug 29 14:33:15 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:33:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:33:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2070 -gt 3600 ]]
Fri Aug 29 14:33:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2100
Fri Aug 29 14:33:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:33:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:34:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2100 -gt 3600 ]]
Fri Aug 29 14:34:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2130
Fri Aug 29 14:34:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:34:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:34:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2130 -gt 3600 ]]
Fri Aug 29 14:34:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2160
Fri Aug 29 14:34:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:34:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:35:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2160 -gt 3600 ]]
Fri Aug 29 14:35:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2190
Fri Aug 29 14:35:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:35:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:35:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2190 -gt 3600 ]]
Fri Aug 29 14:35:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2220
Fri Aug 29 14:35:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:35:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:36:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2220 -gt 3600 ]]
Fri Aug 29 14:36:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2250
Fri Aug 29 14:36:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:36:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:36:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2250 -gt 3600 ]]
Fri Aug 29 14:36:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2280
Fri Aug 29 14:36:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:36:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:37:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2280 -gt 3600 ]]
Fri Aug 29 14:37:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2310
Fri Aug 29 14:37:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:37:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:37:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2310 -gt 3600 ]]
Fri Aug 29 14:37:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2340
Fri Aug 29 14:37:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:37:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:38:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2340 -gt 3600 ]]
Fri Aug 29 14:38:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2370
Fri Aug 29 14:38:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:38:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:38:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2370 -gt 3600 ]]
Fri Aug 29 14:38:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2400
Fri Aug 29 14:38:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:38:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:39:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2400 -gt 3600 ]]
Fri Aug 29 14:39:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2430
Fri Aug 29 14:39:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:39:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:39:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2430 -gt 3600 ]]
Fri Aug 29 14:39:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2460
Fri Aug 29 14:39:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:39:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:40:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2460 -gt 3600 ]]
Fri Aug 29 14:40:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2490
Fri Aug 29 14:40:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:40:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:40:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2490 -gt 3600 ]]
Fri Aug 29 14:40:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2520
Fri Aug 29 14:40:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:40:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
root@PyrosRouter:~# logread | grep debug
Fri Aug 29 14:30:15 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:30:15 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:30:45 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1890 -gt 3600 ]]
Fri Aug 29 14:30:45 2025 user.debug wireguard-watchdog.sh[4135]: + active=1920
Fri Aug 29 14:30:45 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:30:45 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:31:15 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1920 -gt 3600 ]]
Fri Aug 29 14:31:15 2025 user.debug wireguard-watchdog.sh[4135]: + active=1950
Fri Aug 29 14:31:15 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:31:15 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:31:45 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1950 -gt 3600 ]]
Fri Aug 29 14:31:45 2025 user.debug wireguard-watchdog.sh[4135]: + active=1980
Fri Aug 29 14:31:45 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:31:45 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:32:15 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 1980 -gt 3600 ]]
Fri Aug 29 14:32:15 2025 user.debug wireguard-watchdog.sh[4135]: + active=2010
Fri Aug 29 14:32:15 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:32:15 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:32:45 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2010 -gt 3600 ]]
Fri Aug 29 14:32:45 2025 user.debug wireguard-watchdog.sh[4135]: + active=2040
Fri Aug 29 14:32:45 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:32:45 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:33:15 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2040 -gt 3600 ]]
Fri Aug 29 14:33:15 2025 user.debug wireguard-watchdog.sh[4135]: + active=2070
Fri Aug 29 14:33:15 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:33:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:33:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2070 -gt 3600 ]]
Fri Aug 29 14:33:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2100
Fri Aug 29 14:33:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:33:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:34:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2100 -gt 3600 ]]
Fri Aug 29 14:34:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2130
Fri Aug 29 14:34:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:34:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:34:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2130 -gt 3600 ]]
Fri Aug 29 14:34:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2160
Fri Aug 29 14:34:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:34:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:35:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2160 -gt 3600 ]]
Fri Aug 29 14:35:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2190
Fri Aug 29 14:35:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:35:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:35:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2190 -gt 3600 ]]
Fri Aug 29 14:35:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2220
Fri Aug 29 14:35:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:35:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:36:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2220 -gt 3600 ]]
Fri Aug 29 14:36:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2250
Fri Aug 29 14:36:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:36:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:36:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2250 -gt 3600 ]]
Fri Aug 29 14:36:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2280
Fri Aug 29 14:36:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:36:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:37:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2280 -gt 3600 ]]
Fri Aug 29 14:37:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2310
Fri Aug 29 14:37:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:37:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:37:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2310 -gt 3600 ]]
Fri Aug 29 14:37:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2340
Fri Aug 29 14:37:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:37:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:38:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2340 -gt 3600 ]]
Fri Aug 29 14:38:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2370
Fri Aug 29 14:38:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:38:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:38:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2370 -gt 3600 ]]
Fri Aug 29 14:38:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2400
Fri Aug 29 14:38:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:38:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:39:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2400 -gt 3600 ]]
Fri Aug 29 14:39:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2430
Fri Aug 29 14:39:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:39:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:39:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2430 -gt 3600 ]]
Fri Aug 29 14:39:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2460
Fri Aug 29 14:39:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:39:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:40:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2460 -gt 3600 ]]
Fri Aug 29 14:40:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2490
Fri Aug 29 14:40:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:40:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:40:38 2025 kern.debug kernel: [13701.706775] ieee80211 phy0: staid 2 deleted
Fri Aug 29 14:40:46 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2490 -gt 3600 ]]
Fri Aug 29 14:40:46 2025 user.debug wireguard-watchdog.sh[4135]: + active=2520
Fri Aug 29 14:40:46 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:40:46 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
Fri Aug 29 14:41:16 2025 user.debug wireguard-watchdog.sh[4135]: + '[[' 2520 -gt 3600 ]]
Fri Aug 29 14:41:16 2025 user.debug wireguard-watchdog.sh[4135]: + active=2550
Fri Aug 29 14:41:16 2025 user.debug wireguard-watchdog.sh[4135]: + ping -qc1 -W6 -n 8.8.8.8 -I wg7
Fri Aug 29 14:41:16 2025 user.debug wireguard-watchdog.sh[4135]: + sleep 30
root@PyrosRouter:~#
And here is my interface section with wg7 still active but uptime is 6 minutes:
-Pyro
Just a thought – Maybe the script isn’t catching the tunnel being down due to the sleep time? 30 seconds might not be enough. (Switched it to 10) It DID successfully switch to wg0 after 3-4 VPN disconnects on wg7, but previously, when my WG tunnel went down, it stayed down. Maybe this new firmware has an auto-negotiate feature I don’t know about? It’s disconnected twice so far and no switch to wg1. It does come right back up, but I like the round-robin method you wrote up, thank you again for your hard work!
-Pyro
So I may have fixed my own problem. After going into each of my interfaces and adding:
option auto '0'
to each one, the interface doesn’t come back up after it goes down, allowing the script to do it’s job correctly!
-Pyro
1 Like
egc
August 30, 2025, 6:06am
15
If that works for you then excellent.
You can set the ping interval lower but not lower than 10 so small glitches are not caught.
Just a thought you are not using any other watchdog like watchcat which reboots the router when there is no internet? Because that might interfere
1 Like
I just set it to 10 and it seems to be working pretty well. No other scripts are present in the system though, only yours. It's a pretty simple setup, WireGuard with PBR. I just added TailScale, but that's about it!
-Pyro
1 Like
I take it back, it seemed to fix the problem, but it’s back to doing the same thing again. What’s strange is each time the wg interface restarts, so does the wan and wan6 interfaces. I’m half-tempted to just downgrade back to 24.10.0. I have the best intentions to keep up with all the firmware updates but honestly networking as a whole just stresses me out. Anyone have any other ideas before I pull the plug?
-Pyro
egc
August 31, 2025, 6:49am
18
You can update to the latest script and make sure you comment this line in the script so that is looks like this:
#RESTARTNETWORK=
Thanks for updating the script, but it still seems to be restarting the wan/wan6 interfaces each time the wgX interface drops. Not sure if it’s your script that’s doing it however. I just killed all wireguard-watchdog.sh scripts on my system and it just stays on one interface and constantly reboots without switching so it’s definitely something on my router config.
-Pyro
So this might be something interesting: I killed all processes of wireguard-watchdog.sh from the command line:
root@PyrosRouter:/usr/share# killall wireguard-watchdog.sh
killall: wireguard-watchdog.sh: no process killed
root@PyrosRouter:/usr/share#
and I stopped my wgX interface manually and I noticed the interfaces are still bouncing to the next one in the list. Is that common behavior? Maybe there is a rouge script running in the background somewhere?
-Pyro