OpenVPN 3 Linux v25 released

Yuriy Darnobyt <[email protected]> Thu, 17 Jul 2025 22:10:28 +0300
Newsgroups gmane.network.openvpn.devel,gmane.network.openvpn.user
Message-ID <[email protected]>
OpenVPN 3 Linux v25 (Stable release)

The v25 release provides three new features and several enhancements
since the previous release.

Please notice the deprecation of openvpn3-autoload.

* Feature: Live route updates (PUSH_UPDATE) support
   When connecting to OpenVPN servers capable of pushing new
   network configurations, such as new network routes, the
   OpenVPN 3 Linux client will now update the current VPN
   network setup, including DNS, and replace it with the previous
   configuration without triggering a reconnect to the server.

* Feature: Automatic restart of VPN client processes disappearing
   When configured, the OpenVPN 3 Linux Session Manager service
   will now detect if a VPN process unexpectedly disappears and
   will attempt to restart it automatically.
   See the --automatic-restart option in the openvpn3 config-manage
   man page for further details.  This feature is disabled by
   default.

* Feature: AWS VPC integration can now use named routing tables
   When the "route-table-name" setting is configured in the
   OpenVPN 3 AWS Integration add-on, this add-on will perform a
   lookup for this AWS VPC routing table and apply the routes here.
   If this table is not to be found, the add-on will create it
   on-the-fly as needed.

* FEATURE DEPRECATION: openvpn3-autoload
   The openvpn3-autoload feature was deprecated already in the
   v20 release.  This feature will be removed in a coming stable
   release.
   The replacement is the [email protected] systemd unit.
   Please see the openvpn3-systemd man page [1] for more details.
   If you depend on openvpn3-autoload today, please migrate ASAP
   to the systemd approach.
   [1] 
<https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-systemd.8.rst>

* Improvement: Better error messages for SSL/TLS issues
   The openvpn3 command will now provide more details on SSL/TLS
   related issues, due to enhancements in the update OpenVPN 3
   Core Library.

* Improvement: openvpn3-admin journal shows correct time
   It has been an open issue for a long time where time zone
   and the local DST state resulted in the openvpn3-admin journal
   command presenting the wrong time in the log events.  This
   has been resolved by the conversion taking the current time zone
   and DST state into consideration.

* Improvement: A more resilient systemd-resolved integration
   The prior systemd-resolved integration could in many cases
   fail to properly configure the DNS resolver settings.  This
   was often due to the systemd-resolved service responding slower
   than expected.  This could in the most sever situations result
   in the VPN session failing to properly start.
   This has been improved by doing all the calls to systemd-resolved
   in the background, allowing the VPN session to be properly
   connected while the systemd-resolved integration will be more
   persistent in allowing the low-level D-Bus calls to complete
   independently of the main VPN session itself.

* OpenVPN 3 Core Library update
   The OpenVPN 3 Core Library has been updated to version 3.11.3,
   which also provide new features such as Epoch Data Keys support,
   Live route updates (PUSH_UPDATE), improved events on TLS alerts,
   support for more pushed routes, improved --dns and --dhcp-option
   parsing.


Known issues:

   - The openvpn3-service-netcfg service does not differentiate
     between --dns server X resolve-domains and --dns search-domains
     when using the --resolv-conf mode, which is not as this feature
     is intended to work.  This was discovered in the v24 release
     and is on the schedule to be fixed in the next releases.  When
     this gets fixed, only --dns search-domains will be considered
     as search domains and --dns server X resolve-domains will
     enable split-DNS when using --systemd-resolved and otherwise
     ignored when using --resolv-conf with openvpn3-service-netcfg.


Credits
-------

Thanks goes to those continuing testing and reporting issues. In
particular Razvan Cojocaru, Marc Leeman, Fabio Pedretti, Lev
Stipakov, Leonard Ossa, Yuriy Darnobyt, Oleh Salnikov and Nazar
Vasiuchyn, Brandon Jimenez and Gabriel Palmar for contributing
and improving this release through code changes, documentation,
reviewing, testing and making the finished packages available to
us all.


Supported Linux distributions
-----------------------------

   - Debian: 12
   - Fedora: 41, 42
   - Red Hat Enterprise Linux 8, 9, 10[*]
   - Ubuntu: 22.04, 24.04, 25.05

Installation and getting started instructions can be found here:

<https://community.openvpn.net/openvpn/wiki/OpenVPN3Linux>

There are in addition other Linux distributions now providing
OpenVPN 3 Linux packages.  These distributions are primarily
supported by their respective distribution communities.  We will
naturally review and apply fixes deemed needed for any other
distributions as they occur.

NOTE: Red Hat Enterprise Linux 10
   The Fedora Copr repository definition for RHEL+EPEL-10 *may*
   use a wrong URL.  After doing the 'dnf copr enable' step
   on RHEL-10, please ensure the URL contains 'rhel+epel' and
   not just 'epel'.  This is expected to automatically improve
   after a bit.
   The stable repositories provided by OpenVPN Inc should not
   have this issue.

--
kind regards,

Yuriy Darnobyt
OpenVPN Inc


---- Source tarballs ---------------------------------------------------
* OpenVPN 3 Linux v25

<https://swupdate.openvpn.net/community/releases/openvpn3-linux-25.tar.xz>
<https://swupdate.openvpn.net/community/releases/openvpn3-linux-25.tar.xz.asc>

* GDBus++ v3

<https://swupdate.openvpn.net/community/releases/gdbuspp-3.tar.xz>
<https://swupdate.openvpn.net/community/releases/gdbuspp-3.tar.xz.asc>

---- SHA256 Checksums --------------------------------------------------

efccb7958fefcea4e03a9b96e5391c87c7f55bb28ae36782e41e22f7ff6d15b5 
  openvpn3-linux-25.tar.xz
2ee1f653b8f5d7062d92120a7daa56f97f532e9d4098a56e4dc5a6a616a7e5d0 
  openvpn3-linux-25.tar.xz.asc
c7a053a13c4eb5811a542b747d5fcdb3a8e58a4a42c7237cc5e2e2ca72e0c94e 
  gdbuspp-3.tar.xz
b9cf732d7a347f324d6a5532dc48f80c2815dbf6704c169b4ee97a411506a99b 
  gdbuspp-3.tar.xz.asc

---- git references ----------------------------------------------------

git repositories:
  - OpenVPN 3 Linux
<https://codeberg.org/OpenVPN/openvpn3-linux> (PRIMARY)
<https://gitlab.com/openvpn/openvpn3-linux>   (code-only mirror)
<https://github.com/OpenVPN/openvpn3-linux>   (code-only mirror)

    git tag: v25
    git commit: f68cacc65bbb5b706de1fee987304e810ed9d3a0

  - GDBus++
<https://codeberg.org/OpenVPN/gdbuspp/>       (PRIMARY)
<https://gitlab.com/openvpn/gdbuspp/>         (code-only mirror)
<https://github.com/openvpn/gdbuspp/>         (code-only mirror)

    git tag: v3
    git commit: 96f7fb688ed2dea3f192c63c5fe283dbe4900f16

---- Changes from v24 to v25 ---------------------------------------

David Sommerseth (79):
       spelling: Fix various spelling mistakes
       build: Fix incorrect default value assignment for create_statedir 
option
       common: Check if org.freedesktop.hostname1 is available in 
PlatformInfo
       client: Handle exceptions in ~BackendStarterSrv
       tests: Only build journal-log-parse if systemd is present
       netcfg/resolved: Remove no longer needed service check
       configmgr: Catch SetOverride issues at JSON config import
       ovpn3cli: Improve session-start details on successful connection
       configmgr/proxy: Improve error message on SetOverride() failures
       tests: Improve config-override-selftest failure situations
       ovpn3cli/admin: Improve sessionmgr-service verose session list
       core: Update to OpenVPN 3 Core 3.11 QA/stabilization branch
       ovpn3cli/init-config: Add --debug argument
       sessionmgr: Minor log verbosity changes in the session 
auto-restart feature
       build: Misc cleanup in Meson build scripts
       client: Refactor D-Bus initialization during process start
       configmgr/docs: Update man page for the --automatic-restart feature
       netcfg: Refactor D-Bus initialization during process start
       netcfg: Extend NetCfgOptions to handle log settings
       netcfg: Remove the "default log level" passing
       netcfg: Use logging settings from NetCfgOptions
       netcfg: Remove support for --signal-broadcast
       netcfg: Remove unused NetCfgService member - srv_obj
       core: Update to final OpenVPN 3 Core Library v3.11
       sessionmgr: Ignore Detach() exceptions in SessionManager::~Service()
       docs: Update build dependencies in BUILD.md
       log: Add missing cstdint header in logmetadata.hpp
       sessionmgr: Use Events::Status::operator<<() for tunnel restart info
       common: Refactor Configuration::File to use std::filesystem
       ovpn3cli/init-config: Refactor file/directory handling to use 
std::filesystem
       ovpn3cli/init-config: Don't follow symlinks setting up 
state/configs dirs
       sessionmgr: Catch incorrect log level requests in Session object
       build: Fix minor meson complaint in addons/aws
       netcfg/resolved: Add internal error message storage to proxy code
       netcfg/resolved: Implement base features for background async calls
       netcfg/resolved: Switch serveral D-Bus calls to async background 
calls
       netcfg/resolved: Handle errors from background D-Bus calls
       netcfg/resolved: Retry if systemd-resolved background calls times out
       core: Upgrade to OpenVPN 3 Core v3.11.1
       build: Improve OpenVPN 3 Core library version extraction
       events/log: Refactor Events::Log()
       events/log: Simplify Events::Log::str() methods
       events/log: Implement character filter in Events::Log
       log: Extend LogSender with a Debug_wnl() method
       log/core: Enable multi-line logging via the Core D-Bus logger
       log/journal: Don't filter newlines from journald entries
       log: Preserve the newlines in the log when openvpn3-service-log 
starts
       tests: Add --allow-newline to logservice1 send subcommand
       common/cmdargparser: Minor code cleanup in 
RegisterParsedArgs::register_option()
       common/cmdargparser: Filter out ASCII control characters from 
command line
       common: Merge and move string ctrl char sanitizing to a shared 
function
       log: Filter strings coming via D-Bus calls
       sessionmgr/client: Filter reason string to Pause D-Bus method call
       common: Filter input value to RequiresQueue::UpdateEntry()
       tests/request-queue: Remove unused local function
       configmgr/test: Add tests for control chars in various 
configuration profiles
       configmgr: Remove control characters from various user input via 
D-Bus
       netcfg: Remove control characters from the D-Bus method inputs
       python: Add FAT DEPRECATION WARNING in openvpn3-autoload
       build: Allow version tags to contain dots and minor version digits
       configmgr/proxy: Ignore minor version number in feature check
       tests: Upgrade to googletest-1.17.0-1
       docs/man: Minor language improvements to the 
openvpn3-service-aws.8 man page
       addon/aws: Prepare for bumping the required C++ standard version 
to C++20
       log/journald: Fix wrong timezone/dst handling in journald filter
       log/journald: Refactor log event sending with better error handling
       netcfg: Read the config file before parsing options
       netcfg/proxy: Kick out Device::RemoveDNS() and 
Device::RemoveDNSSearch()
       core: Update to OpenVPN 3 Core Library v3.11.2
       core: Update to OpenVPN 3 Core Library v3.11.3
       log: Extend CoreLog with a more flexible log prefix
       build: Avoid including build-config.h in header files
       netcfg/dns/systemd-resolved: Provide alternative logging 
