Provided by: openvpn3-client_24+dfsg-1_amd64 bug

NAME

       openvpn2 - OpenVPN 2 wrapper to OpenVPN 3 Linux

SYNOPSIS

       openvpn2 [ OPTIONS ]
       openvpn2 -h | --help

DESCRIPTION

       The openvpn2 command line wrapper to OpenVPN 3 Linux attempts to provide a similar command line interface
       as  the  classic  OpenVPN  2.x  releases.   Since OpenVPN 3 does not support all the options available in
       OpenVPN 2.x, some options is not available or will be ignored.

       In addition the OpenVPN 3 Linux project provides only a client at the moment, so all server side  related
       options are not available.

OPTIONS

       -h, --help
              show this help message and exit

       --auth ALG
              Authenticate packets with HMAC using message digest algorithm alg (default=SHA1)

       --auth-retry MODE
              Defines how authentication failures should be handled.  Valid modes are:

              none   Disconnect on authentication failures (default)

              nointeract
                     Reuse already collected credentials

              interact
                     Ask for new credentials from the user

              Currently, the OpenVPN 3 Linux client implementation ignores this option.

       --auth-user-pass
              Authenticate with server using username/password

       --ca FILE
              Certificate authority file in .pem format containing root certificate

       --cd DIR
              Change working directory to the given directory

       --cert FILE
              Certificate authority file in .pem format by a Certificate Authority in --ca file

       --cipher ALG
              Encrypt packets with cipher algorithm alg (default=BF- CBC)

       --client
              Configures client configuration mode (mandatory)

       --comp-lzo <MODE>
              Use LZO compression

       --compress <ALG>
              Compress using algorithm ALG

       --config FILE
              Read configuration options from file

       --daemon
              Run the VPN tunnel in the background

       --dev DEV-NAME
              Virtual interface name to use for VPN tunnel.  Defaults to tun.  Usually ignored, as the interface
              name is created on-the-fly in OpenVPN 3.

       --dev-type DEV-TYPE
              Defines the virtual interface type.  Only tun is supported, which is the default.

       --dhcp-option OPTION
              Set DHCP options which can be picked up by the OS configuring DNS, etc.

       --extra-certs FILE
              Specify  a  file  containing one or more PEM certs (concatenated together) that complete the local
              certificate chain.

       --float
              Allow remote to change its IP address/port.

       --hand-window SEC
              Handshake window.   The  TLS-based  key  exchange  must  finalize  within  SEC  seconds  handshake
              initiation by any peer.  (Default 60 seconds)

       --http-proxy ARGS
              Connect  to  a  remote  host  via  a specified HTTP proxy.  This option takes 2 mandatory options,
              SERVER and PORT, which defines the HTTP proxy and port to use.

              Optional arguments are AUTH-FLAG which can be auto-nct which enables clear-text  passwords  to  be
              used.

              OpenVPN  2.x also adds an optional AUTH-METHOD flag as the last argument, this is auto-detected in
              OpenVPN 3.

       --http-proxy-user-pass FILE
              Fetch HTTP proxy credentials from FILE

       --ifconfig ARGS
              Configures the TUN/TAP device for IPv4.  This option  takes  two  mandatory  arguments,  the  IPv4
              address to use and the netmask for the network.

       --ifconfig-ipv6 ARGS
              Configures  the  TUN/TAP  device  for  IPv6.   This  option takes one mandatory argument, the IPv6
              address including its PREFIX.  An optional REMOTE_ENDPOINT can be given at the end.

       --ignore-unknown-options OPTION
              If the listed OPTION(s) are not understood, the option parser in the OpenVPN 3 Core  library  will
              ignore these options instead of complaining about unknown or unused options.

       --inactive ARGS
              This  option  takes one mandatory argument, SECONDS, which defines how many seconds the tunnel can
              idle before disconnecting.  An optional BYTES argument can be added which also takes the number of
              bytes passed over the tunnel within SECONDS of inactivity.  The traffic must be higher  than  this
              minimum BYTES to keep the tunnel alive.

       --keepalive ARGS
              Instructs  the  client to ping the server over the OpenVPN Control Channel every PING_SECONDS.  An
              optional argument defines, RECONNECT_SECONDS how long  it  should  go  before  the  client  should
              attempt to reconnect if there is no response from the server.

       --key FILE
              Local private key in .pem format

       --key-direction DIR
              Set key direction for static keys.  Valid values: 0, 1

       --local HOST
              Local host name or IP address to to bind against on local side

       --lport PORT
              TCP/UDP port number for local bind (default 1194)

       --mode MODE
              Operational mode.  Only client is accepted.

       --mssfix BYTES
              Set upper bound on TCP MSS (Default tun-mtu size)

       --ns-cert-type TYPE
              (DEPRECATED)  Require  that  peer  certificate  is signed with an explicit nsCertType designation.
              Migrate to --remote-cert-tls as soon as possible.  Valid values: client, server

       --persist-tun
              Keep tun/tap device open across connection restarts

       --ping SECS
              Ping remote once per SECS seconds

       --ping-restart SECS
              Restart if n seconds pass without reception of remote ping

       --pkcs12 FILE
              PKCS#12 file  containing  local  private  key,  local  certificate  and  optionally  the  root  CA
              certificate

       --port PORT
              TCP/UDP port number for both local and remote.

       --profile-override OVERRIDE
              OpenVPN  3  specific  feature, allowing to set some local overrides or disable some functionality.
              This option takes two arguments, an OVERRIDE-KEY and an OVERRIDE-VALUE.   Valid  keys  and  values
              are:

              server-override
                     A server host name

              port-override
                     A port number

              proto-override
                     Override connection protocol.  Valid values: tcp or udp

              persist-tun
                     Alternative approach to set --persist-tun.

              ipv6   Enable or disable IPv6 inside the tunnel.  Valid values: yes, no or default

              enable-legacy-algorithms
                     Enables  non-AEAD  ciphers supported by the TLS library.  See openvpn3-config-manage(1) for
                     details.

              allow-compression
                     Allows the connection to  use  compression.   See  openvpn3-config-manage(1)  for  details.
                     Valid values: yes, no or asym

              dns-fallback-google
                     If set to true, the DNS resolver settings will include Google DNS servers.

              dns-setup-disabled
                     Disable configuring pushed DNS settings.  Valid values: true or false

              dns-sync-lookup
                     Do  synchronous  DNS  lookup  instead  of the default, asynchronous.  Valid values: true or
                     false

              auth-fail-retry
                     Try to reconnect even if the server rejected the connection due to authentication  failure.
                     Valid values: true or false

              proxy-host
                     Proxy server host name for the VPN tunnel

              proxy-port
                     Proxy server port number

              proxy-username
                     Username used for proxy authentication

              proxy-password
                     Password used for proxy authentication

              proxy-auth-cleartext
                     Valid values: true or false

              These overrides are described further in openvpn3-config-manage(1)

       --proto PROTO
              Use protocol PROTO for communicating with peer.  Valid values: udp, tcp

       --push-peer-info
              Push client info to server

       --redirect-gateway FLAGS
              Automatically execute routing commands to redirect all outgoing IP traffic through the VPN.  Valid
              flags: autolocal, def1, bypass-dhcp, bypass-dns, block-local, ipv4, !ipv4, ipv6, !ipv6

       --redirect-private FLAGS
              Like  --redirect-gateway,  but  omit  actually  changing default gateway.  Valid flags: autolocal,
              def1, bypass-dhcp, bypass-dns, block-local, ipv4, !ipv4, ipv6, !ipv6

       --remote ARGS
              Defines the remote server to connect to.  One mandatory argument must be given, containing  either
              an  IP address or an hostname to the server.  An optional PORT number can be given (default: 1194)
              and at the end the PROTOCOL can be specified (default: udp).  This option can  be  given  multiple
              times  and the client will try all remote entries until it is able to establish a connection.  The
              order of arguments are: HOST/IP, PORT and PROTOCOL

       --remote-cert-eku OID
              Require the peer certificate to be signed with explicit extended key usage.  OID can be an  object
              identifier or OpenSSL string representation.

       --remote-cert-ku ID
              Require  that  the peer certificate was signed with explicit key usage (ID).  More than one ID can
              be provided.  Must be hexadecimal notation of integers

       --remote-cert-tls TYPE
              Require that peer certificate is signed with explicit key  usage  and  extended  key  usage  based
              RFC3280 rules.  Valid values: client, server

       --remote-random
              If multiple --remote options specified, choose one randomly

       --reneg-sec SECS
              Renegotiate data channel key after SECS seconds.  (Default: 3600)

       --route ARGS
              Add route to routing table after connection is established.  Multiple routes can be specified.

              This  option  takes  one  mandatory  argument, IP-ADDRESS to route over the VPN.  The two optional
              arguments are NETMASK  (default:  255.255.255.255)  and  the  gateway  to  use  (defaults  to  use
              configured --route-gateway or the VPN server IP address).

       --route-gateway <GW|dhcp>
              Specify a default gateway for use with --route.  See openvpn(8) man page for dhcp mode

       --route-ipv6 ARGS
              Add  IPv6  route  to  routing  table  after  connection  is  established.   Multiple routes can be
              specified.

              This option takes one mandatory argument IP-RANGE/PREFIX.  An optional GATEWAY can be  set,  which
              overrides  the default server VPN IPv6 address and the second argument which sets the route METRIC
              value.

       --route-metric METRIC
              Specify a default metric for use with --route

       --route-nopull
              Do not configure routes pushed by remote server

       --server-poll-timeout SECS
              How long to wait for a response from  a  remote  server  during  connection  setup  (Default:  120
              seconds)

       --setenv ARGS
              Set  a  custom  environmental  variable  to  pass  to script.  This takes two mandatory arguments,
              variable NAME and VALUE.

       --static-challenge ARGS
              Enable static challenge/response protocol.  This takes one mandatory option, MESSAGE,  which  will
              be  presented to the user before the connection attempt.  An optional argument, ECHO, indicates if
              the user input should be echoed back to the user during input entry.

       --tcp-queue-limit NUM
              Maximum number (NUM)of queued TCP output packets

       --tls-auth ARGS
              Enables an additional HMAC  authentication  on  TLS  control  channel.   This  takes  a  mandatory
              argument,  FILE,  which  must  be  a  shared  secret  between  server  and  client.   The optional
              KEY-DIRECTION  argument  defines  which  sub-key  pair  in  FILE  to  use  for  HMAC  signing  and
              verification.  Valid values are 0 or 1.

       --tls-cert-profile PROFILE
              Sets  certificate  profile  which  defines  acceptable crypto algorithms.  Valid profiles: legacy,
              preferred, suiteb

       --tls-client
              Enable TLS and assume client role during TLS handshake.  Implicitly added when using --client

       --tls-crypt FILE
              Encrypts the TLS control channel with a shared secret key (FILE).  This CANNOT  be  combined  with
              --tls-auth

       --tls-timeout SECS
              Packet  retransmit  timeout  on  TLS  control  channel  if  no  ACK  from remote within n seconds.
              (Default: 2 seconds)

       --topology TYPE
              Set tunnel topology type.  Default is net30.  Recommended: subnet, but this must match the  server
              setting.  Valid topologies: subnet, net30

       --tran-window SECS
              Transition  window  --  old  data  channel  key can live this many seconds after new after new key
              renegotiation begins.  (Default: 3600 secs)

       --tun-mtu SIZE
              Set TUN/TAP device MTU to SIZE and derive TCP/UDP from it (default is 1500)

       --verb LEVEL
              Set log verbosity level.  Log levels are NOT compatible with OpenVPN 2 --verb

       --verify-x509-name ARGS
              Accept connections only with a host with a specific X509 subject or CN match string.  This  option
              takes one mandatory argument, which is a MATCH string and an optional match FLAG.

              FLAG can be:

              name   Match against complete X.509 Common Name field

              name-prefix
                     The  MATCH  value must be match the beginning of the X.509 Common Name field.  If the X.509
                     certificate contains server-1.example.org, it will  be  a  match  if  the  MATCH  value  is
                     server-.  It will not be a match if values like server-2 or .example.org is used.

              subject
                     The  MATCH  value  must  be the full and complete X.509 Subject field.  This is the default
                     behaviour.

