Browse code

rework INSTALL and README to prepare for 2.6 release

Update URLs in README

Rip out information in INSTALL that is already in PORTS, or is
printed by "./configure --help"

Update tun/tap driver information where outdated or incomplete.

Update build prerequisites, add new linux libraries, add git and
libtool to developer tools needed, etc.

Signed-off-by: Gert Doering <gert@greenie.muc.de>
Acked-by: Frank Lichtenheld <frank@lichtenheld.com>
Message-Id: <20221128164932.14252-1-gert@greenie.muc.de>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg25566.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>

Gert Doering authored on 2022/11/29 01:49:32
Showing 2 changed files
... ...
@@ -1,6 +1,6 @@
1 1
 Installation instructions for OpenVPN, a Secure Tunneling Daemon
2 2
 
3
-Copyright (C) 2002-2019 OpenVPN Inc. This program is free software;
3
+Copyright (C) 2002-2022 OpenVPN Inc. This program is free software;
4 4
 you can redistribute it and/or modify
5 5
 it under the terms of the GNU General Public License version 2
6 6
 as published by the Free Software Foundation.
... ...
@@ -52,45 +52,39 @@ Also see the man page for more information.
52 52
 
53 53
 *************************************************************************
54 54
 
55
-SUPPORTED PLATFORMS:
56
-  (1) Linux (kernel 2.6+)
57
-  (2) Solaris
58
-  (3) OpenBSD 5.1+
59
-  (4) Mac OS X Darwin 10.5+
60
-  (5) FreeBSD 7.4+
61
-  (6) NetBSD 5.0+
62
-  (7) Windows Vista or later for OpenVPN 2.4
63
-  (8) Windows XP or later for OpenVPN 2.3
64
-
65
-SUPPORTED PROCESSOR ARCHITECTURES:
66
-   In general, OpenVPN is word size and endian independent, so
67
-   most processors should be supported.  Architectures known to
68
-   work include Intel x86, Alpha, Sparc, Amd64, and ARM.
69
-
70
-REQUIRES:
55
+For a list of supported platforms and architectures, and for
56
+instructions how to port OpenVPN to a yet-unsupported architecture,
57
+see the file "PORTS".
58
+
59
+*************************************************************************
60
+
61
+SYSTEM REQUIREMENTS:
71 62
   (1) TUN and/or TAP driver to allow user-space programs to control
72
-      a virtual point-to-point IP or Ethernet device.  See
73
-      TUN/TAP Driver Configuration section below for more info.
74
-  (2) OpenSSL library, necessary for encryption, version 1.0.2 or higher
63
+      a virtual point-to-point IP or Ethernet device.
64
+      See TUN/TAP Driver References section below for more info.
65
+  (2a) OpenSSL library, necessary for encryption, version 1.0.2 or higher
75 66
       required, available from http://www.openssl.org/
76 67
       or
77
-  (3) mbed TLS library, an alternative for encryption, version 2.0 or higher
68
+  (2b) mbed TLS library, an alternative for encryption, version 2.0 or higher
78 69
       required, available from https://tls.mbed.org/
70
+  (3) on Linux, "libnl-gen" is required for kernel netlink support
71
+  (4) on Linux, "libcap-ng" is required for Linux capability handling
79 72
 
80 73
 OPTIONAL:
81
-  (3) LZO real-time compression library, required for link compression,
74
+  (5) LZO real-time compression library, required for link compression,
82 75
       available from http://www.oberhumer.com/opensource/lzo/
83
-      OpenBSD users can use ports or packages to install lzo, but remember
84
-      to add CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
85
-      directives to "configure", since gcc will not find them otherwise.
76
+      (most supported operating systems have LZO in their installable
77
+      packages repository.  It might be necessary to add LZO_CFLAGS=
78
+      and LZO_LIBS= to the configure call to make it find the LZO pieces)
79
+  (6) LZ4 compression library
86 80
 
87 81
 OPTIONAL (for developers only):
