Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# VPNMON-R3 v1.9.4
# VPNMON-R3 v1.10.0
Asus-Merlin OpenVPN/Wireguard Monitor R3

Updated on 2026-May-02
Updated on 2026-Jun-10

---

Expand Down
File renamed without changes.
37 changes: 37 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,40 @@
v1.10.0 - (June 10, 2026)
- PATCH: Added a new feature and menu item (18) called DPI Resistance. This feature helps
OpenVPN tunnels resist Deep Packet Inspection (DPI) that some governments and ISPs use to
identify and block VPN traffic. It works by hardening the TLS parameters of your OpenVPN
connections to better resemble standard HTTPS browser traffic, and by actively testing
each tunnel to detect and respond to DPI interference automatically. IMPORTANT: This
feature only applies to OpenVPN connections configured for the TCP protocol on port 443.
WireGuard connections are not affected. Verify your OpenVPN client slots are set to
TCP/443 in the Merlin VPN configuration UI. Please note, this is not DPI avoidance, but
resistance. Entities analyzing traffic between you and your VPN provider can still tell
your traffic is OpenVPN-related though it is encrypted through TCP/443. Please look out
for the upcoming STUNMON script on how to get closer to DPI avoidance.
- PATCH: DPI Resistance uses a new method to detect interference on your connection. Active
DPI Detection periodically tests each monitored OpenVPN TCP/443 tunnel by sending an HTTPS
request to a well-known endpoint (Cloudflare CDN trace) through the tunnel interface. If
the test returns anything other than HTTP 200, or fails to connect entirely, VPNMON-R3
treats this as DPI MITM interference, logs the event, and immediately restarts that VPN
slot reinitiate a connection to the server.
- PATCH: In order to get around issues with OpenVPN connections pinging certain hosts via
their VPN tunnel, I have created a backup method to determine a PING estimate. This new
capability uses curl to estimate the amount of time it takes to receive a return code from
https://clients3.google.com/generate_204. Please note, this backup method may artificially
balloon your PING times, and may be wise to turn off PING resets if you wish to avoid more
frequent resets.
- PATCH: Integration with the upcoming STUNMON. VPNMON-R3 will display [STUN] in lieu of the
regular [ OK ] VPN Health stat when the VPN tunnel is being managed by STUNMON. VPNMON-R3
will only display that the Slots are in use, along with PING and city stats, they can be
manually reset if needed, but they won't be able to be monitored, as STUNMON takes on that
responsibility. If a Slot is designated as a [STUN] slot, it will also automatically
delete any associated VPNMON-R3 server lists associated with this slot, as to not cause
a faulty server reset that would force it to choose a different server IP, and breaking
the stunnel connection.
- PATCH: Added a check to see if a new OpenVPN connection was indefinitely stuck in a loop
showing it was "Connecting". VPNMON-R3 would not interfere and wait for it to connect. This
now resolves itself on the next loop and forces a VPN reset. This affects OVPN only. Huge
Thanks to @RRands for his report on this!

v1.9.4 - (May 2, 2026)
- PATCH: Found that if the VPN/WG host is used as a hostname in NVRAM, that the double-hop
VPN will incorrectly display 9.9.9.9 (or whatever your WAN DNS is configured as), instead
Expand Down
3 changes: 2 additions & 1 deletion enhancements.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
To-Do:
- ...
- Add ability to support site-to-site VPN, using private IPs, doing away with health checks, city lookups, etc. - @toaruScar

Done:
- VPN will stay in "Connecting" state indefinitely. Check for state and reset if not connected after 1st loop. - @RRands
- Double-Hop VPN capabilities
- configurable timeouts for wan detection and resets @scootertramp
- Find a way to remember past bandwidth stats so that it doesn't revert to [UNKN] as often.
Expand Down
2 changes: 1 addition & 1 deletion version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.9.4
1.10.0
Loading