TECH-PREVIEW OPTIONS

       These options are only present for testing new bleeding edge features. There are no guarantees they  will
       work,  will  not  change  or  will  not  change behaviour in the future.  These options are NOT ready for
       production environments.

       --enable-dco | --disable-dco
              Enable or disabled the Data Channel Offload (DCO) kernel acceleration module support.  The default
              is disabled, but this option is present for compatibility  with  OpenVPN  2.6.   The  --enable-dco
              option  is  OpenVPN  3  Linux specific as this project does currently not automatically detect and
              enable the DCO capability of the host.

IGNORED OPTIONS

       The options in this list will be silently ignored.  Some of these options have not yet  been  implemented
       in the OpenVPN 3 Core library and others are not relevant any more.  But none of these options will break
       any existing configurations.

       --auth-nocache
              Do  not  cache --askpass or --auth-user-pass in virtual memory.  Not applicable with OpenVPN 3 due
              to different credentials storage model.

       --chroot DIR
              Chroot to this directory after initialization.  Not  applicable  with  OpenVPN  3,  which  uses  a
              different execution model.

       --data-ciphers CIPHERLIST
              OpenVPN 2.5 introduced this option has a replacement to --ncp-ciphers.  This is primarily intended
              to  be  used  when  migrating  away  from the prior default BF-CBC cipher.  With Negotiable Cipher
              Parameters (NCP), this should not be needed in the future.  OpenVPN 3 also has a different way  of
              handling  this  situation  and is believed to not have the same connectivity issues as OpenVPN 2.4
              and newer 2.x releases could have against older OpenVPN 2.x servers.

       --data-ciphers-fallback ALG
              This is tightly coupled to --data-ciphers and is also not used nor supported by OpenVPN 3.

       --dev-node NODE
              OpenVPN 2.x will use /dev/net/tun, /dev/tun, /dev/tap, etc by default when  creating  the  tun/tap
              interface.   This  is handled differently in OpenVPN 3 Linux and is not configurable by front-ends
              like openvpn2 or openvpn3, since  the  virtual  network  interface  creation  is  handled  by  the
              openvpn3-service-netcfg(8) service.

       --down Run a script after the tunnel has been torn down.  Running scripts via OpenVPN 3 is not supported,
              and using this option will display a warning.  See the NOTES section below for details.

       --down-pre
              This  is  related  to when the --down script is being run during the disconnection.  See the NOTES
              section below regarding script execution in OpenVPN 3.

       --explicit-exit-notify <ATTEMPTS>
              On exit/restart, send exit signal to remote end.  Automatically configured with OpenVPN 3

       --group GROUP
              Run OpenVPN with GROUP group credentials.  Not needed  with  OpenVPN  3  which  uses  a  different
              privilege separation approach

       --mute-replay-warnings
              OpenVPN  2.5  and  older  can  hide  warnings related to replayed packets.  Packet replays are not
              reported in the same way in OpenVPN 3 Core library, so this option makes no behavioural change.

       --ncp-ciphers CIPHERLIST
              OpenVPN 2.4 option renamed to --data-ciphers in OpenVPN 2.5.  Ignored in OpenVPN 3.

       --nice LEVEL
              Change process priority.  Not supported in OpenVPN 3

       --nobind
              Do not bind to local address and port.  This is default behaviour in OpenVPN 3

       --persist-key
              Do not re-read key files across connection  restarts.   Not  needed.   OpenVPN  3  keeps  keys  as
              embedded file elements in the configuration

       --rcvbuf SIZE
              Set the TCP/UDP receive buffer size.  Not supported in OpenVPN 3

       --resolv-retry SECS
              If hostname resolve fails for --remote, retry resolve for n seconds before failing.  Not supported
              by OpenVPN 3.

       --script-security LEVEL
              This option is ignored, as OpenVPN 3 itself does not execute any external scripts.

       --sndbuf SIZE
              Set the TCP/UDP send buffer size.  Not supported in OpenVPN 3.

       --socket-flags FLAGS
              Applies flags to the transport socket.  Not supported in OpenVPN 3.

       --up   Run  a  script  after  the  tunnel  has  been  established.   Running scripts via OpenVPN 3 is not
              supported, and using this option will display a warning.  See the NOTES section below for details.

       --user USER
              Run OpenVPN with USER user credentials.   Not  needed  with  OpenVPN  3  which  uses  a  different
              privilege separation approach

