OpenVPN 3 Linux v24 (Stable release)

The v24 release is another stable release.  This resolves issues
reported in several earlier releases and improves OpenVPN 3 Linux
in several areas.


* Improvement: Add --dns option support

   DNS resolver settings has been troublesome for many years, since
   there are slightly different implementations which handles the
   possible pushed DNS options differently between OS platforms and
   even across client implementations on a single platform.  This
   is being attempted resolved by a new --dns option which can be
   used instead of the various --dhcp-option settings related to
   DNS.

   The --dns option has been available since OpenVPN 2.6.  The
   OpenVPN 3 Core Library has had this support v3.7.  But the needed
   processing of this option has been lacking in OpenVPN 3 Linux
   until now.

   With the --dns option, it provides possibilities to configure
   more modern DNS features such as split-DNS, DNS-over-TLS and
   DNSSEC.  This will in most cases work out-of-the box when using
   systemd-resolved as the local DNS resolver - but it also depends
   on the features available in systemd-resolved in the Linux
   distribution being used.

   Currently, systemd-resolved does not support DNS-over-HTTPS [1].
   If this is being attempted, the connection will disconnect.
     For users only using /etc/resolv.conf, only the traditional
   DNS server and search domain settings will be configured.
   All the additional DNS features will be ignored.

   [1] <https://github.com/systemd/systemd/issues/8639>


* Improvement: Provide better details about the remote server

   The openvpn3 sessions-list would list a "Session name" when
   a client session has successfully connected to a remote server.
   This information was static and not changed since the initial
   connection.  If the VPN configuration profile had more and
   different --remote lines, only the first connection would be
   reflected in this "Session name".

   In v24 this has been changed by querying the VPN client
   process about the server it is currently connected to.  The
   "Session name" line has thus been replaced with a "Connected to"
   line which will also include details about connection protocol,
   DCO mode and port number in use.

   Note: Due to an issue in the OpenVPN 3 Core Library, the
   port number is currently not provided on DCO connections.


* Improvement: Provide better messages to end-user on session start issues

   When starting a VPN session, it could fail for various reasons.
   The reason itself was never provided to the end-user starting the
   session and it was needed to dig into the log files to figure out
   why it was failing.

   With this release, the openvpn3 session-start command will present
   an end-user friendly reason when the client process provides a
   reason for the failure.  This reduces the need to search the
   logs for the initial understanding why it failed.


* Improvement: Better error message when modifying sealed configurations

   When attempting to modify a sealed VPN configuration profile
   (which are read-only), a fairly verbose, debug-like error
   message was provided to the user.  This has been improved
   to give a more end-user friendly error message instead.


* Improvement: Upgrade to OpenVPN 3 Core Library v3.10.4

   This resolves an issue where a configuration profile using
   --pull-filter with single quotes instead of double quotes would
   be incorrectly parsed.

   There could also appear issues for VPN sessions with DCO enabled
   could fail if --inactive was used.  This has been fixed in this
   Core Library release.


* Bugfix: Starting VPN sessions could fail on slower systems

   In some cases, the openvpn3-service-backendstart would not
   start quickly enough.  This would result in the Session Manager
   as it would not get a response back soon enough that the
   VPN client process has been started - and it would fail
   the VPN session start.

   With the updated GDBus++ and further improvements in the
   Session Manager, it will now be more graceful to slower
   starting services and not fail as quickly.  This allows
   the supporting helper services to be able to start properly
   before interacting with them.


* Bugfix: Add support for dhcp-option ADAPTER_DOMAIN_SUFFIX

   The ADAPTER_DOMAIN_SUFFIX is one of these ambiguous
   --dhcp-options being treated differently across client
   implementations.  This setting has so far been ignored in
   OpenVPN 3 Linux until this release.  The best user experience
   seemed to be achieved by parsing this as an alias to the
   DOMAIN-SEARCH feature.  This seems to align best with
   common user expectations.


* Bugfix: DNS search domains might not be removed from /etc/resolv.conf

   Under some unclear situations, the DNS search domains was not
   always removed in /etc/resolv.conf.  This has been an open issue
   for a long time, but it seems to have improved since the v22_dev
   with GDBus++.  We still see this occasionally on a few Linux
   distributions with systemd-resolved.  But since we also see the
   systemd-resolved accepting the DNS updates and removals, we
   believe this is might be more an issue in systemd-resolved at
   this point.  This issue appears now only with systemd-resolved
   and is not reproducible in all environments.


