What's new
  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

VPNMON VPNMON-R3 v1.5.0 -Aug 3, 2025- Monitor OpenVPN/Wireguard WAN/Dual-WAN Health & Reset Multiple Connections (Available in AMTM!)

So that's a problem I'm still trying to work out. With OVPN, VPNMON actually starts those up, so I can get an accurate start time. WG, on the other hand, starts when the router reboots. The only time you get a more accurate start time is if you reset the WG connection within VPNMON, then I can start its own timer.

Going to cautiously say that we can call this a "beta" now... so opening it up to those who want to experiment with something that's pretty darn close to production now. ;)

What's new?
v1.5.03b - (TBA)
- PATCH:
Fixed the numbering for the WG slots to reflect 6-0 to provide standardization across the script when referring to the use of these slots. Thanks to @CaptainSTX!
- PATCH: Fixed the Skynet import logic and some of the on screen/log language to reflect "WG" terms instead of "VPN".
- PATCH: Fixed the WG Client Slot Server List Maintenance page to accurately display the first value (Connection Description) in a comma-separated list.
- PATCH: Clarified the "Number of Available OVPN/WG Client Slots" menu item under the config, to bring more understanding that (2) is strictly for older routers who can only have a max of 2 OVPN client slots at any given time, but also don't have any native WG capability without the help of 3rd party scripts. The (5) option provides capabilities for 5 x OVPN and 5 x WG client slots, as available on most (if not all) newer routers running the later versions of the Merlin FW.

Download Link:
Code:
curl --retry 3 "https://raw.githubusercontent.com/ViktorJp/VPNMON-R3/develop/vpnmon-r3.sh" -o "/jffs/scripts/vpnmon-r3.sh" && chmod 755 "/jffs/scripts/vpnmon-r3.sh"

Significant Screenshots:

Our main house network is now using WG Slot 2 full-time for all their needs, using one of 2203 randomized NordVPN WG server connections, while VPN slot 5 still provides an Unbound DNS VPN exit giving our internal WG clients some DNS privacy. All is working well! :)

View attachment 66793
Encountered a glitch with 1.5.05b yesterday. Open VPN Client went down then reset as VPN client was active when I finally checked. The problem was that VPMON sent notification that client was down once a minute for six+ hours. I was out for most of the day so wasn't aware it was happening until I opened my inbox and found hundreds of notifications. I disabled notifications until I could sort through my inbox. I have enabled notifications again to see if the problem happens again. Is there any way you could include a limit on how many notifications VPMON can send?
 
Encountered a glitch with 1.5.05b yesterday. Open VPN Client went down then reset as VPN client was active when I finally checked. The problem was that VPMON sent notification that client was down once a minute for six+ hours. I was out for most of the day so wasn't aware it was happening until I opened my inbox and found hundreds of notifications. I disabled notifications until I could sort through my inbox. I have enabled notifications again to see if the problem happens again. Is there any way you could include a limit on how many notifications VPMON can send?
I can look into setting a limitation. Yeah, you definitely don't want something crazy like that. Did you figure out what went wrong with your router? Not behavior I have ever encountered before. It's looking at the VPN slot status code, and if it's 0 or 1 or something other than 2 (connected), then it will keep try to reset it until it comes back with a 2.
 
Last edited:
wgI can look into setting a limitation. Yeah, you definitely don't want something crazy like that. Did you figure out what went wrong with your router? Not behavior I have ever encountered before. It's looking at the VPN slot status code, and if it's 0 or 1 or something other than 2 (connected), then it will keep try to reset it until it comes back with a 2.
As far as I could tell Open VPN 1 did reset and was functioning, but the emails kept coming. Turned the notification back on today and Open VPN 1 went down but today I only got a single email. I will leave the Open VPN client running at least until you release the final production version. After the release I will probably stop using Open VPN clients and instead just use WG clients as they are more stable and three to four times faster.
 
As far as I could tell Open VPN 1 did reset and was functioning, but the emails kept coming. Turned the notification back on today and Open VPN 1 went down but today I only got a single email. I will leave the Open VPN client running at least until you release the final production version. After the release I will probably stop using Open VPN clients and instead just use WG clients as they are more stable and three to four times faster.
Yeah, the only reason I'm still running OVPN at the moment is for Unbound. ;) Totally agree with you on the WG side of things!
 
Is there any way you could include a limit on how many notifications VPMON can send?
What kind of limit would you think is acceptable? Is it staying under a certain number of messages per minute or per hour? How did you envision this?
 
