OpenVPN 3 Linux v16 (beta) This release is mostly a bug-fix release with several known issues resolved and a few minor feature additions. * Bug: Incompatible OCC strings sent to server v15_beta updated the OpenVPN 3 Core library, leading to an incompatibility. This issues have now been resolved in a later update of the Core library. - OCC strings sent over the wire to the server is now always prefixed with TCPv4 or UDPv4. <https://github.com/OpenVPN/openvpn3/commit/dee1b625c3> * Bug: DNS caching issues for long-running VPN client sessions Before v16_beta, the client would do a DNS lookup before connecting and preserve those lookups if --persist-tun was used. This works fine until the configured servers changes IP address and no longer is reachable. Then the client will go into a reconnect loop trying to connect, but no other DNS lookups would be done. The Core library has implemented an improved approach which will trigger a new DNS lookup in cases where it can no longer get a connection established. Important related changes: <https://github.com/OpenVPN/openvpn3/commit/e365c44b08658> <https://github.com/OpenVPN/openvpn3/commit/2e3774c059705> NOTE: This is not a perfect solution. Clients on networks utilizing NAT64 is expected to fail when connecting to server on an IPv4 address where it changes during the runtime of the client. The best way to resolve this is to make the server available via IPv6 as well. * Bug: Pushed DNS search domains didn't work well Several reports indicated that pushing DOMAIN or DOMAIN-SEARCH didn't enable them as search domains properly when using system-resolved. This has been fixed by not tagging each domain as routing domains. This may for some users change the lookup behaviour so all DNS queries are sent to multiple DNS servers instead of just the VPN provided DNS server. We will investigate further how to reduce these side-effects when utilizing systemd-resolved. * Improvement: Do not use connection timeout by default Both the 'openvpn3 session-start' and 'openvpn3-autoload' had a timeout behaviour where it would stop running if it didn't get a connection established within approx. 30 seconds. If the server is unavailable or the client is no a network with temporarily connection issues, this is a drawback. The solution is to remove the current timeout behaviour. The 'openvpn3 session-start' command has been extended with a --timeout argument which can be used to restore the previous behaviour. * Improvement: openvpn3-as now requires properly signed https server certificates. Prior versions of openvpn3-as didn't verify the https server certificate. This has now been fixed. * Improvement: Add better systemd integration for sessions This release introduces a Python based systemd integration, which will start a pre-imported (openvpn3 config-import) configuration profile using the openvpn3-sessions@.service unit file. This can also be used to start connections automatically during boot. The advantage this has over openvpn3-autoload is that it manages VPN sessions on-by-one, while openvpn3-autoload just loaded and started everything configured without any real session management. Using the openvpn3-sessions@.service, the session status is now also available via 'systemctl' and log events are easily found via 'journalctl'. If a session is stopped via 'openvpn3 session-manage', this is also reflected in 'systemctl'. See the openvpn3-systemd(8) man page for details: <https://github.com/OpenVPN/openvpn3-linux/blob/master/docs/man/openvpn3-systemd.8.rst> This support is not complete yet, and will be extended in coming releases. * Improvement: Support for the newer WEB_AUTH pending authentication method * Improvement: Extend openvpn3-admin with a sessionmgr-service command. This new command currently only supports listing all running VPN sessions on the host and list the owner of each session as well as the tun/DCO interface in use. See the openvpn3-admin-sessionmgr-service(8) man page for details. <https://github.com/OpenVPN/openvpn3-linux/blob/master/docs/man/openvpn3-admin-sessionmgr-service.8.rst> * Improvement: Python based configuration parser updates The configuration parser used by openvpn2, openvpn3-autoload and the new openvpn3-systemd integration now ignores --ncp-ciphers, --data-ciphers and --data-ciphers-fallback These options was added in OpenVPN 2.4 and 2.5 as part to help migration from prior default ciphers to better ones. Connecting to some servers could need a more specific cipher to be set. This is believed not to be needed in OpenVPN 3, so instead we just ignore these options if found. Complete list of changes: Arne Schwabe (1): Implement WEB_AUTH auth pending method David Sommerseth (39): vendor: Upgrade to googletest 1.11 python: Harden openvpn3-as HTTPS connect ovpn3cli: Add --timeout support to session connect operations python: Remove connection attempt counting in openvpn3-autoload python: Add SessionManagerEventType constants python: Add SessionManagerEvent callback systemd: Add support for VPN session management via systemd sessionmgr: Grammar fix in an error message sessionmgr: Split out pure manager functions from OpenVPN3SessionProxy python: Use std namespace explicitly dbus: Add DBusProxy::Introspect() method tests: Make netcfg-proxy-unit test aware of other devices dbus/creds: Add new DBusCredentials::CheckACL_allowRoot() method sessionmgr: Grant root user access to read all session properties ovpn3cli/admin: Add sessionmgr-service command common: Fix duplicated imports of config.h sessionmgr: Simplify the ACL check for properties cli/sessionmgr: Simplify property extraction core: Update OpenVPN 3 Core library (DNS cache fix) common: Improve the OptionValueType::Present implementation common: Extend Configuration::File with an UnsetOption() method common: Configuration::File - Add backwards compat parsing for present opts cli/admin: Call instead Config::File::UnsetOption() on --config-unset common: Add private ParsedArgs::remove_arg() method common: Simplify ParsedArgs::ImportConfigFile() common: Don't throw on missing key in ParsedArgs::GetAllValues() cli/openvpn3: Fix missing space in config-remove warning cli/config: Fix incorrect spelling python: Handle CTRL-C in openvpn3-as gracefully python/openvpn3-as: Improve profile download error handling python/openvpn3-as: Fix incorrect exception type ovpn3cli: Fix session-start with dynamic challenge auth python: Fix dyn-challenge auth in openvpn2 cli/session: Not all connection failures are timeout related cli/session: Fix never ending session with failed 2FA lookup: Add error checking to sysconf() lookups common: Fix typo with MachineID::SourceType::NONE netcfg/resolved: Don't configure --dhcp-option DOMAIN as routing domains python: Add --data-ciphers and related options to the ignore list. Frank Lichtenheld (3): build: make gen-openvpn2-completion.py output reproducible on old Python build: Use timestamp of the constant.py source file build: Avoid generating broken bash-completion file Heiko Hund (1): netcfg: Move check for DCO availability to NetCfg