* Bugfix: Duplicated name servers or search domains to /etc/resolv.conf

   In prior releases, when the Network Configuration service was
   configured to use /etc/resolv.conf for DNS resolving it could
   append duplicated DNS name servers and search domains if
   duplicates where pushed or added by other VPN connections or
   present prior to starting the VPN session.

   In v24 duplicated name servers and search domains are filtered
   out to only have a single presence of them in /etc/resolv.conf.


* Bugfix: openvpn3 sessions-list does not reflect the correct DCO status

   When running the openvpn3 sessions-list and
   openvpn3-admin sessionmgr-service --list-sessions commands, the
   DCO status was not necessarily reflecting the reality.

   Typically, if the VPN client process failed to activate and use
   the DCO kernel module, it would still be listed as DCO enabled
   while in reality being a normal tun interface.

   This has been resolved in v24 where it will now query the VPN
   client process for the actual DCO status - not just the
   configured and requested DCO mode.


* Bugfix: Stray VPN sessions not cleaned up

   In cases where a VPN session have had a log forwarder enabled
   (like via the openvpn3 log command) and that log forwarder
   has been stopped, the VPN session would be lingering
   in the Session Manager as a stray session with no available
   session details.  This is also seen via openvpn3 sessions-list.
   Attempting to remove the session using openvpn3 session-manage
   would fail with an error.

   This has been resolved in v24, where the error situations which
   might appear if a previous log forwarder could not be identified
   are now properly handled and will not block the internal session
   clean-up in the Session Manager.


* Bugfix: Spurious CreateVirtualInterface() errors when re-starting failing sessions

   In some special situations where a running VPN session stopped
   and attempted restarted after a openvpn3 session-manage --cleanup,
   the tunnel would fail with various CreateVirtualInterface() and
   TUN_SETUP_FAILED errors.

   The session management code has been gradually improved since
   v22_dev, v23 and now v24 - where stopped and failing sessions
   are handled better and removed correctly in the Session Manager.


* Bugfix: openvpn3 log with --session-path does not work

   In some scenarios, using openvpn3 log --session-path did not
   work and did not report any log events.  This has been under
   investigation for a long time and this issue has not been seen
   since the release with v22_dev and GDBus++.  We consider this
   issue resolved with the updated openvpn3-service-log service in
   the v22_dev release.


* Bugfix: openvpn3 session-start fails with only 2FA authentication

   The openvpn3 session-start would fail to start a session if the
   configuration profile would only require 2FA authentication.  This
   has also been fixed since the v22_dev with GDBus++ release which
   included a refactoring of how VPN sessions were established.


* Bugfix: Spurious GLib error messages

   The shell completion (with bash-completion installed) could
   often appear with disturbing and confusing GLib-GObject-CRITICAL
   errors in the output.  This has most likely been fixed since
   v22_dev and the migration to the GDBus++ library.  Since this did
   not happen each time and it varied a bit which Linux distributions
   it happened on we've kept this on our radar for some time.  We
   now feel more confident this type of errors is being handled
   properly and should not disturb the user any more.


Known issues:

   - openvpn3-admin journal --since has a time zone related issue
     and may not list all log events within the closest hours.


Credits
-------

Thanks goes to those continuing testing and reporting issues. Razvan
Cojocaru has continued to improve aspects of OpenVPN 3 Linux and
Petr Portnov has provided fixes enabling OpenVPN 3 Linux to become
available in NixOS.


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

   - Debian: 12
   - Fedora: 40, 41, Rawhide
   - Red Hat Enterprise Linux 8, 9
   - Ubuntu: 20.04, 22.04, 24.04

Red Hat Enterprise Linux 10 Beta is in also tech preview.
Fedora 39 has reached EOL and is no longer supported.

Installation and getting started instructions can be found here:

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


--
kind regards,

David Sommerseth
OpenVPN Inc


---- Source tarballs ---------------------------------------------------
* OpenVPN 3 Linux v24


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

<https://swupdate.openvpn.net/community/releases/openvpn3-linux-24.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 --------------------------------------------------

9ecf8dccdbc601c4325b0248db7cb1e39c8689e3b99f5fc801b42056d68a7256 openvpn3-linux-24.tar.xz a3d6bd735d46958f2458484a4338eaf894e710ac895852c9c734671a2e46e821 openvpn3-linux-24.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: v24
    git commit: 92c63ad9511dfe730416d4ac63c7cd0353638471

  - 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 v23 to v24 ---------------------------------------

David Sommerseth (56):
       configmgr: Improve error message on sealed config profiles
       configmgr: Switch to std::set<> for target lists for ACL checks
       docs: Re-enable doxygen build target
       client: Add support for --dhcp-option ADAPTER_DOMAIN_SUFFIX
       client: Stop running VPN clients in client destructor
client: Properly plug-in DBus::MainLoop handling in BackendClientObject
       client: Make BackendSignals::LogFATAL() thread safe
client: Extend BackendSignals to have access to a DBus::MainLoop object client: Improve exception handling when starting client worker thread
       client: Handle COMPRESS_ERROR events
ovpn3cli/session-start: Retrieve more status details when throwing SessionException client: Fix incorrect error message in NetCfgTunBuilder::socket_protect()
       client: Move DNS scope logging from LOG_DEBUG to LOG_VERB2
cleanup: Remove pointless local scope ovpn3cli::session::start_session()
       configmgr: Add debug option --use-session-bus
       log: Rework the tear-down of ProxyLogEvents objects
       netcfg: Cleanup NetCfgException
       dbus/signals: Add Signals::StatusChange::LastEvent()
       client: Add BackendSignals::LastStatusEvent()
       client: Add new property: connection
       sessionmgr:  Implement extraction of connection details from client
       client: Extract DCO status from ConnectionInfo when available
ovpn3cli/sessions-list: Improve session information with connection details
       build: Minor tweaks to D-Bus/systemd/state-dir build options
       netcfg/proxy: Make all proxy methods const methods
netcfg/proxy: Extend NetCfgProxy::Device with openvpn::DnsOptions parsing
       client: Enable --dns option parsing in the VPN client
       netcfg/resolved: Extend systemd-resolved proxy with DNSSEC support
       policy/netcfg: Grant privilege to set DNSSEC on systemd-resolved
netcfg/systemd-resolved: Implement support for setting the DNSSEC mode
       netcfg: Extend NetCfgDevice with D-Bus APIs for DNSSEC
       netcfg/proxy: Extend NetCfgProxy::Device with DNSSEC support
netcfg/proxy: Extend NetCfgProxy::Device::AddDnsOptions() with DNSSEC support
       netcfg/resolved: Extend systemd-resolved proxy with SetDNSOverTLS()
policy/netcfg: Grant privilege to set DNS-overTLS in systemd-resolved netcfg/systemd-resolved: Implement support for setting the DNS transport mode
       netcfg/systemd-resolved: Refactor and simplify the code
netcfg: Extend NetCfgDevice with D-Bus APIs for setting DNS transport
       netcfg/proxy: Extend NetCfgProxy::Device with DNS transport support
netcfg/proxy: Extend NetCfgProxy::Device::AddDnsOptions() with DNS transport support codestyle: Fix misc deviating code style to conform with .clang-format
       dbus/signals: Include iostream
       client: Improve debugging in openvpn3-service-backendstart
       client/backendstart: Move LogServiceProxy inside the service object
       sessionmgr: Add RegistrationRequest debug logging
sessionmgr: Allow net.openvpn.v3.backends to settle before accessing it
       ovpn3cli: Start a glib2 MainLoop in the command line tools
       sessionmgr/proxy: Replace sleep with waiting for SESS_CREATED signal
ovpn3cli/sessions-list: Don't show "Connected to" without any details
       netcfg/proxy: Disable support for DoH
       core: Update to latest OpenVPN 3 Core Library v3.10.4
       vendor: Update to ASIO 1.32.0
client: Fix missing handling of the delayed shutdown thread in BackendSignals sessionmgr: Fix misbehaviour if GetUID() fails in Session::helper_stop_log_forwards()
       client: Add support for a couple more TLS error events
       ovpn3cli: Improve mainloop start synchronisation

Petr Portnov (2):
       build: reduce hardcoded 'asio_path'
       build: allow installation directories' customization

Razvan Cojocaru (7):
       cleanup: Remove stray semicolons
       configmgr/overrides: Remove OverrideType::invalid
       configmgr/overrides: Use glib2::DataType::Extract(value)
       configmgr/overrides: Remove struct OverrideValue
       configmgr/overrides: Rename ValidOverride -> Override
       sessionmgr: Remove unused Session::connection_started bool
       netcfg/resolvconf-file: Don't add nameservers that already exist

--------------------------------------------------------------------

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to