framework when the signal APIs are unavailable
       netcfg/dns/systemd-resolved: Ensure the GVariant objects used in 
background D-Bus calls are freed correctly
       netcfg/dns/systemd-resolved: Ensure the ASIO background worker 
thread always runs
       netcfg/dns/systemd-resolved: Rework the 
resolved::Link::BackgroundCall() implementation
       client: Ensure DNS domains pushed via --dhcp-option will not 
enable split-DNS
       netcfg/dns/resolved: Avoid race condition in BackgroundCall()
       client/netcfg: Restore --dns-setup-disabled functionality
Fabio Pedretti (1):
       spelling: Fix systemd-resolved spelling
Lev Stipakov (1):
       addons/aws: Implement support for additional route table
Marc Leeman (1):
       build: Fix incorrect OPENVPN_USERNAME in D-Bus autostart files
Razvan Cojocaru (13):
       configmgr: Fix idle-exit comment
       signals: Allow signal re-subscription
       sessionmgr: Expose the method_ready() and method_connect() logic
       sessionmgr: Allow a Session object to re-associate with a backend 
process
       sessionmgr: Add current backend bus name and last event accessors
       sessionmgr: Restart prematurely stopped backend processes
       sessionmgr: Only retry to restart backend process a limited 
number of times
       sessionmgr: Don't always try to restart a crashed backend process
       Remove superfluous try block
       sessionmgr: Reset the log forwarders on client process restart
       netcfg: Clean up network setup for crashed client processes
       sessionmgr: Reset the client process restart timer after a while
       build: Prepare for bumping the required C++ standard version to C++20
--------------------------------------------------------------------

_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel
OpenPGP_0x5EE3432A354AA5F2.asc (application/pgp-keys, 3.1 KB)
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
/NuQuzKiXXOd4jR+
=EIEl
-----END PGP PUBLIC KEY BLOCK-----
OpenPGP_signature.asc (application/pgp-signature, 840 B)
-----BEGIN PGP SIGNATURE-----

wsF5BAABCAAjFiEEGPR8awCHfkK1bzZUXuNDKjVKpfIFAmh5SqQFAwAAAAAACgkQXuNDKjVKpfJT
Cg//e2E1uyBldKqz8slZHmu1/42pA+kjvcl7kiKydlew6rWiSwwRwrj9TWjMCec9i9O7Y/MDx+Us
pQQXpsfUl21gwhHmXzzkYS/AEz+78hYSPoXbQX6uw60x/n0qu7Jp8E7cMxUH0hxIpVmvMfBPuH2X
+7gVArGKqUs6i3TvwM1PLBZbFcsPnxBTOyfqIM02LHRl3CzAW5YglgTdrhQ2CTbZinIT5G2MDeXJ
gtAbvobZWNyJeEPnIz9MH329IoLT+SOpunzzDCtN9HqD4uo/NDwS2dVuYHLVlkCNLFmPsVcwPWVI
lRXWgVu+LVEhTz9k5XAz141junjWmZ5Ka20kaQzK8mbyTZHLd7cnk6U6wM3EJK7cMLM6bBV4JHbo
PdhvONH4Q3gpcCE2yofrIWufP7+1sopayay9tfwGnRT8ZXOPL/ahbWR5a2dNuOdK2j+X6RJfjmiH
BEvzItq9kR3N4gJksxUvVc9gjgIrsMwV+HEIKGwv+nwYLK8uoEiMJhJPq1UdE5gkdyylKMoG6WPO
V0Ntp4p0p9sevjDSk9rd6fCGcfwTkxjdEFSCAP4yD6QE8sNT4R33NhlqTgemIAS7fRZgbsnlu7OS
KeeLdeKy47J5W2UTt4ynvhT5hak432zrwTsntWfUyQMPRv37ACzc3ov9XZ3yFytUPtRUBN9RyaTG
8SU=
=iRm7
-----END PGP SIGNATURE-----