What kind of limit would you think is acceptable? Is it staying under a certain number of messages per minute or per hour? How did you envision this?
One per hour would be sufficient for most people. Unless other users experience a glitch like I had VPMON does a good job and restarts or changes the server fairly quickly so probably no need for additional emails. The limit is just a safety measure to try and prevent a flood of emails if something fails.
 
One per hour would be sufficient for most people. Unless other users experience a glitch like I had VPMON does a good job and restarts or changes the server fairly quickly so probably no need for additional emails. The limit is just a safety measure to try and prevent a flood of emails if something fails.
Happy birthday to you, @CaptainSTX ... here's your birthday present :)

What's new!
v1.5.09 beta - (TBA)
- PATCH:
Implemented a formal email rate limiter function that controls a user-configurable allowed number of emails to be sent per hour. This option is configured under AMTM Email Not(i)fications, and allows you to choose a number between 1 and 9999, with 0 having this function disabled. When email events fire off, you will see a system message on the bottom of your screen indicating how many emails have been sent thusfar this past hour, and whether any rate limiting is in effect. An indicator is displayed when the Operations Menu is displayed on the very top-right. "RL" (red) = disabled, and "RL:<number of emails>/h" (green) shows the number of emails allowed per hour.

Download link:

Code:
curl --retry 3 "https://raw.githubusercontent.com/ViktorJp/VPNMON-R3/develop/vpnmon-r3.sh" -o "/jffs/scripts/vpnmon-r3.sh" && chmod 755 "/jffs/scripts/vpnmon-r3.sh"

Significant Screenshots:

Showing the rate limiting functionality configurable under the AMTM Email Notifications Menu:

1754110074816.png


Rate limiting indicator on the very top-right of the screen:

1754110117400.png
 
OK... I keep swearing this is the last beta before I release this thing. But here's one last iteration!

What's new:
v1.5.10b - (TBA)
- PATCH:
Decided to make the expanded Unbound DNS Resolver IP a configurable option under the config menu to help save on screen realestate. Disabling (default) will just show an abbreviated color-coded indicator, while Enabling will show the full DNS Resolver IP. @New2This - FYI!

Download link:
Code:
curl --retry 3 "https://raw.githubusercontent.com/ViktorJp/VPNMON-R3/develop/vpnmon-r3.sh" -o "/jffs/scripts/vpnmon-r3.sh" && chmod 755 "/jffs/scripts/vpnmon-r3.sh"

Significant Screenshots:

Option #5 gives you the ability to enable/disable the expanded Unbound DNS Resolver IP info on-screen (for those who have Unbound over VPN enabled)
1754148689688.png


Here's it own dedicated menu item.

1754148699322.png


Enjoy!
 
Option #5 gives you the ability to enable/disable the expanded Unbound DNS Resolver IP info on-screen (for those who have Unbound over VPN enabled)

Everyone should be using it... Thanks for the update downloading now

Edit: When hitting "5" the screen just flashes and I'm still sitting on the configure page, when trying let say 3 I can go ahead and change the number and go back, but I still cannot do anything to "enabled" in 5 @Viktor Jaep
 
Last edited:
Happy birthday to you, @CaptainSTX ... here's your birthday present :)

What's new!
v1.5.09 beta - (TBA)
- PATCH:
Implemented a formal email rate limiter function that controls a user-configurable allowed number of emails to be sent per hour. This option is configured under AMTM Email Not(i)fications, and allows you to choose a number between 1 and 9999, with 0 having this function disabled. When email events fire off, you will see a system message on the bottom of your screen indicating how many emails have been sent thusfar this past hour, and whether any rate limiting is in effect. An indicator is displayed when the Operations Menu is displayed on the very top-right. "RL" (red) = disabled, and "RL:<number of emails>/h" (green) shows the number of emails allowed per hour.

Download link:

Code:
curl --retry 3 "https://raw.githubusercontent.com/ViktorJp/VPNMON-R3/develop/vpnmon-r3.sh" -o "/jffs/scripts/vpnmon-r3.sh" && chmod 755 "/jffs/scripts/vpnmon-r3.sh"

Significant Screenshots:

Showing the rate limiting functionality configurable under the AMTM Email Notifications Menu:

View attachment 67063

Rate limiting indicator on the very top-right of the screen:

View attachment 67064
Very nice thank you. I owe you a piece of cake and a round of drinks.

One thing I noticed after going to the latest Beta as the exit city for both Open & WG clients are now all displayed as undetermined. Tried starting and stopping one WG client both in VPMON and router, monitoring slot and not monitoring it then monitoring again and haven't been able to force VPMON to display the exit cities again.
 
Very nice thank you. I owe you a piece of cake and a round of drinks.