88
-  (1) Autoconf 2.59 or higher + Automake 1.9 or higher
89
-      -- available from http://www.gnu.org/software/software.html
90
-  (2) Dmalloc library
91
-      -- available from http://dmalloc.com/
82
+  (1) Autoconf 2.59 or higher
83
+      Automake 1.9 or higher
84
+      Libtool
85
+      Git
86
+  (2) cmocka test framework (http://cmocka.org)
92 87
   (3) If using t_client.sh test framework, fping/fping6 is needed
93
-      -- Available from http://www.fping.org/
94 88
       Note: t_client.sh needs an external configured OpenVPN server.
95 89
       See t_client.rc-sample for more info.
96 90
 
... ...
@@ -106,7 +100,7 @@ CHECK OUT SOURCE FROM SOURCE REPOSITORY:
106 106
 
107 107
   Check out stable version:
108 108
 
109
-    git checkout release/2.4
109
+    git checkout release/2.6
110 110
 
111 111
   Check out master (unstable) branch:
112 112
 
... ...
@@ -119,7 +113,7 @@ BUILD COMMANDS FROM TARBALL:
119 119
 
120 120
 	./configure
121 121
 	make
122
-	make install
122
+	sudo make install
123 123
 
124 124
 *************************************************************************
125 125
 
... ...
@@ -128,7 +122,7 @@ BUILD COMMANDS FROM SOURCE REPOSITORY CHECKOUT:
128 128
 	autoreconf -i -v -f
129 129
 	./configure
130 130
 	make
131
-	make install
131
+	sudo make install
132 132
 
133 133
 *************************************************************************
134 134
 
... ...
@@ -175,98 +169,17 @@ you can install cmocka with these commands:
175 175
 
176 176
 OPTIONS for ./configure:
177 177
 
178
-  --disable-lzo           disable LZO compression support [default=yes]
179
-  --disable-lz4           Disable LZ4 compression support
180
-  --enable-comp-stub      Don't compile compression support but still allow limited interoperability with compression-enabled peers
181
-  --disable-crypto        disable crypto support [default=yes]
182
-  --disable-ofb-cfb       disable support for OFB and CFB cipher modes
183
-                          [default=yes]
184
-  --enable-x509-alt-username
185
-                          enable the --x509-username-field feature
186
-                          [default=no]
187
-  --disable-server        disable server support only (but retain client
188
-                          support) [default=yes]
189
-  --disable-plugins       disable plug-in support [default=yes]
190
-  --disable-management    disable management server support [default=yes]
191
-  --enable-pkcs11         enable pkcs11 support [default=no]
192
-  --disable-fragment      disable internal fragmentation support (--fragment)
193
-                          [default=yes]
194
-  --disable-multihome     disable multi-homed UDP server support (--multihome)
195
-                          [default=yes]
196
-  --disable-port-share    disable TCP server port-share support (--port-share)
197
-                          [default=yes]
198
-  --disable-debug         disable debugging support (disable gremlin and verb
199
-                          7+ messages) [default=yes]
200
-  --enable-small          enable smaller executable size (disable OCC, usage
201
-                          message, and verb 4 parm list) [default=no]
202
-  --enable-iproute2       enable support for iproute2 [default=no]
203
-  --disable-def-auth      disable deferred authentication [default=yes]
204
-  --disable-pf            disable internal packet filter [default=yes]
205
-  --disable-plugin-auth-pam
206
-                          disable auth-pam plugin [default=platform specific]
207
-  --disable-plugin-down-root
208
-                          disable down-root plugin [default=platform specific]
209
-  --enable-pam-dlopen     dlopen libpam [default=no]
210
-  --enable-strict         enable strict compiler warnings (debugging option)
211
-                          [default=no]
212
-  --enable-pedantic       enable pedantic compiler warnings, will not generate
213
-                          a working executable (debugging option) [default=no]
214
-  --enable-werror         promote compiler warnings to errors, will cause
215
-                          builds to fail if the compiler issues warnings
216
-                          (debugging option) [default=no]
217
-  --enable-strict-options enable strict options check between peers (debugging
218
-                          option) [default=no]
219
-  --enable-selinux        enable SELinux support [default=no]
220
-  --enable-systemd        enable systemd support [default=no]
221
-  --enable-async-push     enable async-push support for plugins providing
222
-                          deferred authentication [default=no]
178
+  To get an overview of all the configure options, run "./configure --help"
223 179
 
224 180
 ENVIRONMENT for ./configure:
225 181
 
226
-  PLUGINDIR   Path of plug-in directory [default=LIBDIR/openvpn/plugins]
227
-  IFCONFIG    full path to ipconfig utility
228
-  ROUTE       full path to route utility
229
-  IPROUTE     full path to ip utility
230
-  NETSTAT     path to netstat utility
231
-  GIT         path to git utility
232
-  SYSTEMD_ASK_PASSWORD
233
-              path to systemd-ask-password utility
234
-  SYSTEMD_UNIT_DIR
235
-              Path of systemd unit directory [default=LIBDIR/systemd/system]
236
-  TMPFILES_DIR
237
-              Path of tmpfiles directory [default=LIBDIR/tmpfiles.d]
238
-  RST2MAN     Path to rst2man utility
239
-  RST2HTML    Path to rst2html utility
240
-
241
-ENVIRONMENT variables adjusting parameters related to dependencies
242
-
243
-  TAP_CFLAGS  C compiler flags for tap
244
-  LIBPAM_CFLAGS
245
-              C compiler flags for libpam
246
-  LIBPAM_LIBS linker flags for libpam
247
-  PKCS11_HELPER_CFLAGS
248
-              C compiler flags for PKCS11_HELPER, overriding pkg-config
249
-  PKCS11_HELPER_LIBS
250
-              linker flags for PKCS11_HELPER, overriding pkg-config
251
-  OPENSSL_CFLAGS
252
-              C compiler flags for OpenSSL
253
-  OPENSSL_LIBS
254
-              linker flags for OpenSSL
255
-  MBEDTLS_CFLAGS
256
-              C compiler flags for mbedtls
257
-  MBEDTLS_LIBS
258
-              linker flags for mbedtls
259
-  LZO_CFLAGS  C compiler flags for lzo
260
-  LZO_LIBS    linker flags for lzo
261
-  LZ4_CFLAGS  C compiler flags for lz4
262
-  LZ4_LIBS    linker flags for lz4
263
-  libsystemd_CFLAGS
264
-              C compiler flags for libsystemd, overriding pkg-config
265
-  libsystemd_LIBS
266
-              linker flags for libsystemd, overriding pkg-config
267
-  P11KIT_CFLAGS
268
-              C compiler flags for P11KIT, overriding pkg-config
269
-  P11KIT_LIBS linker flags for P11KIT, overriding pkg-config
182
+  For more fine-grained control on include + library paths for external
183
+  components etc., configure can be called with environment variables on
184
+  the command line, e.g.
185
+
186
+     ./configure OPENSSL_CFLAGS="-I/usr/local/include" ...
187
+
188
+  these are also explained in "./configure --help", so not repeated here.
270 189
 
271 190
 *************************************************************************
272 191
 
... ...
@@ -302,13 +215,13 @@ For more details:
302 302
 * Ubuntu
303 303
   https://packages.ubuntu.com/search?keywords=openvpn
304 304
 
305
-In addition, the OpenVPN community provides a best-effort APT repository
306
-for Debian and Ubuntu:
305
+In addition, the OpenVPN community provides best-effort package
306
+repositories for CentOS/Fedora, Debian and Ubuntu:
307 307
 https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos
308 308
 
309 309
 *************************************************************************
310 310
 
311
-TUN/TAP Driver Configuration:
311
+TUN/TAP Driver References:
312 312
 
313 313
 * Linux 2.6 or higher (with integrated TUN/TAP driver):
314 314
 
... ...
@@ -322,17 +235,17 @@ TUN/TAP Driver Configuration:
322 322
 
323 323
   FreeBSD ships with the TUN/TAP driver, and the device nodes for tap0,
324 324
   tap1, tap2, tap3, tun0, tun1, tun2 and tun3 are made by default.
325
-  However, only the TUN driver is linked into the GENERIC kernel.
326 325
 
327
-  To load the TAP driver, enter: 
326
+  On FreeBSD versions prior to 12.0-RELEASE, there were independent
327
+  TUN and TAP drivers, and the TAP driver needed to be loaded manually,
328
+  using the command:
328 329
 
329
-	kldload if_tap
330
+	# kldload if_tap
330 331
 
331
-  See man rc(8) to find out how you can do this at boot time.
332
+  For recent FreeBSD versions, TUN/TAP are integrated and always loaded.
332 333
 
333
-  The easiest way is to install OpenVPN from the FreeBSD ports system,
334
-  the port includes a sample script to automatically load the TAP driver
335
-  at boot-up time.
334
+  FreeBSD 14 contains the ovpn(4) for kernel-level OpenVPN acceleration
335
+  (DCO) which will be used by OpenVPN 2.6 and up if available.
336 336
 
337 337
 * OpenBSD:
338 338
 
... ...
@@ -354,31 +267,14 @@ TUN/TAP Driver Configuration:
354 354
   recent Windows versions it is recommended to use the NDIS 6 driver
355 355
   (tap-windows6) instead.
356 356
 
357
+  Windows 10 and Server 2016 and up can use the dco-win driver for
358
+  kernel-level acceleration for OpenVPN client setups.  This is also
359
+  included in the community-provided OpenVPN installers.
360
+
357 361
 *************************************************************************
358 362
 
359 363
 CAVEATS & BUGS:
360 364
 
361
-* I have noticed cases where TCP sessions tunneled over the Linux
362
-  TAP driver (kernel 2.4.21 and 2.4.22) stall when lower --mssfix
363
-  values are used.  The TCP sessions appear to unstall and resume
364
-  normally when the remote VPN endpoint is pinged.
365
-
366
-* If run through a firewall using OpenBSDs packet filter PF and the
367
-  filter rules include a "scrub" directive, you may get problems talking
368
-  to Linux hosts over the tunnel, since the scrubbing will kill packets
369
-  sent from Linux hosts if they are fragmented. This is usually seen as
370
-  tunnels where small packets and pings get through but large packets
371
-  and "regular traffic" don't. To circumvent this, add "no-df" to
372
-  the scrub directive so that the packet filter will let fragments with
373
-  the "dont fragment"-flag set through anyway.
374
-
375
-* Mixing OFB or CFB cipher modes with static key mode is not recommended,
376
-  and is flagged as an error on OpenVPN versions 1.2.1 and greater.
377
-  If you use the --cipher option to explicitly select an OFB or CFB
378
-  cipher AND you are using static key mode, it is possible that there
379
-  could be an IV collision if the OpenVPN daemons on both sides
380
-  of the connection are started at exactly the same time, since
381
-  OpenVPN uses a timestamp combined with a sequence number as the cipher
382
-  IV for OFB and CFB modes.  This is not an issue if you are
383
-  using CBC cipher mode (the default), or if you are using OFB or CFB
384
-  cipher mode with SSL/TLS authentication.
365
+* see the bug tracker on https://community.openvpn.net/openvpn/report
366
+  and the wiki on https://community.openvpn.net/wiki for more detailed
367
+  caveats on operating systems, and for open and resolved bug reports.
... ...
@@ -1,6 +1,6 @@
1 1
 OpenVPN -- A Secure tunneling daemon
2 2
 
3
-Copyright (C) 2002-2018 OpenVPN Inc. This program is free software;
3
+Copyright (C) 2002-2022 OpenVPN Inc. This program is free software;
4 4
 you can redistribute it and/or modify
5 5
 it under the terms of the GNU General Public License version 2
6 6
 as published by the Free Software Foundation.
... ...
@@ -9,7 +9,7 @@ as published by the Free Software Foundation.
9 9
 
10 10
 To get the latest release of OpenVPN, go to:
11 11
 
12
-	https://openvpn.net/index.php/download/community-downloads.html
12
+	https://openvpn.net/community-downloads/
13 13
 
14 14
 To Build and Install,
15 15
 
... ...
@@ -30,7 +30,7 @@ For a sample VPN configuration, see
30 30
   http://openvpn.net/howto.html
31 31
 
32 32
 To report an issue, see
33
-  https://community.openvpn.net/openvpn/report
33
+  https://community.openvpn.net/openvpn/newticket
34 34
 
35 35
 For a description of OpenVPN's underlying protocol,
36 36
   see the file ssl.h included in the source distribution.
... ...
@@ -64,7 +64,7 @@ Note that easy-rsa and tap-windows are now maintained in their own subprojects.
64 64
 Their source code is available here:
65 65
 
66 66
   https://github.com/OpenVPN/easy-rsa
67
-  https://github.com/OpenVPN/tap-windows
67
+  https://github.com/OpenVPN/tap-windows6
68 68
 
69 69
 The old cross-compilation environment (domake-win) and the Python-based
70 70
 buildsystem have been replaced with openvpn-build: