openvpn:options
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
openvpn:options [2020/04/20 09:33] – peter | openvpn:options [2020/07/15 09:30] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 4: | Line 4: | ||
|allow-pull-fqdn|Allow client to pull DNS names from server (rather than being limited to IP address) for **--ifconfig**, | |allow-pull-fqdn|Allow client to pull DNS names from server (rather than being limited to IP address) for **--ifconfig**, | ||
- | |mssfix | + | |comp-lzo [mode]|Use fast LZO compression -- may add up to 1 byte per packet for incompressible data. **mode** may be " |
- | |:::|The **max** parameter is interpreted in the same way as the **--link-mtu** parameter, i.e. the UDP packet size after encapsulation overhead has been added in, but not including the UDP header itself. Resulting packet would be at most 28 bytes larger for IPv4 and 48 bytes for IPv6 (20/40 bytes for IP header and 8 bytes for UDP header). Default value of 1450 allows IPv4 packets to be transmitted over a link with MTU 1473 or higher without IP level fragmentation.| | + | |:::|In a server mode setup, it is possible to selectively turn compression on or off for individual clients.| |
+ | |:::|First, make sure the client-side config file enables selective compression by having at least one **--comp-lzo** directive, such as **--comp-lzo no**. This will turn off compression by default, but allow a future directive push from the server to dynamically change the on/ | ||
+ | |:::|Next in a **--client-config-dir** file, specify the compression setting for the client, for example:| | ||
+ | |::: | ||
+ | |:::|**push " | ||
+ | |:::|The first line sets the comp-lzo setting for the server side of the link, the second sets the client side.| | ||
+ | |fast-io|(Experimental) Optimize TUN/TAP/UDP I/O writes by avoiding a call to poll/ | ||
+ | |:::|The purpose of such a call would normally be to block until the device or socket is ready to accept the write. | ||
+ | |:::|This option can only be used on non-Windows systems, when **--proto udp** is specified, and when **--shaper** is NOT specified.| | ||
+ | |fragment max|Enable internal datagram fragmentation so that no UDP datagrams are sent which are larger than max bytes.| | ||
+ | |:::|The **max** parameter is interpreted in the same way as the **--link-mtu** parameter, i.e. the UDP packet size after encapsulation overhead has been added in, but not including the UDP header itself.| | ||
+ | |:::|The **--fragment** option only makes sense when you are using the UDP protocol ( **--proto udp** ).| | ||
+ | |::: | ||
+ | |:::|See the **--mssfix** option below for an important related option to **--fragment**.| | ||
+ | |:::|It should also be noted that this option is not meant to replace UDP fragmentation at the IP stack level. | ||
+ | |mssfix max|Announce to TCP sessions running over the tunnel that they should limit their send packet sizes such that after OpenVPN has encapsulated them, the resulting UDP packet size that OpenVPN sends to its peer will not exceed **max** bytes. | ||
+ | |:::|The **max** parameter is interpreted in the same way as the **--link-mtu** parameter, i.e. the UDP packet size after encapsulation overhead has been added in, but not including the UDP header itself.| | ||
+ | |:::|Resulting packet would be at most 28 bytes larger for IPv4 and 48 bytes for IPv6 (20/40 bytes for IP header and 8 bytes for UDP header). Default value of 1450 allows IPv4 packets to be transmitted over a link with MTU 1473 or higher without IP level fragmentation.| | ||
|:::|The **--mssfix** option only makes sense when you are using the UDP protocol for OpenVPN peer-to-peer communication, | |:::|The **--mssfix** option only makes sense when you are using the UDP protocol for OpenVPN peer-to-peer communication, | ||
|::: | |::: | ||
Line 11: | Line 28: | ||
|:::|The usual symptom of such a breakdown is an OpenVPN connection which successfully starts, but then stalls during active usage.| | |:::|The usual symptom of such a breakdown is an OpenVPN connection which successfully starts, but then stalls during active usage.| | ||
|:::|If **--fragment** and **--mssfix** are used together, **--mssfix** will take its default max parameter from the **--fragment max** option.| | |:::|If **--fragment** and **--mssfix** are used together, **--mssfix** will take its default max parameter from the **--fragment max** option.| | ||
- | |::: | + | |::: |
- | |::: | + | |persist-key|Don' |
+ | |:::|This option can be combined with **--user nobody** to allow restarts triggered by the **SIGUSR1** signal. | ||
+ | |:::|This option solves the problem by persisting keys across **SIGUSR1** resets, so they don't need to be re-read.| | ||
+ | |persist-tun|Don't close and reopen TUN/TAP device or run up/down scripts across **SIGUSR1** or **--ping-restart** restarts.| | ||
+ | |::: | ||
+ | |rcvbuf size|Set the TCP/UDP socket receive buffer size. Defaults to operation system default.| | ||
+ | |redirect-gateway flags...|Automatically execute routing commands to cause all outgoing IP traffic to be redirected over the VPN. This is a client-side option.| | ||
+ | |:::|This option performs three steps:| | ||
+ | |:::|(1) Create a static route for the **--remote** address which forwards to the pre-existing default gateway. | ||
+ | |:::|(2) Delete the default gateway route.| | ||
+ | |:::|(3) Set the new default gateway to be the VPN endpoint address (derived either from **--route-gateway** or the second parameter to **--ifconfig** when **--dev tun** is specified).| | ||
+ | |:::|When the tunnel is torn down, all of the above steps are reversed so that the original default route is restored.| | ||
+ | |:::|Option flags:| | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
|remote-random|Used to initially " | |remote-random|Used to initially " | ||
|:::|When multiple --remote address/ | |:::|When multiple --remote address/ | ||
+ | |route-delay [n] [w]|Delay **n** seconds (default=0) after connection establishment, | ||
+ | |:::|If **n** is 0, routes will be added immediately upon connection establishment. | ||
+ | |:::|This option is designed to be useful in scenarios where DHCP is used to set tap adapter addresses. | ||
+ | |:::|On Windows, **--route-delay** tries to be more intelligent by waiting **w** seconds (w=30 by default) for the TAP-Win32 adapter to come up before adding routes.| | ||
|route-gateway gw< | |route-gateway gw< | ||
|:::|If **dhcp** is specified as the parameter, the gateway address will be extracted from a DHCP negotiation with the OpenVPN server-side LAN.| | |:::|If **dhcp** is specified as the parameter, the gateway address will be extracted from a DHCP negotiation with the OpenVPN server-side LAN.| | ||
|route network/IP [netmask] [gateway] [metric]|Add route to routing table after connection is established. Multiple routes can be specified. Routes will be automatically torn down in reverse order prior to TUN/TAP device close.| | |route network/IP [netmask] [gateway] [metric]|Add route to routing table after connection is established. Multiple routes can be specified. Routes will be automatically torn down in reverse order prior to TUN/TAP device close.| | ||
|::: | |::: | ||
- | |::: | + | |::: |
- | |::: | + | |::: |
|:::|The default can be specified by leaving an option blank or setting it to " | |:::|The default can be specified by leaving an option blank or setting it to " | ||
|:::|The **network** and **gateway** parameters can also be specified as a DNS or /etc/hosts file resolvable name, or as one of three special keywords:| | |:::|The **network** and **gateway** parameters can also be specified as a DNS or /etc/hosts file resolvable name, or as one of three special keywords:| | ||
Line 26: | Line 65: | ||
|::: | |::: | ||
|::: | |::: | ||
+ | |route-nopull|When used with **--client** or **--pull**, accept options pushed by server EXCEPT for routes, block-outside-dns and dhcp options like DNS servers.| | ||
+ | |:::|When used on the client, this option effectively bars the server from adding routes to the client' | ||
+ | |sndbuf size|Set the TCP/UDP socket send buffer size. Defaults to operation system default.| | ||
+ | |tun-mtu n|Take the TUN device MTU to be n and derive the link MTU from it (default=1500). | ||
+ | |:::|The MTU (Maximum Transmission Units) is the maximum datagram size in bytes that can be sent unfragmented over a particular network path. OpenVPN requires that packets on the control or data channels be sent unfragmented.| | ||
+ | |:::|MTU problems often manifest themselves as connections which hang during periods of active usage.| | ||
+ | |::: | ||
+ | |verb n|Set output verbosity to **n** (default=1). | ||
+ | |:::|**0** -- No output except fatal errors.| | ||
+ | |:::|**1 to 4** -- Normal usage range.| | ||
+ | |:::|**5** -- Output **R** and **W** characters to the console for each packet read and write, uppercase is used for TCP/UDP packets and lowercase is used for TUN/TAP packets.| | ||
+ | |:::|**6 to 11** -- Debug info range (see errlevel.h for additional information on debug levels).| | ||
+ | ---- | ||
+ | |||
+ | ===== Server Mode ===== | ||
+ | |||
+ | |client-to-client|Because the OpenVPN server mode handles multiple clients through a single tun or tap interface, it is effectively a router. | ||
+ | |:::|When this option is used, each client will " | ||
---- | ---- | ||
+ | ===== Client Mode ===== | ||
- | |comp-lzo [mode]|Use fast LZO compression -- may add up to 1 byte per packet for incompressible data. **mode** may be " | + | |client|A helper directive designed |
- | |:::|In a server mode setup, it is possible to selectively turn compression on or off for individual clients.| | + | |:::|**pull**| |
- | |:::|First, make sure the client-side config file enables selective compression by having at least one **--comp-lzo** directive, such as **--comp-lzo no**. This will turn off compression by default, but allow a future | + | |:::|**tls-client**| |
- | |:::|Next in a **--client-config-dir** file, specify the compression setting for the client, for example:| | + | |pull|This option must be used on a client which is connecting to a multi-client |
- | |:::|**comp-lzo yes**| | + | |:::|In particular, **--pull** allows the server to push routes to the client, so you should not use **--pull** or **--client** in situations where you don't trust the server to have control over the client' |
- | |:::|**push "comp-lzo yes"**| | + | |
- | |:::|The first line sets the comp-lzo setting for the server side of the link, the second sets the client | + | |
- | |fast-io|(Experimental) Optimize TUN/TAP/UDP I/O writes by avoiding a call to poll/ | + | |
- | |:::|The purpose of such a call would normally be to block until the device or socket is ready to accept the write. | + | |
- | |:::|This option can only be used on non-Windows systems, when **--proto udp** is specified, and when **--shaper** is NOT specified.| | + | |
- | |fragment 1300| | + | |
- | |key-direction 1| | + | |
- | |persist-key|Don't re-read key files across SIGUSR1 or --ping-restart.| | + | |
- | |:::|This option can be combined with **--user nobody** to allow restarts triggered by the **SIGUSR1** signal. | + | ---- |
- | |:::|This option solves the problem by persisting keys across | + | |
- | |persist-tun|Don' | + | ===== Data Channel Encryption Options ===== |
- | |:::|**SIGUSR1** is a restart signal similar to **SIGHUP**, but which offers finer-grained control over reset options.| | + | |
- | |pull|This option must be used on a client which is connecting to a multi-client server. It indicates | + | |key-direction 1|Alternative way of specifying the optional direction parameter for the **--tls-auth** and **--secret** options. |
- | |:::|In particular, | + | |
- | |rcvbuf 524288|Set the TCP/UDP socket receive buffer size. Defaults to operation system default.| | + | ---- |
- | |remote-cert-tls server| | + | |
- | |route-delay 2| | + | ===== TLS Mode Options ===== |
- | |route-method exe| | + | |
- | |route-nopull|When used with **--client** or **--pull**, accept options pushed by server EXCEPT for routes, block-outside-dns and dhcp options like DNS servers.| | + | |auth-nocache|Don't cache **--askpass** or **--auth-user-pass** username/ |
- | |:::|When used on the client, this option effectively bars the server from adding routes | + | |:::|If specified, this directive will cause OpenVPN to immediately forget username/ |
- | |sndbuf 524288|Set | + | |:::|When using **--auth-nocache** in combination with a user/password file and **--chroot** or **--daemon**, make sure to use an absolute path.| |
+ | |:::|This directive does not affect the **--http-proxy** username/ | ||
+ | |remote-cert-tls client< | ||
+ | |:::|This is a useful security option for clients, | ||
+ | |:::|The **--remote-cert-tls client** option is equivalent | ||
+ | |:::|The key usage is digitalSignature and/or keyAgreement.| | ||
+ | |:::|The **--remote-cert-tls server** option is equivalent to **--remote-cert-ku a0 88 --remote-cert-eku "TLS Web Server Authentication" | ||
+ | |:::|The key usage is digitalSignature | ||
+ | |:::|This is an important security precaution to protect against a man-in-the-middle attack where an authorized | ||
|tls-client|Enable TLS and assume client role during TLS handshake.| | |tls-client|Enable TLS and assume client role during TLS handshake.| | ||
- | |tun-mtu 1500| | + | |verify-x509-name Server name-prefix|Accept connections only if a host' |
- | |verb 3|Set output verbosity to n (default=1). Each level shows all info from the previous levels. | + | |:::|Which X.509 name is compared to **name** depends on the setting of type. **type** can be " |
- | |:::|**0** -- No output except fatal errors.| | + | |:::|**--verify-x509-name 'C=KG, ST=NA, L=Bishkek, CN=Server-1'** and **--verify-x509-name Server-1 name** or you could use **--verify-x509-name Server- name-prefix** if you want a client to only accept connections to " |
- | |::: | + | |:::|**--verify-x509-name** is a useful replacement for the **--tls-verify** option to verify the remote host, because |
- | |:::|**5** -- Output | + | |:::|Using a name prefix is a useful alternative |
- | |:::|**6 to 11** -- Debug info range (see errlevel.h for additional information on debug levels).| | + | |:::|**NOTE:** Test against a name prefix only when you are using OpenVPN with a custom CA certificate that is under your control. Never use this option with type "name-prefix" when your client certificates are signed by a third party, such as a commercial web CA.| |
- | |verify-x509-name Server | + | |
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Windows-Specific Options ===== | ||
+ | |||
+ | |route-method m|Which method **m** to use for adding routes on Windows?| | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |||
+ | ---- | ||
openvpn/options.1587375217.txt.gz · Last modified: 2020/07/15 09:30 (external edit)