Signed-off-by: Gert Doering <gert@greenie.muc.de>
| ... | ... |
@@ -68,6 +68,106 @@ Faster connection setup |
| 68 | 68 |
significantly reduces the connection setup time by avoiding one |
| 69 | 69 |
extra packet round-trip and 1s of internal event delays. |
| 70 | 70 |
|
| 71 |
+Netlink support |
|
| 72 |
+ On Linux, if configured without ``--enable-iproute2``, configuring IP |
|
| 73 |
+ addresses and adding/removing routes is now done via the netlink(3) |
|
| 74 |
+ kernel interface. This is much faster than calling ``ifconfig`` or |
|
| 75 |
+ ``route`` and also enables OpenVPN to run with less privileges. |
|
| 76 |
+ |
|
| 77 |
+ If configured with --enable-iproute2, the ``ip`` command is used |
|
| 78 |
+ (as in 2.4). Support for ``ifconfig`` and ``route`` is gone. |
|
| 79 |
+ |
|
| 80 |
+Wintun support |
|
| 81 |
+ On Windows, OpenVPN can now use ``wintun`` devices. They are faster |
|
| 82 |
+ than the traditional ``tap9`` tun/tap devices, but do not provide |
|
| 83 |
+ ``--dev tap`` mode - so the official installers contain both. To use |
|
| 84 |
+ a wintun device, add ``--windows-driver wintun`` to your config |
|
| 85 |
+ (and use of the interactive service is required as wintun needs |
|
| 86 |
+ SYSTEM privileges to enable access). |
|
| 87 |
+ |
|
| 88 |
+IPv6-only operation |
|
| 89 |
+ It is now possible to have only IPv6 addresses inside the VPN tunnel, |
|
| 90 |
+ and IPv6-only address pools (2.4 always required IPv4 config/pools |
|
| 91 |
+ and IPv6 was the "optional extra"). |
|
| 92 |
+ |
|
| 93 |
+Improved Windows 10 detection |
|
| 94 |
+ Correctly log OS on Windows 10 now. |
|
| 95 |
+ |
|
| 96 |
+Linux VRF support |
|
| 97 |
+ Using the new ``--bind-dev`` option, the OpenVPN outside socket can |
|
| 98 |
+ now be put into a Linux VRF. See the "Virtual Routing and Forwarding" |
|
| 99 |
+ documentation in the man page. |
|
| 100 |
+ |
|
| 101 |
+TLS 1.3 support |
|
| 102 |
+ TLS 1.3 support has been added to OpenVPN. Currently, this requires |
|
| 103 |
+ OpenSSL 1.1.1+. |
|
| 104 |
+ The options ``--tls-cipher-suites`` and ``--tls-groups`` have been |
|
| 105 |
+ added to fine tune TLS protocol options. Most of the improvements |
|
| 106 |
+ were also backported to OpenVPN 2.4 as part of the maintainance |
|
| 107 |
+ releases. |
|
| 108 |
+ |
|
| 109 |
+Support setting DHCP search domain |
|
| 110 |
+ A new option ``--dhcp-option DOMAIN-SEARCH my.example.com`` has been |
|
| 111 |
+ defined, and Windows support for it is implemented (tun/tap only, no |
|
| 112 |
+ wintun support yet). Other platforms need to support this via ``--up`` |
|
| 113 |
+ script (Linux) or GUI (OSX/Tunnelblick). |
|
| 114 |
+ |
|
| 115 |
+per-client changing of ``--data-cipher`` or ``data-ciphers-fallback`` |
|
| 116 |
+ from client-connect script/dir (NOTE: this only changes preference of |
|
| 117 |
+ ciphers for NCP, but can not override what the client announces as |
|
| 118 |
+ "willing to accept") |
|
| 119 |
+ |
|
| 120 |
+Handle setting of tun/tap interface MTU on Windows |
|
| 121 |
+ If IPv6 is in use, MTU must be >= 1280 (Windows enforces IETF requirements) |
|
| 122 |
+ |
|
| 123 |
+Add support for OpenSSL engines to access private key material (like TPM). |
|
| 124 |
+ |
|
| 125 |
+HMAC based auth-token support |
|
| 126 |
+ The ``--auth-gen-token`` support has been improved and now generates HMAC |
|
| 127 |
+ based user token. If the optional ``--auth-gen-token-secret`` option is |
|
| 128 |
+ used clients will be able to seamlessly reconnect to a different server |
|
| 129 |
+ using the same secret file or to the same server after a server restart. |
|
| 130 |
+ |
|
| 131 |
+Improved support for pending authentication |
|
| 132 |
+ The protocol has been enhanced to be able to signal that |
|
| 133 |
+ the authentication should use a secondary authentication |
|
| 134 |
+ via web (like SAML) or a two factor authentication without |
|
| 135 |
+ disconnecting the OpenVPN session with AUTH_FAILED. The |
|
| 136 |
+ session will instead be stay in a authenticated state and |
|
| 137 |
+ wait for the second factor authentication to complete. |
|
| 138 |
+ |
|
| 139 |
+ This feature currently requires usage of the managent interface |
|
| 140 |
+ on both client and server side. See the `management-notes.txt` |
|
| 141 |
+ ``client-pending-auth`` and ``cr-response`` commands for more |
|
| 142 |
+ details. |
|
| 143 |
+ |
|
| 144 |
+VLAN support |
|
| 145 |
+ OpenVPN servers in TAP mode can now use 802.1q tagged VLANs |
|
| 146 |
+ on the TAP interface to separate clients into different groups |
|
| 147 |
+ that can then be handled differently (different subnets / DHCP, |
|
| 148 |
+ firewall zones, ...) further down the network. See the new |
|
| 149 |
+ options ``--vlan-tagging``, ``--vlan-accept``, ``--vlan-pvid``. |
|
| 150 |
+ |
|
| 151 |
+ 802.1q tagging on the client side TAP interface is not handled |
|
| 152 |
+ today (= tags are just forwarded transparently to the server). |
|
| 153 |
+ |
|
| 154 |
+Support building of .msi installers for Windows |
|
| 155 |
+ |
|
| 156 |
+Allow unicode search string in ``--cryptoapicert`` option (Windows) |
|
| 157 |
+ |
|
| 158 |
+Support IPv4 configs with /31 netmasks now |
|
| 159 |
+ (By no longer trying to configure ``broadcast x.x.x.x'' in |
|
| 160 |
+ ifconfig calls, /31 support "just works") |
|
| 161 |
+ |
|
| 162 |
+New option ``--block-ipv6`` to reject all IPv6 packets (ICMPv6) |
|
| 163 |
+ this is useful if the VPN service has no IPv6, but the clients |
|
| 164 |
+ might have (LAN), to avoid client connections to IPv6-enabled |
|
| 165 |
+ servers leaking "around" the IPv4-only VPN. |
|
| 166 |
+ |
|
| 167 |
+``--ifconfig-ipv6`` and ``--ifconfig-ipv6-push`` will now accept |
|
| 168 |
+ hostnames and do a DNS lookup to get the IPv6 address to use |
|
| 169 |
+ |
|
| 170 |
+ |
|
| 71 | 171 |
Deprecated features |
| 72 | 172 |
------------------- |
| 73 | 173 |
For an up-to-date list of all deprecated options, see this wiki page: |
| ... | ... |
@@ -91,7 +191,13 @@ https://community.openvpn.net/openvpn/wiki/DeprecatedOptions |
| 91 | 91 |
``--verify-client-cert none`` instead. |
| 92 | 92 |
|
| 93 | 93 |
- ``--ifconfig-pool-linear`` has been removed |
| 94 |
- This option is removed. Use ``--topology p2p`` instead. |
|
| 94 |
+ This option is removed. Use ``--topology p2p`` or ``--topology subnet`` |
|
| 95 |
+ instead. |
|
| 96 |
+ |
|
| 97 |
+- ``--compress xxx`` is considered risky and is warned against, see below. |
|
| 98 |
+ |
|
| 99 |
+- ``--key-method 1`` has been removed |
|
| 100 |
+ |
|
| 95 | 101 |
|
| 96 | 102 |
User-visible Changes |
| 97 | 103 |
-------------------- |
| ... | ... |
@@ -107,6 +213,81 @@ User-visible Changes |
| 107 | 107 |
the client configuration almost immediately as result of the |
| 108 | 108 |
faster connection setup feature. |
| 109 | 109 |
|
| 110 |
+- ``--compression`` is nowadays considered risky, because attacks exist |
|
| 111 |
+ leveraging compression-inside-crypto to reveal plaintext (VORACLE). So |
|
| 112 |
+ by default, ``--compression xxx`` will now accept incoming compressed |
|
| 113 |
+ packets (for compatibility with peers that have not been upgraded yet), |
|
| 114 |
+ but will not use compression outgoing packets. This can be controlled with |
|
| 115 |
+ the new option ``--allow-compression yes|no|asym``. |
|
| 116 |
+ |
|
| 117 |
+- Stop changing ``--txlen`` aways from OS defaults unless explicitly specified |
|
| 118 |
+ in config file. OS defaults nowadays are actually larger then what we used |
|
| 119 |
+ to configure, so our defaults sometimes caused packet drops = bad performance. |
|
| 120 |
+ |
|
| 121 |
+- remove ``--writepid`` pid file on exit now |
|
| 122 |
+ |
|
| 123 |
+- plugin-auth-pam now logs via OpenVPN logging method, no longer to stderr |
|
| 124 |
+ (this means you'll have log messages in syslog or openvpn log file now) |
|
| 125 |
+ |
|
| 126 |
+- use ISO 8601 time format for file based logging now (YYYY-MM-DD hh:mm:dd) |
|
| 127 |
+ (syslog is not affected, nor is ``--machine-readable-output``) |
|
| 128 |
+ |
|
| 129 |
+- ``--clr-verify`` now loads all CRLs if more than one CRL is in the same |
|
| 130 |
+ file (OpenSSL backend only, mbedTLS always did that) |
|
| 131 |
+ |
|
| 132 |
+- when ``--auth-user-pass file`` has no password, and the management interface |
|
| 133 |
+ is active, query management interface (instead of trying console query, |
|
| 134 |
+ which does not work on windows) |
|
| 135 |
+ |
|
| 136 |
+- skip expired certificates in Windows certificate store (``--cryptoapicert``) |
|
| 137 |
+ |
|
| 138 |
+- ``--socks-proxy`` + ``--proto udp*`` will now allways use IPv4, even if |
|
| 139 |
+ IPv6 is requested and available. Our SOCKS code does not handle IPv6+UDP, |
|
| 140 |
+ and before that change it would just fail in non-obvious ways. |
|
| 141 |
+ |
|
| 142 |
+- TCP listen() backlog queue is now set to 32 - this helps TCP servers that |
|
| 143 |
+ receive lots of "invalid" connects by TCP port scanners |
|
| 144 |
+ |
|
| 145 |
+- do no longer print OCC warnings ("option mismatch") about ``key-method``,
|
|
| 146 |
+ ``keydir``, ``tls-auth`` and ``cipher`` - these are either gone now, or |
|
| 147 |
+ negotiated, and the warnings do not serve a useful purpose. |
|
| 148 |
+ |
|
| 149 |
+- ``dhcp-option DNS`` and ``dhcp-option DNS6`` are now treated identically |
|
| 150 |
+ (= both accept an IPv4 or IPv6 address for the nameserver) |
|
| 151 |
+ |
|
| 152 |
+ |
|
| 153 |
+Maintainer-visible changes |
|
| 154 |
+-------------------------- |
|
| 155 |
+- the man page is now in maintained in .rst format, so building the openvpn.8 |
|
| 156 |
+ manpage from a git checkout now requires python-docutils (if this is missing, |
|
| 157 |
+ the manpage will not be built - which is not considered an error generally, |
|
| 158 |
+ but for package builders or ``make distcheck`` it is). Release tarballs |
|
| 159 |
+ contain the openvpn.8 file, so unless some .rst is changed, doc-utils are |
|
| 160 |
+ not needed for building. |
|
| 161 |
+ |
|
| 162 |
+- OCC support can no longer be disabled |
|
| 163 |
+ |
|
| 164 |
+- AEAD support is now required in the crypto library |
|
| 165 |
+ |
|
| 166 |
+- ``--disable-server`` has been removed from configure (so it is no longer |
|
| 167 |
+ possible to build a client-/p2p-only OpenVPN binary) - the saving in code |
|
| 168 |
+ size no longer outweighs the extra maintenance effort. |
|
| 169 |
+ |
|
| 170 |
+- ``--enable-iproute2`` will disable netlink(3) support, so maybe remove |
|
| 171 |
+ that from package building configs (see above) |
|
| 172 |
+ |
|
| 173 |
+- support building with MSVC 2019 |
|
| 174 |
+ |
|
| 175 |
+- cmocka based unit tests are now only run if cmocka is installed externally |
|
| 176 |
+ (2.4 used to ship a local git submodule which was painful to maintain) |
|
| 177 |
+ |
|
| 178 |
+- ``--disable-crypto`` configure option has been removed. OpenVPN is now always |
|
| 179 |
+ built with crypto support, which makes the code much easier to maintain. |
|
| 180 |
+ This does not affect ``--cipher none`` to do a tunnel without encryption. |
|
| 181 |
+ |
|
| 182 |
+- ``--disable-multi`` configure option has been removed |
|
| 183 |
+ |
|
| 184 |
+ |
|
| 110 | 185 |
|
| 111 | 186 |
Overview of changes in 2.4 |
| 112 | 187 |
========================== |