NOTES

   SCRIPT EXECUTION
       OpenVPN  3  does not implement any support for running external scripts or program during its life cycle.
       This is by design.  Running scripts is a security risk, and needs to be handled  carefully.   In  classic
       OpenVPN  2.x  setups, scripts are run with the same privileges as the openvpn(8) process.  If the process
       is started as root, the script may be run  as  root.   Which  is  why  the  --script-security  option  is
       available and by default disabling running most external programs.

       This does not mean it is impossible to trigger programs to perform operations when certain OpenVPN events
       occur.   OpenVPN  3 Linux is using D-Bus actively and it issues several signals as the state changes.  It
       also means you can write your own front-end doing its  own  calls  how  you  prefer  while  starting  and
       managing the VPN session at the same time.  This allows a much better flexibility and allows one to adopt
       VPN  session  management  into the execution flow which is needed.  And the implementation can do its own
       security assessments on how it will tackle these scenarios.

       There are at least three ways how to adopt to the OpenVPN 3 model:

   1. Watching D-Bus StateChange signals for your own sessions
       When a session is started, it is possible to subscribe to signals issued by the VPN client  process  over
       D-Bus.   It  is only possible to subscribe to signals related to the session owner's own sessions.  These
       signals are sent by the Session Manager (net.openvpn.v3.sessions, openvpn3-service-sessionmgr(8))

       Example:

          $ dbus-monitor --system --monitor sender=net.openvpn.v3.sessions,interface=net.openvpn.v3.sessions,member=StatusChange

   2. Manage the life cycle of VPN sessions on your own
       This means wrapping the starting of VPN sessions on your own.  Either you wrap openvpn3 session-start  or
       openvpn2  calls  in  your  own  scripts,  or  you  can  connect  directly  to  the  Configuration Manager
       (net.openvpn.v3.configuration,       openvpn3-service-configmgr(8))       and       Session       Manager
       (net.openvpn.v3.sessions, openvpn3-service-sessionmgr(8)) to import configuration profiles and start/stop
       VPN  sessions  as  needed, as well as subscribing to D-Bus signals as well to handle various the states a
       VPN session will go through.  This is fairly simple to do using the  already  available  openvpn3  Python
       module.     Example    code    can    be    found    in    the    OpenVPN    3    Linux    source    tree
       <https://github.com/OpenVPN/openvpn3-linux/tree/master/src/tests/python>
        [1] or by studying the source code  of  openvpn2(1)  and  openvpn3-systemd(8),  which  both  are  Python
       scripts.

       Configurations  and  sessions  managed  via D-Bus by your own scripts can still be further managed by the
       openvpn3(1) command line interface.

   3.        Subscribing        to        NetworkChange        signals        from         net.openvpn.v3.netcfg
       <https://github.com/OpenVPN/openvpn3-linux/blob/master/docs/dbus/dbus-service-net.openvpn.v3.netcfg.md>
        [2]

       This  is also a scripting possibility, which is more useful for system wide script triggering.  A program
       or script can subscribe to specific network change events caused  by  OpenVPN  sessions.   These  signals
       contains  information  about  virtual  network interfaces which has been created or removed, IP addresses
       added or removed from devices, routing configuration as well as DNS resolver changes.

       For      an      example      how      to      do      this,      see      the       example       script
       <https://github.com/OpenVPN/openvpn3-linux/blob/master/src/tests/python/netcfg-netchg-subscription>
        [3] in the OpenVPN 3 Linux source directory.

       Please  note  that, by default, this script must be run as root or the openvpn user on the system.  It is
       possible to allow other  users  or  groups  this  privilege,  by  extending  the  D-Bus  policy  for  the
       net.openvpn.v3.netcfg service.  But granting this privilege too widely may result in unwanted information
       leakage related to VPN interface configurations.

SEE ALSO

       openvpn(8) openvpn3(1) openvpn3-config-manage(1)

       [1]
             <https://github.com/OpenVPN/openvpn3-linux/tree/master/src/tests/python>

       [2]
             <https://github.com/OpenVPN/openvpn3-linux/blob/master/docs/dbus/dbus-service-net.openvpn.v3.netcfg.md>

       [3]
             <https://github.com/OpenVPN/openvpn3-linux/blob/master/src/tests/python/netcfg-netchg-subscription>

                                                                                                     OPENVPN2(1)