One thing I noticed after going to the latest Beta as the exit city for both Open & WG clients are now all displayed as undetermined. Tried starting and stopping one WG client both in VPMON and router, monitoring slot and not monitoring it then monitoring again and haven't been able to force VPMON to display the exit cities again.
You might be blocking the API, or it might be down?

Try this:

Code:
curl http://ip-api.com
 
Last edited:
Option #5 gives you the ability to enable/disable the expanded Unbound DNS Resolver IP info on-screen (for those who have Unbound over VPN enabled)

Everyone should be using it... Thanks for the update downloading now

Edit: When hitting "5" the screen just flashes and I'm still sitting on the configure page, when trying let say 3 I can go ahead and change the number and go back, but I still cannot do anything to "enabled" in 5 @Viktor Jaep
So you have unbound over VPN enabled, but when you hit 5, it just flashes and doesn't let you into the config option?
 
Option #5 gives you the ability to enable/disable the expanded Unbound DNS Resolver IP info on-screen (for those who have Unbound over VPN enabled)

Everyone should be using it... Thanks for the update downloading now

Edit: When hitting "5" the screen just flashes and I'm still sitting on the configure page, when trying let say 3 I can go ahead and change the number and go back, but I still cannot do anything to "enabled" in 5 @Viktor Jaep
Dumb mistake on my end, @New2This... please download again, and try again. Should work this time. :)

Code:
curl --retry 3 "https://raw.githubusercontent.com/ViktorJp/VPNMON-R3/develop/vpnmon-r3.sh" -o "/jffs/scripts/vpnmon-r3.sh" && chmod 755 "/jffs/scripts/vpnmon-r3.sh"
 
Thanks I'll redownload again.... Edit: Thank you its working now

Mine says that also undetermined.
curl: (28) Failed to connect to ip-api.com port 80 after 3121 ms: Couldn't connect to server
 

Attachments

  • Screenshot 2025-08-02 at 4.25.18 PM.png
    Screenshot 2025-08-02 at 4.25.18 PM.png
    10.1 KB · Views: 7
Last edited:
Thanks I'll redownload again.... Edit: Thank you its working now

Mine says that also undetermined.
curl: (28) Failed to connect to ip-api.com port 80 after 3121 ms: Couldn't connect to server
@New2This @CaptainSTX -- You guys need to add ip-api.com to your Skynet whitelist (4 -> 2). I just duplicated this issue on my AX88U, as it was doing the same thing. Added it to the whitelist, and tried curl [URL]http://ip-api.com[/URL] , and it worked right away.

Sounds like some blacklist sadly has picked them up.
 
@New2This @CaptainSTX -- You guys need to add ip-api.com to your Skynet whitelist (4 -> 2). I just duplicated this issue on my AX88U, as it was doing the same thing. Added it to the whitelist, and tried curl [URL]http://ip-api.com[/URL] , and it worked right away.

Sounds like some blacklist sadly has picked them up.
Yep, that works 😎
ADDED: Using the skynet blocklist from @SomeWhereOverTheRainBow
 
Last edited:
Today's the day... the very latest VPNMON-R3 v1.5.0 is in your hands now! :) Biggest new addition to this version is the ability to also monitor your Wireguard connections! Enjoy!

