Provided by: openconnect_9.12-1build5_amd64 bug

NAME

       openconnect - Multi-protocol VPN client, for Cisco AnyConnect VPNs and others

SYNOPSIS

       openconnect [--config configfile] [-b,--background] [--pid-file pidfile] [-c,--certificate cert]
                   [-e,--cert-expire-warning days] [-k,--sslkey key] [-C,--cookie cookie] [--cookie-on-stdin]
                   [--compression MODE] [-d,--deflate] [-D,--no-deflate] [--force-dpd interval]
                   [--force-trojan interval] [-F,--form-entry form:opt=value] [-g,--usergroup group] [-h,--help]
                   [--http-auth methods] [--external-browser browser] [-i,--interface ifname] [-l,--syslog]
                   [--timestamp] [--passtos] [-U,--setuid user] [--csd-user user] [-m,--mtu mtu]
                   [--base-mtu mtu] [-p,--key-password pass] [-P,--proxy proxyurl] [--proxy-auth methods]
                   [--no-proxy] [--libproxy] [--key-password-from-fsid] [-q,--quiet] [-Q,--queue-len len]
                   [-s,--script vpnc-script] [-S,--script-tun] [-u,--user name] [-V,--version] [-v,--verbose]
                   [-x,--xmlconfig config] [--authgroup group] [--authenticate] [--cookieonly] [--printcookie]
                   [--cafile file] [--disable-ipv6] [--dtls-ciphers list] [--dtls12-ciphers list]
                   [--dtls-local-port port] [--dump-http-traffic] [--no-system-trust] [--pfs] [--no-dtls]
                   [--no-http-keepalive] [--no-passwd] [--no-xmlpost] [--non-inter] [--passwd-on-stdin]
                   [--protocol proto] [--token-mode mode] [--token-secret {secret[,counter]|@file}]
                   [--reconnect-timeout seconds] [--resolve host:ip] [--sni host] [--servercert sha1]
                   [--useragent string] [--version-string string] [--local-hostname string] [--os string]
                   [--server] [https://]host[:port][/group]

DESCRIPTION

       The  program  openconnect connects to VPN servers which use standard TLS/SSL, DTLS, and ESP protocols for
       data transport.

       It was originally written to support Cisco "AnyConnect" VPN servers, and has  since  been  extended  with
       experimental  support  for  Juniper  Network  Connect  (--protocol=nc),  Junos/Ivanti  Pulse  VPN servers
       (--protocol=pulse), PAN GlobalProtect VPN servers (--protocol=gp), F5 Big-IP VPN servers (--protocol=f5),
       Fortinet  Fortigate  VPN  servers   (--protocol=fortinet),   and   Array   Networks   SSL   VPN   servers
       (--protocol=array).

       The  connection  happens  in  two  phases.  First  there is a simple HTTPS connection over which the user
       authenticates somehow - by using a certificate, or password or SecurID, etc.  Having  authenticated,  the
       user is rewarded with an authentication cookie which can be used to make the real VPN connection.

       The  second  phase uses that cookie to connect to a tunnel via HTTPS, and data packets can be passed over
       the resulting connection. When possible, a UDP tunnel is also configured:  AnyConnect  uses  DTLS,  while
       Juniper and GlobalProtect use UDP-encapsulated ESP. The UDP tunnel may be disabled with --no-dtls, but is
       preferred  when  correctly  supported  by  the  server and network for performance reasons. (TCP performs
       poorly and unreliably over TCP-based tunnels; see http://sites.inka.de/~W1011/devel/tcp-tcp.html.)

OPTIONS

       --config=CONFIGFILE
              Read further options from CONFIGFILE before continuing to process options from the  command  line.
              The  file should contain long-format options as would be accepted on the command line, but without
              the two leading -- dashes. Empty lines, or lines where  the  first  non-space  character  is  a  #
              character, are ignored.

              Any option except the config option may be specified in the file.

       -b,--background
              Continue in background after startup

       --pid-file=PIDFILE
              Save the pid to PIDFILE when backgrounding

       -c,--certificate=CERT [,--mca-certificate=CERT]
              Use  SSL client certificate CERT which may be either a file name or, if OpenConnect has been built
              with an appropriate version of GnuTLS, a PKCS#11 URL.

              The --mca-certificate option sets the secondary certificate for  multi-certificate  authentication
              (according to Cisco's terminology, the SSL client certificate is called the "machine" certificate,
              and the second certificate is called the "user" certificate).

       -e,--cert-expire-warning=DAYS
              Give a warning when SSL client certificate has DAYS left before expiry

       -k,--sslkey=KEY [,--mca-key=KEY]
              Use  SSL private key KEY which may be either a file name or, if OpenConnect has been built with an
              appropriate version of GnuTLS, a PKCS#11 URL.

              The --mca-key option sets the private key for the secondary certificate (see --mca-certificate).

       -C,--cookie=COOKIE
              Use authentication cookie COOKIE.

       --cookie-on-stdin
              Read cookie from standard input.

       -d,--deflate
              Enable  all  compression,  including  stateful  modes.  By  default,  only  stateless  compression
              algorithms are enabled.

       -D,--no-deflate
              Disable all compression.

       --compression=MODE
              Set compression mode, where MODE is one of stateless, none, or all.

              By  default,  only stateless compression algorithms which do not maintain state from one packet to
              the next (and which can be used on UDP transports)  are  enabled.  By  setting  the  mode  to  all
              stateful  algorithms  (currently  only  zlib  deflate)  can  be enabled. Or all compression can be
              disabled by setting the mode to none.

       --force-dpd=INTERVAL
              Use INTERVAL as Dead Peer Detection interval (in seconds). This will cause the client to  use  DPD
              at  the specified interval even if the server hasn't requested it, or at a different interval from
              the one requested by the server.

              DPD mechanisms vary by protocol and by transport (TLS  or  DTLS/ESP),  but  are  all  functionally
              similar:  they  enable  either  the VPN client or the VPN server to transmit a signal to the peer,
              requesting an immediate reply which can be used to confirm that the link between the two peers  is
              still working.

       -g,--usergroup=GROUP
              Set the URL path of the initial HTTPS connection to the server.

              With  some  protocols,  this path may function as a login group or realm, hence the naming of this
              option. For example, the following invocations of OpenConnect are equivalent:
              openconnect --usergroup=loginPath vpn.server.com
              openconnect https://vpn.server.com/loginPath

       -F,--form-entry=FORM:OPTION[=VALUE]
              Provide authentication form input, where FORM and OPTION are the identifiers from the form and the
              specific input field, and VALUE is the string to be filled  in  automatically.  For  example,  the
              standard  username  field  (also  handled  by  the --user option) could also be provided with this
              option thus: --form-entry main:username=joebloggs.

              If VALUE is not specified, this option will cause a hidden form field to be treated as a  standard
              text-input field.

              This  option  should  not  be  used to enter passwords.  --passwd-on-stdin should be used for that
              purpose. Not only will this option expose the password value via the OpenConnect process's command
              line, but unlike --passwd-on-stdin this option  will  not  recognize  the  case  of  an  incorrect
              password, and stop trying to re-enter it repeatedly.

       -h,--help
              Display help text

       --http-auth=METHODS
              Use  only  the specified methods for HTTP authentication to a server.  By default, only Negotiate,
              NTLM and Digest authentication are enabled.  Basic authentication is also supported but because it
              is insecure it must be explicitly enabled. The argument is a comma-separated list of methods to be
              enabled. Note that the order does not matter: OpenConnect will use  Negotiate,  NTLM,  Digest  and
              Basic  authentication  in that order, if each is enabled, regardless of the order specified in the
              METHODS string.

       --external-browser=BROWSER
              Set BROWSER as the executable used by  OpenConnect  to  handle  the  authentication  process  with
              gateways that support the single-sign-on-external-browser authentication method.

       -i,--interface=IFNAME
              Use IFNAME for tunnel interface

       -l,--syslog
              After tunnel is brought up, use syslog for further progress messages

       --timestamp
              Prepend a timestamp to each progress message

       --passtos
              Copy  TOS / TCLASS of payload packet into DTLS and ESP packets. This is not set by default because
              it may leak information about the payload (for example, by differentiating voice/video traffic).

       -U,--setuid=USER
              Drop privileges after connecting, to become user USER

       --csd-user=USER
              Drop privileges during execution of trojan binary or script (CSD, TNCC, or HIP).

       --csd-wrapper=SCRIPT
              Run SCRIPT instead of the trojan binary or script.

       --force-trojan=INTERVAL
              Use INTERVAL as interval (in seconds) for repeat execution of Trojan binary or script,  overriding
              default and/or server-set interval.

       -m,--mtu=MTU
              Request MTU from server as the MTU of the tunnel.

       --base-mtu=MTU
              Indicate  MTU  as the path MTU between client and server on the unencrypted network. Newer servers
              will automatically calculate the MTU to be used on the tunnel from this value.

       -p,--key-password=PASS [,--mca-key-password=PASS]
              Provide passphrase for certificate file, or SRK (System Root Key) PIN for TPM

              --mca-key-password provides the passphrase for the secondary certificate (see --mca-certificate).

       -P,--proxy=PROXYURL
              Use HTTP or SOCKS proxy for connection. A username and password can be provided in the given  URL,
              and  will  be used for authentication. If authentication is required but no credentials are given,
              GSSAPI and automatic NTLM authentication using Samba's ntlm_auth helper tool may be attempted.

       --proxy-auth=METHODS
              Use only the specified methods for HTTP authentication to a proxy.  By  default,  only  Negotiate,
              NTLM  and Digest authentication are enabled. Basic authentication is also supported but because it
              is insecure it must be explicitly enabled. The argument is a comma-separated list of methods to be
              enabled. Note that the order does not matter: OpenConnect will use  Negotiate,  NTLM,  Digest  and
              Basic  authentication  in that order, if each is enabled, regardless of the order specified in the
              METHODS string.

       --no-proxy
              Disable use of proxy

       --libproxy
              Use libproxy to configure proxy automatically (when built with libproxy support)

       --key-password-from-fsid
              Passphrase for certificate file is automatically generated from the fsid of  the  file  system  on
              which  it  is stored. The fsid is obtained from the statvfs(2) or statfs(2) system call, depending
              on the operating system. On a Linux or similar system with GNU coreutils, the fsid  used  by  this
              option should be equal to the output of the command:
              stat --file-system --printf=%i\\n $CERTIFICATE
              It is not the same as the 128-bit UUID of the file system.

       -q,--quiet
              Less output

       -Q,--queue-len=LEN
              Set  packet  queue  limit to LEN packets. The default is 32. A high value may allow better overall
              bandwidth but at a cost of latency. If you run Voice over IP or other interactive traffic over the
              VPN, you don't want those packets to be queued behind thousands of other large packets  which  are
              part of a bulk transfer.

              This  option sets the maximum inbound and outbound packet queue sizes in OpenConnect itself, which
              control how many packets will be sent and received in a single batch, as well as  affecting  other
              buffering  such  as  the  socket send buffer (SO_SNDBUF) for network connections and the OS tunnel
              device.

              Ultimately, the right size for a queue is "just enough packets that  it  never  quite  gets  empty
              before  more  are  pushed  to  it".  Any  higher  than  that is simply introducing bufferbloat and
              additional latency with no benefit. With the default of 32, we  are  able  to  saturate  a  single
              Gigabit Ethernet from modest hardware, which is more than enough for most VPN users.

              If OpenConnect is built with vhost-net support, it will only be used if the queue length is set to
              16  or  more.  This  is  because  vhost-net  introduces  a small amount of additional latency, but
              improves total bandwidth quite considerably for those operating at high  traffic  rates.  Thus  it
              makes  sense  to  use  it  when the user has indicated a preference for bandwidth over latency, by
              increasing the queue size.

       -s,--script=SCRIPT
              Invoke SCRIPT to configure the network after connection. Without this, routing  and  name  service
              are unlikely to work correctly. The script is expected to be compatible with the vpnc-script which
              is  shipped with the "vpnc" VPN client. See https://www.infradead.org/openconnect/vpnc-script.html
              for  more  information.  This  version  of  OpenConnect  is  configured  to  use  /usr/share/vpnc-
              scripts/vpnc-script by default.

              On  Windows,  a  relative  directory  for  the default script will be handled as starting from the
              directory that the openconnect executable is running from, rather than the current directory.  The
              script will be invoked with the command-based script host cscript.exe.

       -S,--script-tun
              Pass  traffic  to 'script' program over a UNIX socket, instead of to a kernel tun/tap device. This
              allows the VPN IP traffic to be handled entirely in userspace, for example by a program which uses
              lwIP to provide SOCKS access into the VPN.

       --server=[https://]HOST[:PORT][/PATH]
              Define the VPN server as a simple HOST or as an URL containing the HOST and  optionally  the  PORT
              number  and the PATH; with some protocols, the path may function as a login group or realm, and it
              may equivalently be specified with --usergroup.

              As an alternative, define the VPN server as non-option command line argument.

       -u,--user=NAME
              Set login username to NAME

       -V,--version
              Report version number

       -v,--verbose
              More output (may be specified multiple times for additional output)

       -x,--xmlconfig=CONFIG
              XML config file

       --authgroup=GROUP
              Select GROUP from authentication dropdown or list entry.

              Many VPNs require a selection from a dropdown or list  during  the  authentication  process.  This
              selection  may  be  known  as  authgroup (on Cisco VPNs), realm (Juniper, Pulse, Fortinet), domain
              (F5), and gateway (GlobalProtect).  This option attempts to  automatically  fill  the  appropriate
              protocol-specific field with the desired value.

       --authenticate
              Authenticate  to the VPN, output the information needed to make the connection in a form which can
              be used to set shell environment variables, and then exit.

              When invoked with this option,  OpenConnect  will  not  actually  create  the  VPN  connection  or
              configure a tunnel interface, but if successful will print something like the following to stdout:
              COOKIE='3311180634@13561856@1339425499@B315A0E29D16C6FD92EE...'
              HOST='10.0.0.1'
              CONNECT_URL='https://vpnserver.example.com'
              FINGERPRINT='469bb424ec8835944d30bc77c77e8fc1d8e23a42'
              RESOLVE='vpnserver.example.com:10.0.0.1'
              Thus,  you  can  invoke  openconnect  as  a non-privileged user (with access to the user's PKCS#11
              tokens, etc.)  for authentication, and then invoke  openconnect  separately  to  make  the  actual
              connection as root:
              eval `openconnect --authenticate https://vpnserver.example.com`;
              [ -n ["$COOKIE"] ] && echo ["$COOKIE"] |
                sudo openconnect --cookie-on-stdin $CONNECT_URL --servercert $FINGERPRINT --resolve $RESOLVE

              Earlier  versions  of  OpenConnect  produced only the HOST variable (containing the numeric server
              address), and not the CONNECT_URL or RESOLVE variables. Subsequently, we discovered  that  servers
              behind  proxies may not respond correctly unless the correct DNS name is present in the connection
              phase, and we added support for VPN protocols  where  the  server  URL's  path  component  may  be
              significant  in  the  connection phase, prompting the addition of CONNECT_URL and RESOLVE, and the
              recommendation to use them as described above.  If you are not certain that  you  are  invoking  a
              newer  version  of  OpenConnect  which  outputs  these  variables,  use the following command-line
              (compatible with most Bourne shell derivatives) which will work  with  either  a  newer  or  older
              version:
              sudo openconnect --cookie-on-stdin ${CONNECT_URL:-$HOST} --servercert $FINGERPRINT ${RESOLVE:+--resolve=$RESOLVE}

       --cookieonly
              Fetch and print cookie only; don't connect (this is essentially a subset of --authenticate).

       --printcookie
              Print cookie to stdout before connecting (see --authenticate for the meaning of this cookie)

       --cafile=FILE
              Additional  CA  file  for server verification. By default, this simply causes OpenConnect to trust
              additional  root  CA  certificate(s)  in  addition  to  those   trusted   by   the   system.   Use
              --no-system-trust to prevent OpenConnect from trusting the system default certificate authorities.

       --no-system-trust
              Do not trust the system default certificate authorities. If this option is given, only certificate
              authorities given with the --cafile option, if any, will be trusted automatically.

       --disable-ipv6
              Do not advertise IPv6 capability to server

       --dtls-ciphers=LIST
              Set OpenSSL ciphers to support for DTLS

       --dtls12-ciphers=LIST
              Set OpenSSL ciphers for Cisco's DTLS v1.2

       --dtls-local-port=PORT
              Use PORT as the local port for DTLS and UDP datagrams

       --dump-http-traffic
              Enable  verbose  output  of  all  HTTP  requests and the bodies of all responses received from the
              server.

       --pfs  Enforces Perfect Forward Secrecy (PFS). That  ensures  that  if  the  server's  long-term  key  is
              compromised, any session keys established before the compromise will be unaffected. If this option
              is provided and the server does not support PFS in the TLS channel the connection will fail.

              PFS  is  available in Cisco ASA releases 9.1(2) and higher; a suitable cipher suite may need to be
              manually enabled by the administrator using the ssl encryption setting.

       --no-dtls
              Disable DTLS and ESP

       --no-http-keepalive
              Version 8.2.2.5 of the Cisco ASA software has  a  bug  where  it  will  forget  the  client's  SSL
              certificate  when  HTTP connections are being re-used for multiple requests. So far, this has only
              been seen on the initial connection, where the server gives an HTTP/1.0 redirect response with  an
              explicit Connection: Keep-Alive directive. OpenConnect as of v2.22 has an unconditional workaround
              for this, which is never to obey that directive after an HTTP/1.0 response.

              However,  Cisco's  support team has failed to give any competent response to the bug report and we
              don't know under what other circumstances their bug might manifest itself. So this  option  exists
              to  disable ALL re-use of HTTP sessions and cause a new connection to be made for each request. If
              your server seems not to be  recognizing  your  certificate,  try  this  option.  If  it  makes  a
              difference,  please  report  this information to the openconnect-devel@lists.infradead.org mailing
              list.

       --no-passwd
              Never attempt password (or SecurID) authentication.

       --no-external-auth
              Prevent OpenConnect from advertising to the server that it supports  any  kind  of  authentication
              mode that requires an external browser.

              Some servers will force the client to use such an authentication mode if the client advertises it,
              but  fallback  to  a more "scriptable" authentication mode if the client doesn't appear to support
              it.

       --no-xmlpost
              Do not attempt to post an XML authentication/configuration request to  the  server;  use  the  old
              style GET method which was used by older clients and servers instead.

              This option is a temporary safety net, to work around potential compatibility issues with the code
              which  falls back to the old method automatically. It causes OpenConnect to behave more like older
              versions (4.08 and below) did. If you find that you need to use this option, then you have found a
              bug in OpenConnect. Please see https://www.infradead.org/openconnect/mail.html and report this  to
              the developers.

       --allow-insecure-crypto
              The  ancient,  broken  3DES  and  RC4 ciphers are insecure; we explicitly disable them by default.
              However, some still-in-use VPN servers can't do any better.

              This option enables use of these insecure  ciphers,  as  well  as  the  use  of  SHA1  for  server
              certificate validation.

       --non-inter
              Do not expect user input; exit if it is required.

       --passwd-on-stdin
              Read password from standard input

       --protocol=PROTO
              Select  VPN  protocol  PROTO to be used for the connection. Supported protocols are anyconnect for
              Cisco AnyConnect (the default), nc for experimental support  for  Juniper  Network  Connect  (also
              supported  by  most  Junos/Ivanti  Pulse servers), pulse for experimental support for Junos/Ivanti
              Pulse, gp for experimental support for PAN GlobalProtect, f5 for experimental support for F5  Big-
              IP,  fortinet  for experimental support for Fortinet Fortigate, and array for experimental support
              for Array Networks SSL VPN.

              See https://www.infradead.org/openconnect/protocols.html for details on features and  deficiencies
              of the individual protocols.

              OpenConnect  does  not  yet  support  all of the authentication options used by Pulse, nor does it
              support Host Checker/TNCC with Pulse. If your Junos/Ivanti Pulse VPN is  not  yet  supported  with
              --protocol=pulse, then --protocol=nc may be a useful fallback option.

       --token-mode=MODE
              Enable  one-time  password  generation  using  the  MODE  algorithm.   --token-mode=rsa  will call
              libstoken to generate an RSA SecurID tokencode, --token-mode=totp will generate an RFC 6238  time-
              based  password,  and  --token-mode=hotp  will  generate  an RFC 4226 HMAC-based password. Yubikey
              tokens  which  generate  OATH  codes  in  hardware  are  supported   with   --token-mode=yubioath.
              --token-mode=oidc will use the provided OpenIDConnect token as an RFC 6750 bearer token.

       --token-secret={ SECRET[,COUNTER] | @FILENAME }
              The  secret  to  use  when  generating  one-time  passwords/verification  codes.   Base 32-encoded
              TOTP/HOTP secrets can be used by specifying "base32:" at the beginning of the secret, and for HOTP
              secrets the token counter can be specified following a comma.

              RSA SecurID secrets can be specified as an Android/iPhone URI or a raw numeric CTF string (with or
              without dashes).

              For Yubikey OATH the token secret specifies the  name  of  the  credential  to  be  used.  If  not
              provided, the first OATH credential found on the device will be used.

              For OIDC the secret is the bearer token to be used.

              FILENAME,  if  specified,  can contain any of the above strings.  Or, it can contain a SecurID XML
              (SDTID) seed.

              If this option is omitted, and --token-mode is "rsa", libstoken will try to use the software token
              seed saved in ~/.stokenrc by the "stoken import" command.

       --reconnect-timeout=SECONDS
              After disconnection or Dead Peer Detection, keep trying to reconnect for SECONDS.  The default  is
              300  seconds,  which means that openconnect can recover a VPN connection after a temporary network
              outage lasting up to 300 seconds.

       --resolve=HOST:IP
              Automatically resolve the hostname HOST to IP instead of using the normal resolver to look it up.

       --sni=HOST
              When creating new TLS connections, always present the  hostname  HOST  as  the  SNI  (Server  Name
              Indication) in place of the correct hostname, which will still be sent in the HTTP 'Host:' header,
              and  expect the peer's certificate to match the SNI rather than the correct hostname.  This may be
              useful for Domain Fronting, by which  some  filtered  or  censored  Internet  connections  can  be
              bypassed.

              Note  that  sending different values for the SNI and 'Host:' header violates HTTP standards and is
              prevented by many cloud hosting providers.

       --servercert=HASH
              Accept server's SSL certificate only if it matches the provided fingerprint.  This option  implies
              --no-system-trust,  and  may  be  specified  multiple  times  in order to accept multiple possible
              fingerprints.

              The allowed fingerprint types are SHA1, SHA256, and PIN-SHA256.  They  are  distinguished  by  the
              'sha1:',  'sha256:'  and  'pin-sha256:'  prefixes  to  the  encoded hash. The first two are custom
              identifiers providing hex encoding of the peer's public key, while 'pin-sha256:'  is  the  RFC7469
              key PIN, which utilizes base64 encoding. To ease certain testing use-cases, a partial match of the
              hash will also be accepted, if it is at least 4 characters past the prefix.

       --useragent=STRING
              Use STRING as 'User-Agent:' field value in HTTP header.

              Some  VPN  servers  may  require specific values matching those sent by proprietary VPN clients in
              order to successfully authenticate or connect. For example, when connecting to a Cisco VPN server,
              --useragent 'AnyConnect Windows 4.10.06079' or --useragent 'Cisco AnyConnect VPN Agent for Windows
              2.2.0133', or when connecting to a Pulse server, --useragent 'Pulse-Secure/9.1.11.6725'.

       --version-string=STRING
              Use STRING as the software version reported to the head end.  (e.g. --version-string '2.2.0133')

       --local-hostname=STRING
              Use STRING as 'X-CSTP-Hostname:' field value in HTTP header. For example --local-hostname  'mypc',
              will advertise the value 'mypc' as the suggested hostname to point to the provided IP address.

       --os=STRING
              OS  type  to  report to gateway.  Recognized values are: linux, linux-64, win, mac-intel, android,
              apple-ios.  Reporting a different OS type may affect the dynamic access policy  (DAP)  applied  to
              the  VPN  session.   If  the gateway requires CSD, it will also cause the corresponding CSD trojan
              binary to be downloaded, so you may need to use --csd-wrapper if this code is  not  executable  on
              the local machine.

SIGNALS

       In the data phase of the connection, the following signals are handled:

       SIGINT / SIGTERM
              performs  a clean shutdown by logging the session off, disconnecting from the gateway, and running
              the vpnc-script to restore the network configuration.

       SIGHUP disconnects from the gateway and runs the vpnc-script, but does not  log  the  session  off;  this
              allows for reconnection later using --cookie.

       SIGUSR1
              writes progress message with detailed connection information and statistics.

       SIGUSR2
              forces  an  immediate disconnection and reconnection; this can be used to quickly recover from LAN
              IP address changes.

LIMITATIONS

       See https://www.infradead.org/openconnect/contribute.html for various features that we  wish  OpenConnect
       had,   and   https://www.infradead.org/openconnect/protocols.html  for  information  on  the  quirks  and
       limitations of the individual VPN protocols.

SEE ALSO

       ocserv(8)

AUTHORS

       David Woodhouse <dwmw2@infradead.org>

                                                                                                  OPENCONNECT(8)