What's new!? (Here's a compilation of everything added across the Beta's)
v1.5.0 - (August 3, 2025)
- MINOR:
Well, actually kinda major. Wireguard is now formally being supported! VPNMON-R3 will show all 5 Wireguard slots for more modern routers. Those who can only physically support 2 VPN slots will unfortunately not be able to enjoy Wireguard at the moment. Major functionality for stopping/starting WG slots are visible under the (S)how Operations menu. As Wireguard is a bit more complex than an OVPN connection, there are some more items needed than a single IP address for those who are managing server lists for their individual slots. Each server list will require 5 fields, separated by a comma, namely: (1) Connection Name, (2) Endpoint IP, (3) Endpoint Port, (4) Private Key, and (5) Public Key. Examples of these are shared on snbforums.com.
- PATCH: Fixed the "FAILOVER" message and corrected spacing thanks to @Stephen Harrington
- PATCH: Thanks to the huge contributions from @iTyPsIDg, not only has he figured out some automation methods to pull WG info via API from NordVPN, but he added the entire framework for the custom WG server list automation menu, along with multiple WG email events that were missing. I ended up combining both the VPN and his WG server automation screens into one single pane of glass to reduce complexity.
- PATCH: Instead of displaying the WG Endpoint IP on screen, it is now resolving the actual Public IP, as reported by @CaptainSTX. Thanks!
- PATCH: Added site2site ping workaround as discussed by @ZebMcKayhan that adds an ingenious ip rule to the vpndirector. Thanks for the corroboration by @SomeWhereOverTheRainBow on this!
- PATCH: Based on feedback from @ZebMcKayhan, added this site2site ping workaround to other items that were causing lookup delays, such as the public IP and WG city resolution.
- PATCH:
Fixed the numbering for the WG slots to reflect 6-0 to provide standardization across the script when referring to the use of these slots. Thanks to @CaptainSTX!
- PATCH: Fixed the Skynet import logic and some of the on screen/log language to reflect "WG" terms instead of "VPN".
- PATCH: Fixed the WG Client Slot Server List Maintenance page to accurately display the first value (Connection Description) in a comma-separated list.
- PATCH: Clarified the "Number of Available OVPN/WG Client Slots" menu item under the config, to bring more understanding that (2) is strictly for older routers who can only have a max of 2 OVPN client slots at any given time, but also don't have any native WG capability without the help of 3rd party scripts. The (5) option provides capabilities for 5 x OVPN and 5 x WG client slots, as available on most (if not all) newer routers running the later versions of the Merlin FW.
- PATCH: Added another option (#7) under the configuration menu that allows you to enable/disable the monitoring and view of either OVPN or WG slots on the main UI screen. This was inspired by none other than @Stephen Harrington, who does not want his screen cluttered up with slots that are not being used, and I can completely understand! Caveat: If you have tied unbound to one of your OVPN slots, you will not be able to disable the OVPN slot view and will be forced to monitor those slots.
- PATCH: After noticing some stuck processes around WG, some fixes went into place to help protect other 'nvram get' commands from getting stuck.
- PATCH: Added the necessary code to include WG in the "WAN down" scenario as well, where it kills all VPN/WG connections while the WAN is down, so your router isn't wasting time trying to reconnect to your provider during situations like this.
- PATCH: Appended the Unbound resolver IP to the Unbound Resolver indicator, in order to give better insight why the indicator might turn from yellow, to green, to yellow, to red, etc. over the course of time. Thanks to @New2This for the inspiration! :)
- PATCH: Minor fixes and adding some more dev/nulls around certain commands to keep occasional messages from popping up in the main UI.
- PATCH: Implemented a formal email rate limiter function that controls a user-configurable allowed number of emails to be sent per hour. This option is configured under AMTM Email Not(i)fications, and allows you to choose a number between 1 and 9999, with 0 having this function disabled. When email events fire off, you will see a system message on the bottom of your screen indicating how many emails have been sent thusfar this past hour, and whether any rate limiting is in effect. An indicator is displayed when the Operations Menu is displayed on the very top-right. RL (red) = disabled, and RL:<number of emails>/h shows the number of emails allowed per hour.
- PATCH: Decided to make the expanded Unbound DNS Resolver IP a configurable option under the config menu to help save on screen realestate. Disabling (default) will just show an abbreviated color-coded indicator, while Enabling will show the full DNS Resolver IP. @New2This

Sheesh... After all this, I should have called it VPNMON-R3000 v4.0.0! :p

Download link (or update directly within VPNMON-R3 or AMTM):

Code:
curl --retry 3 "https://raw.githubusercontent.com/ViktorJp/VPNMON-R3/main/vpnmon-r3.sh" -o "/jffs/scripts/vpnmon-r3.sh" && chmod 755 "/jffs/scripts/vpnmon-r3.sh"

Significant Screenshots:

Wireguard made its fair share of changes to the UI screens... Please see the [OP] for a sampling.

1754236757050.png
 
Last edited:
@New2This @CaptainSTX -- You guys need to add ip-api.com to your Skynet whitelist (4 -> 2). I just duplicated this issue on my AX88U, as it was doing the same thing. Added it to the whitelist, and tried curl [URL]http://ip-api.com[/URL] , and it worked right away.

Sounds like some blacklist sadly has picked them up.11
Came to same solution independently. I resolved by whitelisting just a single IP 208.95.112.1 which had been blocked multiple times from the router and also was causing a problem with Skynet and generating an error message Over_Query_Limit. Will upgrade VPMON and if necessary further modify Skynet. Unfortunate coincidence that Skynet ban list added IP just as you released beta version. Last night it appears my VPN provider did some server work as all four tunnels went down but they all were functioning this morning and my inbox wasn't flooded with notifications. Again thanks for all your efforts on this useful app.
 

Similar threads

Latest threads

Support SNBForums w/ Amazon

If you'd like to support SNBForums, just use this link and buy anything on Amazon. Thanks!

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Back
Top