Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
STRONGSWAN.CONF(5)		  strongSwan		    STRONGSWAN.CONF(5)

NAME
       strongswan.conf - strongSwan configuration file

DESCRIPTION
       While  the  ipsec.conf(5)  configuration	 file is well suited to	define
       IPsec related configuration parameters, it  is  not  useful  for	 other
       strongSwan  applications	 to  read options from this file.  The file is
       hard to parse and only ipsec starter is capable of  doing  so.  As  the
       number  of components of	the strongSwan project is continually growing,
       a more flexible configuration file was needed, one that is easy to  ex-
       tend  and  can  be  used	 by  all  components.  With  strongSwan	 4.2.1
       strongswan.conf(5) was introduced which meets these requirements.

SYNTAX
       The format of the strongswan.conf file consists	of  hierarchical  sec-
       tions and a list	of key/value pairs in each section. Each section has a
       name,  followed	by  C-Style  curly brackets defining the section body.
       Each section body contains a set	of subsections and key/value pairs:

	    settings :=	(section|keyvalue)*
	    section  :=	name { settings	}
	    keyvalue :=	key = value\n

       Values must be terminated by a newline.

       Comments	are possible using the #-character.

       Section names and keys may contain any printable	character except:

	    . ,	: { } =	" # \n \t space

       An example file in this format might look like this:

	    a =	b
	    section-one	{
		 somevalue = asdf
		 subsection {
		      othervalue = xxx
		 }
		 # yei,	a comment
		 yetanother = zz
	    }
	    section-two	{
		 x = 12
	    }

       Indentation is optional,	you may	use tabs or spaces.

NUMBER FORMATS
       Options that define an integer value can	be specified as	 decimal  (the
       default)	 or  hexadecimal ("0x" prefix, upper- or lowercase letters are
       accepted).  Locale-dependent strings (e.g. the thousands	 separator  of
       the current locale) may also be accepted	in locales other than "C".

       Options	that define a floating-point value can be specified as decimal
       (the default) or	hexadecimal ("0x" prefix, upper- or lowercase  letters
       are  accepted).	The radix character (decimal separator)	in either case
       is locale-dependent, usually ".".

TIME FORMATS
       Unless stated otherwise,	options	that define a time  are	 specified  in
       seconds.	  The  "s", "m", "h" and "d" suffixes may be used to automati-
       cally convert values given in seconds, minutes, hours or	days (for  in-
       stance,	instead	of configuring a rekey time of 4 hours as "14400" sec-
       onds, "4h" may be used).

       There are some global options that don't	accept these suffixes as  they
       are configured as integer values	in seconds or milliseconds, or even as
       floating-point  numbers (e.g. the retransmission	timeout). Options that
       accept the suffixes have	a corresponding	default	value.

REFERENCING OTHER SECTIONS
       It is possible to inherit settings and sections from  another  section.
       This feature is mainly useful in	swanctl.conf (which uses the same file
       format).	 The syntax is as follows:

	    section    := name : references { settings }
	    references := absname[, absname]*
	    absname    := name[.name]*

       All key/value pairs and all subsections of the referenced sections will
       be  inherited  by  the  section that references them via	their absolute
       name. Values may	be overridden in the section or	any  of	 its  sub-sec-
       tions  (use  an empty assignment	to clear a value so its	default	value,
       if any, will apply). It is currently not	possible to limit  the	inclu-
       sion level or clear/remove inherited sub-sections.

       If  the	order  is  important (e.g. for auth rounds in a	connection, if
       round is	not used), it should be	noted that inherited settings/sections
       will follow those defined in the	current	section	(if multiple  sections
       are referenced, their settings are enumerated left to right).

       References  are	evaluated dynamically at runtime, so referring to sec-
       tions later in the config file or included via other files is no	 prob-
       lem.

       Here is an example of how this might look like:

	    conn-defaults {
		 # default settings for	all conns (e.g.	a cert,	or IP pools)
	    }
	    eap-defaults {
		 # defaults if eap is used (e.g. a remote auth round)
	    }
	    child-defaults {
		 # defaults for	child configs (e.g. traffic selectors)
	    }
	    connections	{
		 conn-a	: conn-defaults, eap-defaults {
		      #	set/override stuff specific to this connection
		      children {
			   child-a : child-defaults {
				# set/override stuff specific to this child
			   }
		      }
		 }
		 conn-b	: conn-defaults	{
		      #	set/override stuff specific to this connection
		      children {
			   child-b : child-defaults {
				# set/override stuff specific to this child
			   }
		      }
		 }
		 conn-c	: connections.conn-a {
		      #	everything is inherited, including everything conn-a
		      #	already	inherits from the sections it and its
		      #	sub-section reference
		 }
	    }

INCLUDING FILES
       Using  the include statement it is possible to include other files into
       strongswan.conf,	e.g.

	    include /some/path/*.conf

       If the file name	is not an absolute path, it is considered to be	 rela-
       tive to the directory of	the file containing the	include	statement. The
       file  name  may include shell wildcards (see sh(1)).  Also, such	inclu-
       sions can be nested.

       Sections	loaded from included files extend previously loaded  sections;
       already	existing  values  are  replaced.  It is	important to note that
       settings	are added relative to the section the include statement	is in.

       As an example, the following three files	result in the same final  con-
       fig as the one given above:

	    a =	b
	    section-one	{
		 somevalue = before include
		 include include.conf
	    }
	    include other.conf

       include.conf:
	    # settings loaded from this	file are added to section-one
	    # the following replaces the previous value
	    somevalue =	asdf
	    subsection {
		 othervalue = yyy
	    }
	    yetanother = zz

       other.conf:
	    # this extends section-one and subsection
	    section-one	{
		 subsection {
		      #	this replaces the previous value
		      othervalue = xxx
		 }
	    }
	    section-two	{
		 x = 12
	    }

READING	VALUES
       Values are accessed using a dot-separated section list and a key.  With
       reference to the	example	above, accessing section-one.subsection.other-
       value will return xxx.

DEFINED	KEYS
       The  following keys are currently defined (using	dot notation). The de-
       fault value (if any) is listed in brackets after	the key.

       aikgen.load []
	      Plugins to load in ipsec aikgen tool.

       attest.database []
	      File measurement information database  URI.  If  it  contains  a
	      password,	make sure to adjust the	permissions of the config file
	      accordingly.

       attest.load []
	      Plugins to load in ipsec attest tool.

       charon
	      Options for the charon IKE daemon.

	      Note:  Many  of  the  options  in	 this  section	also  apply to
	      charon-cmd and other charon derivatives.	Just use their respec-
	      tive name	(e.g.  charon-cmd instead of charon).	For  many  op-
	      tions defaults can be defined in the libstrongswan section.

       charon.accept_private_algs [no]
	      Deliberately  violate  the  IKE standard's requirement and allow
	      the use of private algorithm identifiers,	even if	the  peer  im-
	      plementation is unknown.

       charon.accept_unencrypted_mainmode_messages [no]
	      Accept unencrypted ID and	HASH payloads in IKEv1 Main Mode.

	      Some  implementations  send  the	third  Main Mode message unen-
	      crypted, probably	to find	the PSKs for the specified ID for  au-
	      thentication.  This  is very similar to Aggressive Mode, and has
	      the same security	implications: A	passive	attacker can sniff the
	      negotiated Identity, and start brute forcing the PSK  using  the
	      HASH payload.

	      It is recommended	to keep	this option to no, unless you know ex-
	      actly  what  the	implications  are and require compatibility to
	      such devices (for	example, some SonicWall	boxes).

       charon.block_threshold [5]
	      Maximum  number  of  half-open  IKE_SAs  (including  unprocessed
	      IKE_SA_INITs) for	a single peer IP.

       charon.cache_crls [no]
	      Whether  Certificate Revocation Lists (CRLs) fetched via HTTP or
	      LDAP should be saved under a unique file name derived  from  the
	      public	key   of   the	 Certification	 Authority   (CA)   to
	      ${sysconfdir}/ipsec.d/crls	      (stroke)		    or
	      ${sysconfdir}/swanctl/x509crl (vici), respectively.

       charon.cert_cache [yes]
	      Whether  relations  in  validated	 certificate  chains should be
	      cached in	memory.

       charon.check_current_path [no]
	      By default, after	detecting any changes to interfaces and/or ad-
	      dresses no action	is taken if the	current	 path  to  the	remote
	      peer  still  looks  usable. Enabling this	option will use	DPD to
	      check if the path	actually still works, or,  for	instance,  the
	      peer  removed  the state after a longer phase without connectiv-
	      ity.  It will also trigger a MOBIKE update if NAT	mappings  were
	      removed during the downtime.

       charon.cisco_flexvpn [no]
	      Send  the	 Cisco FlexVPN vendor ID payload, which	is required in
	      order to make Cisco brand	 devices  allow	 negotiating  a	 local
	      traffic  selector	 (from strongSwan's point of view) that	is not
	      the assigned virtual IP address if such an address is  requested
	      by     strongSwan.  Sending the Cisco FlexVPN vendor ID prevents
	      the peer from narrowing the initiator's local  traffic  selector
	      and  allows  it to e.g. negotiate	a TS of	0.0.0.0/0 == 0.0.0.0/0
	      instead.	This has been tested with a "tunnel mode  ipsec	 ipv4"
	      Cisco template but should	also work for GRE encapsulation.

       charon.cisco_unity [no]
	      Send Cisco Unity vendor ID payload (IKEv1	only).

       charon.close_ike_on_child_failure [no]
	      Close  the  IKE_SA  if setup of the CHILD_SA along with IKE_AUTH
	      failed.

       charon.cookie_threshold [30]
	      Number of	half-open IKE_SAs (including unprocessed IKE_SA_INITs)
	      that activate the	cookie mechanism.

       charon.cookie_threshold_ip [3]
	      Number of	half-open IKE_SAs (including unprocessed IKE_SA_INITs)
	      for a single peer	IP that	activate the cookie  mechanism.

       charon.crypto_test.bench	[no]
	      Benchmark	crypto algorithms and order them by efficiency.

       charon.crypto_test.bench_size [1024]
	      Buffer size used for crypto benchmark.

       charon.crypto_test.bench_time [50]
	      Time in ms during	which crypto  algorithm	 performance  is  mea-
	      sured.

       charon.crypto_test.on_add [no]
	      Test  crypto  algorithms during registration (requires test vec-
	      tors provided by the test-vectors	plugin).

       charon.crypto_test.on_create [no]
	      Test crypto algorithms on	each crypto primitive instantiation.

       charon.crypto_test.required [no]
	      Strictly require at least	one test vector	 to  enable  an	 algo-
	      rithm.

       charon.crypto_test.rng_true [no]
	      Whether  to  test	 RNG  with TRUE	quality; requires a lot	of en-
	      tropy.

       charon.delete_rekeyed [no]
	      Delete CHILD_SAs	right  after  they  got	 successfully  rekeyed
	      (IKEv1 only). Reduces the	number of stale	CHILD_SAs in scenarios
	      with a lot of rekeyings. However,	this might cause problems with
	      implementations  that continue to	use rekeyed SAs	until they ex-
	      pire.

       charon.delete_rekeyed_delay [5]
	      Delay in seconds until  inbound  IPsec  SAs  are	deleted	 after
	      rekeyings	 (IKEv2	 only).	To process delayed packets the inbound
	      part of a	CHILD_SA is kept installed up to the configured	number
	      of seconds after it got replaced during a	rekeying. If set to  0
	      the  CHILD_SA  will  be  kept  installed until it	expires	(if no
	      lifetime is set it will be destroyed immediately).

       charon.dh_exponent_ansi_x9_42 [yes]
	      Use ANSI X9.42 DH	exponent size or optimum size matched to cryp-
	      tographic	strength.

       charon.dlopen_use_rtld_now [no]
	      Use RTLD_NOW with	dlopen when loading plugins  and  IMV/IMCs  to
	      reveal missing symbols immediately.

       charon.dns1 []
	      DNS server assigned to peer via configuration payload (CP).

       charon.dns2 []
	      DNS server assigned to peer via configuration payload (CP).

       charon.dos_protection [yes]
	      Enable  Denial  of  Service protection using cookies and aggres-
	      siveness checks.

       charon.filelog
	      Section to define	file  loggers,	see  LOGGER  CONFIGURATION  in
	      strongswan.conf(5).

       charon.filelog.<name>
	      <name>  may be the full path to the log file if it only contains
	      characters permitted in section names. Is	 ignored  if  path  is
	      specified.

       charon.filelog.<name>.<subsystem> [<default>]
	      Loglevel for a specific subsystem.

       charon.filelog.<name>.append [yes]
	      If this option is	enabled	log entries are	appended to the	exist-
	      ing file.

       charon.filelog.<name>.default [1]
	      Specifies	 the  default  loglevel	 to be used for	subsystems for
	      which no specific	loglevel is defined.

       charon.filelog.<name>.flush_line	[no]
	      Enabling this option disables block buffering and	 enables  line
	      buffering.

       charon.filelog.<name>.ike_name [no]
	      Prefix  each log entry with the connection name and a unique nu-
	      merical identifier for each IKE_SA.

       charon.filelog.<name>.log_level [no]
	      Add the log level	of each	 message  after	 the  subsystem	 (e.g.
	      [IKE2]).

       charon.filelog.<name>.path []
	      Optional	path to	the log	file. Overrides	the section name. Must
	      be used if the path contains characters that aren't  allowed  in
	      section names.

       charon.filelog.<name>.time_add_ms [no]
	      Adds  the	milliseconds within the	current	second after the time-
	      stamp (separated by a dot, so time_format	should end with	%S  or
	      %T).

       charon.filelog.<name>.time_format []
	      Prefix  each  log	 entry	with a timestamp. The option accepts a
	      format string as passed to strftime(3).

       charon.flush_auth_cfg [no]
	      If enabled objects  used	during	authentication	(certificates,
	      identities  etc.)	 are released to free memory once an IKE_SA is
	      established. Enabling this  might	 conflict  with	 plugins  that
	      later need access	to e.g.	the used certificates.

       charon.follow_redirects [yes]
	      Whether to follow	IKEv2 redirects	(RFC 5685).

       charon.force_eap_only_authentication [no]
	      Violate  RFC  5998  and  use EAP-only authentication even	if the
	      peer did	not  send  an  EAP_ONLY_AUTHENTICATION	notify	during
	      IKE_AUTH.

       charon.fragment_size [1280]
	      Maximum  size (complete IP datagram size in bytes) of a sent IKE
	      fragment when using  proprietary	IKEv1  or  standardized	 IKEv2
	      fragmentation,  defaults	to 1280	(use 0 for address family spe-
	      cific default values, which uses a lower value  for  IPv4).   If
	      specified	this limit is used for both IPv4 and IPv6.

       charon.group []
	      Name of the group	the daemon changes to after startup.

       charon.half_open_timeout	[30]
	      Timeout  in seconds for connecting IKE_SAs (also see IKE_SA_INIT
	      DROPPING).

       charon.hash_and_url [no]
	      Enable hash and URL support.

       charon.host_resolver.max_threads	[3]
	      Maximum number of	concurrent resolver threads (they  are	termi-
	      nated if unused).

       charon.host_resolver.min_threads	[0]
	      Minimum number of	resolver threads to keep around.

       charon.i_dont_care_about_security_and_use_aggressive_mode_psk [no]
	      If  enabled  responders are allowed to use IKEv1 Aggressive Mode
	      with pre-shared keys, which is discouraged due to	security  con-
	      cerns  (offline  attacks	on  the	openly transmitted hash	of the
	      PSK).

       charon.ignore_acquire_ts	[no]
	      If this is disabled the traffic selectors	from the kernel's  ac-
	      quire  events, which are derived from the	triggering packet, are
	      prepended	to the traffic selectors from  the  configuration  for
	      IKEv2 connection.	By enabling this, such specific	traffic	selec-
	      tors  will  be  ignored  and only	the ones in the	config will be
	      sent. This always	happens	for IKEv1 connections as the  protocol
	      only supports one	set of traffic selectors per CHILD_SA.

       charon.ignore_routing_tables []
	      A	 space-separated  list	of  routing tables to be excluded from
	      route lookups.

       charon.ikesa_limit [0]
	      Maximum number of	IKE_SAs	that can be established	 at  the  same
	      time before new connection attempts are blocked.

       charon.ikesa_table_segments [1]
	      Number of	exclusively locked segments in the hash	table.

       charon.ikesa_table_size [1]
	      Size of the IKE_SA hash table.

       charon.imcv
	      Defaults	for  options  in this section can be configured	in the
	      libimcv section.

       charon.imcv.assessment_result [yes]
	      Whether IMVs send	a standard IETF	Assessment Result attribute.

       charon.imcv.database []
	      Global IMV policy	database URI. If it contains a password,  make
	      sure to adjust the permissions of	the config file	accordingly.

       charon.imcv.os_info.default_password_enabled [no]
	      Manually set whether a default password is enabled

       charon.imcv.os_info.name	[]
	      Manually set the name of the client OS (e.g. Ubuntu).

       charon.imcv.os_info.version []
	      Manually set the version of the client OS	(e.g. 12.04 i686).

       charon.imcv.policy_script [ipsec	_imv_policy]
	      Script called for	each TNC connection to generate	IMV policies.

       charon.inactivity_close_ike [no]
	      Whether to close IKE_SA if the only CHILD_SA closed due to inac-
	      tivity.

       charon.init_limit_half_open [0]
	      Limit  new  connections based on the current number of half open
	      IKE_SAs, see IKE_SA_INIT DROPPING	in strongswan.conf(5).

       charon.init_limit_job_load [0]
	      Limit new	connections based on  the  number  of  jobs  currently
	      queued for processing (see IKE_SA_INIT DROPPING).

       charon.initiator_only [no]
	      Causes charon daemon to ignore IKE initiation requests.

       charon.install_routes [yes]
	      Install  routes  into  a	separate routing table for established
	      IPsec tunnels.

       charon.install_virtual_ip [yes]
	      Install virtual IP addresses.

       charon.install_virtual_ip_on []
	      The name of the interface	on which virtual IP  addresses	should
	      be  installed.  If not specified the addresses will be installed
	      on the outbound interface.

       charon.integrity_test [no]
	      Check daemon, libstrongswan and plugin integrity at startup.

       charon.interfaces_ignore	[]
	      A	comma-separated	list of	network	interfaces that	should be  ig-
	      nored, if	interfaces_use is specified this option	has no effect.

       charon.interfaces_use []
	      A	comma-separated	list of	network	interfaces that	should be used
	      by charon. All other interfaces are ignored.

       charon.keep_alive [20s]
	      NAT keep alive interval.

       charon.keep_alive_dpd_margin [0s]
	      Number of	seconds	the keep alive interval	may be exceeded	before
	      a	 DPD is	sent instead of	a NAT keep alive (0 to disable).  This
	      is only useful if	a clock	is used	that includes time spent  sus-
	      pended (e.g. CLOCK_BOOTTIME).

       charon.leak_detective.detailed [yes]
	      Includes	source	file  names and	line numbers in	leak detective
	      output.

       charon.leak_detective.usage_threshold [10240]
	      Threshold	in bytes for allocations to be included	in  usage  re-
	      ports (0 to include all).

       charon.leak_detective.usage_threshold_count [0]
	      Threshold	 in  number  of	 allocations for allocations to	be in-
	      cluded in	usage reports (0 to include all).

       charon.load []
	      Plugins to load in the IKE daemon	charon.

       charon.load_modular [no]
	      If enabled, the list of plugins to load is  determined  via  the
	      value of the charon.plugins._name_.load options.	In addition to
	      a	 simple	boolean	flag that option may take an integer value in-
	      dicating the priority of a plugin, which would influence the or-
	      der of a plugin in the plugin list (the default is  1).  If  two
	      plugins have the same priority their order in the	default	plugin
	      list  is	preserved.  Enabled plugins not	found in that list are
	      ordered alphabetically before other plugins with the same	prior-
	      ity.

       charon.make_before_break	[no]
	      Initiate IKEv2 reauthentication with a make-before-break instead
	      of a break-before-make scheme. Make-before-break	uses  overlap-
	      ping  IKE	and CHILD_SA during reauthentication by	first recreat-
	      ing all new SAs before deleting the old ones. This behavior  can
	      be  beneficial  to  avoid	connectivity gaps during reauthentica-
	      tion, but	requires support for  overlapping  SAs	by  the	 peer.
	      strongSwan can handle such overlapping SAs since version 5.3.0.

       charon.max_ikev1_exchanges [3]
	      Maximum  number  of  IKEv1  phase	2 exchanges per	IKE_SA to keep
	      state about and track concurrently.

       charon.max_packet [10000]
	      Maximum packet size accepted by charon.

       charon.multiple_authentication [yes]
	      Enable multiple authentication exchanges (RFC 4739).

       charon.nbns1 []
	      WINS servers assigned to peer via	configuration payload (CP).

       charon.nbns2 []
	      WINS servers assigned to peer via	configuration payload (CP).

       charon.ocsp_nonce_len [32]
	      Length of	nonces in OCSP requests. According to RFC 8954,	 valid
	      values  are  between  1 and 32, with new clients required	to use
	      32. Some servers might not support that so lowering the value to
	      e.g. 16 might be necessary.

       charon.plugins.addrblock.depth [-1]
	      RFC3779 requires that all	addrblocks claimed  by	a  certificate
	      must  be contained in the	addrblock extension of the issuer cer-
	      tificate,	up to the root CA. The default depth setting of	-1 en-
	      forces this.

	      In practice, third party (root) CAs may not contain  the	exten-
	      sion, making the addrblock extension unusable under such CAs. By
	      limiting	the  validation	 depth,	only a certain level of	issuer
	      certificates are validated for proper  addrblock	extensions:  A
	      depth  of	 0 does	not check any issuer certificate extensions, a
	      depth of 1 only the direct issuer	of the end entity  certificate
	      is checkend, and so on.

       charon.plugins.addrblock.strict [yes]
	      If set to	yes, a subject certificate without an addrblock	exten-
	      sion is rejected if the issuer certificate has such an addrblock
	      extension. If set	to no, subject certificates issued without the
	      addrblock	 extension  are	 accepted without any traffic selector
	      checks and no policy is enforced by the plugin.

       charon.plugins.android_log.loglevel [1]
	      Loglevel for logging to Android specific logger.

       charon.plugins.attr
	      Section to specify arbitrary attributes that are assigned	 to  a
	      peer via configuration payload (CP).

       charon.plugins.attr.<attr> []
	      <attr>  can be either address, netmask, dns, nbns, dhcp, subnet,
	      split-include, split-exclude or the numeric  identifier  of  the
	      attribute	 type. The assigned value can be an IPv4/IPv6 address,
	      a	subnet in CIDR notation	or an arbitrary	value depending	on the
	      attribute	type.  For some	attribute types	multiple values	may be
	      specified	as a comma separated list.

       charon.plugins.attr-sql.crash_recovery [yes]
	      Release all online leases	during startup.	 Disable this to share
	      the DB between multiple VPN gateways.

       charon.plugins.attr-sql.database	[]
	      Database URI for attr-sql	plugin used by charon. If it  contains
	      a	 password,  make  sure to adjust the permissions of the	config
	      file accordingly.

       charon.plugins.attr-sql.lease_history [yes]
	      Enable logging of	SQL IP pool leases.

       charon.plugins.bliss.use_bliss_b	[yes]
	      Use the enhanced BLISS-B key generation and signature algorithm.

       charon.plugins.botan.internal_rng_only [no]
	      If enabled, only Botan's internal	RNG will  be  used  throughout
	      the  plugin.  Otherwise, and if supported	by Botan, rng_t	imple-
	      mentations provided by other loaded plugins will be used as RNG.

       charon.plugins.bypass-lan.interfaces_ignore []
	      A	comma-separated	list of	network	interfaces for which connected
	      subnets should be	ignored, if interfaces_use is  specified  this
	      option has no effect.

       charon.plugins.bypass-lan.interfaces_use	[]
	      A	comma-separated	list of	network	interfaces for which connected
	      subnets should be	considered. All	other interfaces are ignored.

       charon.plugins.certexpire.csv.cron []
	      Cron style string	specifying CSV export times.

       charon.plugins.certexpire.csv.empty_string []
	      String to	use in empty intermediate CA fields.

       charon.plugins.certexpire.csv.fixed_fields [yes]
	      Use a fixed intermediate CA field	count.

       charon.plugins.certexpire.csv.force [yes]
	      Force export of all trustchains we have a	private	key for.

       charon.plugins.certexpire.csv.format [%d:%m:%Y]
	      strftime(3) format string	to export expiration dates as.

       charon.plugins.certexpire.csv.local []
	      strftime(3)  format string for the CSV file name to export local
	      certificates to.

       charon.plugins.certexpire.csv.remote []
	      strftime(3) format string	for the	CSV file name to export	remote
	      certificates to.

       charon.plugins.certexpire.csv.separator [,]
	      CSV field	separator.

       charon.plugins.coupling.file []
	      File to store coupling list to.

       charon.plugins.coupling.hash [sha1]
	      Hashing algorithm	to fingerprint coupled certificates.

       charon.plugins.coupling.max [1]
	      Maximum number of	coupling entries to create.

       charon.plugins.curl.redir [-1]
	      Maximum number of	redirects followed by the plugin, set to 0  to
	      disable following	redirects, set to -1 for no limit.

       charon.plugins.curl.tls_backend []
	      The  SSL/TLS backend to configure	in curl	if multiple are	avail-
	      able (requires libcurl 7.56 or newer). A list of	available  op-
	      tions is logged on level 2 if nothing is configured. Similar but
	      on level 1 if the	selected backend isn't available.

       charon.plugins.dhcp.force_server_address	[no]
	      Always  use the configured server	address. This might be helpful
	      if the DHCP server runs on the same host as strongSwan, and  the
	      DHCP  daemon does	not listen on the loopback interface.  In that
	      case  the	 server	 cannot	 be  reached  via  unicast  (or	  even
	      255.255.255.255)	as  that would be routed via loopback. Setting
	      this option to yes and configuring the local  broadcast  address
	      (e.g.  192.168.0.255) as server address might work.

       charon.plugins.dhcp.identity_lease [no]
	      Derive  user-defined  MAC	 address from hash of IKE identity and
	      send client identity DHCP	option.

       charon.plugins.dhcp.interface []
	      Interface	name the plugin	uses for address allocation.  The  de-
	      fault  is	 to  bind  to  any (0.0.0.0) and let the system	decide
	      which way	to route the packets to	the DHCP server.

       charon.plugins.dhcp.server [255.255.255.255]
	      DHCP server unicast or broadcast IP address.

       charon.plugins.dhcp.use_server_port [no]
	      Use the DHCP server port (67) as source  port,  instead  of  the
	      DHCP  client port	(68), when a unicast server address is config-
	      ured and the plugin acts as relay	agent.	When replying in  this
	      mode the DHCP server will	always send packets to the DHCP	server
	      port and if no process binds that	port an	ICMP port unreachables
	      will  be	sent  back,  which  might be problematic for some DHCP
	      servers.	To avoid that, enabling	this  option  will  cause  the
	      plugin  to  bind	the DHCP server	port to	send its requests when
	      acting as	relay agent. This is not necessary if a	DHCP server is
	      already running on the same host and might even cause  conflicts
	      (and since the server port is already bound, ICMPs should	not be
	      an issue).

       charon.plugins.dnscert.enable [no]
	      Enable fetching of CERT RRs via DNS.

       charon.plugins.drbg.max_drbg_requests [4294967294]
	      Number of	pseudo-random bit requests from	the DRBG before	an au-
	      tomatic reseeding	occurs.

       charon.plugins.duplicheck.enable	[yes]
	      Enable duplicheck	plugin (if loaded).

       charon.plugins.duplicheck.socket	[unix://${piddir}/charon.dck]
	      Socket provided by the duplicheck	plugin.

       charon.plugins.eap-aka.request_identity [yes]

       charon.plugins.eap-aka-3gpp.seq_check []
	      Enable to	activate sequence check	of the AKA SQN values in order
	      to trigger resync	cycles.

       charon.plugins.eap-aka-3gpp2.seq_check []
	      Enable to	activate sequence check	of the AKA SQN values in order
	      to trigger resync	cycles.

       charon.plugins.eap-dynamic.prefer_user [no]
	      If  enabled  the EAP methods proposed in an EAP-Nak message sent
	      by the peer are preferred	over the methods registered locally.

       charon.plugins.eap-dynamic.preferred []
	      The preferred EAP	method(s) to be	used.  If it is	not given  the
	      first registered method will be used initially.  If a comma sep-
	      arated  list  is	given the methods are tried in the given order
	      before trying the	rest of	the registered methods.

       charon.plugins.eap-gtc.backend [pam]
	      XAuth backend to be used for credential verification.

       charon.plugins.eap-peap.fragment_size [1024]
	      Maximum size of an EAP-PEAP packet.

       charon.plugins.eap-peap.include_length [no]
	      Include length in	non-fragmented EAP-PEAP	packets.

       charon.plugins.eap-peap.max_message_count [32]
	      Maximum number of	processed EAP-PEAP packets (0 =	no limit).

       charon.plugins.eap-peap.phase2_method [mschapv2]
	      Phase2 EAP client	authentication method.

       charon.plugins.eap-peap.phase2_piggyback	[no]
	      Phase2 EAP Identity request piggybacked by server	onto TLS  Fin-
	      ished  message,  relevant	 only if TLS 1.2 or earlier is negoti-
	      ated.

       charon.plugins.eap-peap.phase2_tnc [no]
	      Start phase2 EAP TNC protocol after successful client  authenti-
	      cation.

       charon.plugins.eap-peap.request_peer_auth [no]
	      Request peer authentication based	on a client certificate.

       charon.plugins.eap-radius.accounting [no]
	      Send RADIUS accounting information to RADIUS servers.

       charon.plugins.eap-radius.accounting_close_on_timeout [yes]
	      Close the	IKE_SA if there	is a timeout during interim RADIUS ac-
	      counting updates.

       charon.plugins.eap-radius.accounting_interval [0s]
	      Interval	in  seconds  for interim RADIUS	accounting updates, if
	      not specified by the RADIUS server in the	Access-Accept message.

       charon.plugins.eap-radius.accounting_requires_vip [no]
	      If enabled, accounting is	disabled unless	an IKE_SA has at least
	      one virtual IP.  Only for	IKEv2,	for  IKEv1  a  virtual	IP  is
	      strictly necessary.

       charon.plugins.eap-radius.accounting_send_class [no]
	      If  enabled, adds	the Class attributes received in Access-Accept
	      message to the RADIUS accounting messages.

       charon.plugins.eap-radius.class_group [no]
	      Use the class attribute sent in  the  RADIUS-Accept  message  as
	      group  membership	 information  that  is	compared to the	groups
	      specified	in the rightgroups option in ipsec.conf(5).

       charon.plugins.eap-radius.close_all_on_timeout [no]
	      Closes all IKE_SAs if communication with the RADIUS server times
	      out. If it is not	set only the current IKE_SA is closed.

       charon.plugins.eap-radius.dae.enable [no]
	      Enables support for the  Dynamic	Authorization  Extension  (RFC
	      5176).

       charon.plugins.eap-radius.dae.listen [0.0.0.0]
	      Address to listen	for DAE	messages from the RADIUS server.

       charon.plugins.eap-radius.dae.port [3799]
	      Port to listen for DAE requests.

       charon.plugins.eap-radius.dae.secret []
	      Shared  secret  used  to	verify/sign DAE	messages. If set, make
	      sure to adjust the permissions of	the config file	accordingly.

       charon.plugins.eap-radius.eap_start [no]
	      Send EAP-Start instead of	EAP-Identity to	start RADIUS conversa-
	      tion.

       charon.plugins.eap-radius.filter_id [no]
	      If the RADIUS tunnel_type	attribute with value ESP is  received,
	      use the filter_id	attribute sent in the RADIUS-Accept message as
	      group  membership	 information  that  is	compared to the	groups
	      specified	in the rightgroups option in ipsec.conf(5).

       charon.plugins.eap-radius.forward.ike_to_radius []
	      RADIUS attributes	to be forwarded	from IKEv2 to RADIUS  (can  be
	      defined  by  name	 or  attribute	number,	a colon	can be used to
	      specify vendor-specific attributes, e.g. Reply-Message,  or  11,
	      or 36906:12).

       charon.plugins.eap-radius.forward.radius_to_ike []
	      Same as charon.plugins.eap-radius.forward.ike_to_radius but from
	      RADIUS to	IKEv2, a strongSwan specific private notify (40969) is
	      used to transmit the attributes.

       charon.plugins.eap-radius.id_prefix []
	      Prefix  to  EAP-Identity,	 some AAA servers use a	IMSI prefix to
	      select the EAP method.

       charon.plugins.eap-radius.nas_identifier	[strongSwan]
	      NAS-Identifier to	include	in RADIUS messages.

       charon.plugins.eap-radius.port [1812]
	      Port of RADIUS server (authentication).

       charon.plugins.eap-radius.retransmit_base [1.4]
	      Base to use for calculating exponential back off.

       charon.plugins.eap-radius.retransmit_timeout [2.0]
	      Timeout in seconds before	sending	first retransmit.

       charon.plugins.eap-radius.retransmit_tries [4]
	      Number of	times to retransmit a packet before giving up.

       charon.plugins.eap-radius.secret	[]
	      Shared secret between RADIUS and NAS. If set, make sure  to  ad-
	      just the permissions of the config file accordingly.

       charon.plugins.eap-radius.server	[]
	      IP/Hostname of RADIUS server.

       charon.plugins.eap-radius.servers
	      Section  to specify multiple RADIUS servers. The nas_identifier,
	      secret, sockets and port (or auth_port) options can be specified
	      for each server. A server's IP/Hostname can be configured	 using
	      the  address option.  The	acct_port [1813] option	can be used to
	      specify the port used for	RADIUS	accounting.  For  each	RADIUS
	      server  a	priority can be	specified using	the preference [0] op-
	      tion. The	retransmission time for	each server can	set set	 using
	      retransmit_base, retransmit_timeout and retransmit_tries.

       charon.plugins.eap-radius.sockets [1]
	      Number of	sockets	(ports)	to use,	increase for high load.

       charon.plugins.eap-radius.station_id_with_port [yes]
	      Whether  to include the UDP port in the Called- and Calling-Sta-
	      tion-Id RADIUS attributes.

       charon.plugins.eap-radius.xauth
	      Section to configure multiple XAuth  authentication  rounds  via
	      RADIUS. The subsections define so	called authentication profiles
	      with  arbitrary names. In	each profile section one or more XAuth
	      types can	be configured, with an assigned	message. For each type
	      a	separate XAuth exchange	will be	initiated and all replies  get
	      concatenated  into  the User-Password attribute, which then gets
	      verified over RADIUS.

	      Available	XAuth types are	password, passcode, nextpin,  and  an-
	      swer.   This  type  is  not  relevant  to	 strongSwan or the AAA
	      server, but the client may show a	different dialog  (along  with
	      the configured message).

	      To  use  the  configured profiles, they have to be configured in
	      the respective connection	in ipsec.conf(5) by appending the pro-
	      file name, separated by a	 colon,	 to  the  xauth-radius	XAauth
	      backend  configuration in	rightauth or rightauth2, for instance,
	      rightauth2=xauth-radius:profile.

       charon.plugins.eap-sim.request_identity [yes]

       charon.plugins.eap-simaka-sql.database []

       charon.plugins.eap-simaka-sql.remove_used [no]

       charon.plugins.eap-tls.fragment_size [1024]
	      Maximum size of an EAP-TLS packet.

       charon.plugins.eap-tls.include_length [yes]
	      Include length in	non-fragmented EAP-TLS packets.

       charon.plugins.eap-tls.max_message_count	[32]
	      Maximum number of	processed EAP-TLS packets (0 = no limit).

       charon.plugins.eap-tnc.max_message_count	[10]
	      Maximum number of	processed EAP-TNC packets (0 = no limit).

       charon.plugins.eap-tnc.protocol [tnccs-2.0]
	      IF-TNCCS protocol	version	 to  be	 used  (tnccs-1.1,  tnccs-2.0,
	      tnccs-dynamic).

       charon.plugins.eap-ttls.fragment_size [1024]
	      Maximum size of an EAP-TTLS packet.

       charon.plugins.eap-ttls.include_length [yes]
	      Include length in	non-fragmented EAP-TTLS	packets.

       charon.plugins.eap-ttls.max_message_count [32]
	      Maximum number of	processed EAP-TTLS packets (0 =	no limit).

       charon.plugins.eap-ttls.phase2_method [md5]
	      Phase2 EAP client	authentication method.

       charon.plugins.eap-ttls.phase2_piggyback	[no]
	      Phase2  EAP Identity request piggybacked by server onto TLS Fin-
	      ished message.

       charon.plugins.eap-ttls.phase2_tnc [no]
	      Start phase2 EAP TNC protocol after successful client  authenti-
	      cation.

       charon.plugins.eap-ttls.phase2_tnc_method [pt]
	      Phase2 EAP TNC transport protocol	(pt as IETF standard or	legacy
	      tnc)

       charon.plugins.eap-ttls.request_peer_auth [no]
	      Request peer authentication based	on a client certificate.

       charon.plugins.error-notify.socket [unix://${piddir}/charon.enfy]
	      Socket provided by the error-notify plugin.

       charon.plugins.ext-auth.script []
	      Command  to pass to the system shell for peer authorization. Au-
	      thorization is considered	successful  if	the  command  executes
	      normally	with  an  exit	code of	zero. For all other exit codes
	      IKE_SA authorization is rejected.

	      The following environment	variables get passed  to  the  script:
	      IKE_UNIQUE_ID:   The   IKE_SA   numerical	  unique   identifier.
	      IKE_NAME:	 The  peer  configuration  connection  name.   IKE_LO-
	      CAL_HOST:	 Local IKE IP address.	IKE_REMOTE_HOST: Remote	IKE IP
	      address.	IKE_LOCAL_ID: Local IKE	identity.  IKE_REMOTE_ID:  Re-
	      mote IKE identity.  IKE_REMOTE_EAP_ID: Remote EAP	or XAuth iden-
	      tity, if used.

       charon.plugins.forecast.groups
       [224.0.0.1,224.0.0.22,224.0.0.251,224.0.0.252,239.255.255.250]
	      Comma  separated	list  of multicast groups to join locally. The
	      local host receives and forwards packets in the  local  LAN  for
	      joined multicast groups only.  Packets matching the list of mul-
	      ticast  groups  get  forwarded to	connected clients. The default
	      group  includes  host  multicasts,   IGMP,   mDNS,   LLMNR   and
	      SSDP/WS-Discovery,  and  is  usually  a  good choice for Windows
	      clients.

       charon.plugins.forecast.interface []
	      Name of the local	interface to listen for	broadcasts messages to
	      forward. If no interface is configured, the first	usable	inter-
	      face is used, which is usually just fine for single-homed	hosts.
	      If your host has multiple	interfaces, set	this option to the lo-
	      cal LAN interface	you want to forward broadcasts from/to.

       charon.plugins.forecast.reinject	[]
	      Comma  separated	list of	CHILD_SA configuration names for which
	      to perform multi/broadcast reinjection. For  clients  connecting
	      over such	a configuration, any multi/broadcast received over the
	      tunnel  gets  reinjected	to  all	active tunnels.	This makes the
	      broadcasts visible to  other  peers,  and	 for  examples	allows
	      clients  to see others shares. If	disabled, multi/broadcast mes-
	      sages received over a tunnel are injected	to the	local  network
	      only, but	not to other IPsec clients.

       charon.plugins.gcrypt.quick_random [no]
	      Use  faster random numbers in gcrypt; for	testing	only, produces
	      weak keys!

       charon.plugins.ha.autobalance [0]
	      Interval in seconds to automatically  balance  handled  segments
	      between nodes. Set to 0 to disable.

       charon.plugins.ha.buflen	[2048]
	      Buffer  size  for	 received HA messages. For IKEv1 the public DH
	      factors are also transmitted so depending	on the DH group	the HA
	      messages can get quite big (the default should  be  fine	up  to
	      modp4096).

       charon.plugins.ha.fifo_interface	[yes]

       charon.plugins.ha.heartbeat_delay [1000]

       charon.plugins.ha.heartbeat_timeout [2100]

       charon.plugins.ha.local []

       charon.plugins.ha.monitor [yes]

       charon.plugins.ha.pools []

       charon.plugins.ha.remote	[]

       charon.plugins.ha.resync	[yes]

       charon.plugins.ha.secret	[]

       charon.plugins.ha.segment_count [1]

       charon.plugins.ipseckey.enable [no]
	      Enable fetching of IPSECKEY RRs via DNS.

       charon.plugins.kernel-libipsec.allow_peer_ts [no]
	      Allow  that the remote traffic selector equals the IKE peer. The
	      route installed for such traffic (via TUN	device)	 usually  pre-
	      vents  further  IKE  traffic.  The  fwmark  options for the ker-
	      nel-netlink and socket-default plugins can be used to circumvent
	      that problem.

       charon.plugins.kernel-libipsec.fwmark [charon.plugins.socket-de-
       fault.fwmark]
	      Firewall mark to set on outbound raw ESP packets.

       charon.plugins.kernel-libipsec.raw_esp [no]
	      Whether to send and receive ESP packets without  UDP  encapsula-
	      tion if supported	on this	platform and no	NAT is detected.

       charon.plugins.kernel-netlink.buflen [<min(PAGE_SIZE, 8192)>]
	      Buffer size for received Netlink messages.

       charon.plugins.kernel-netlink.fwmark []
	      Firewall mark to set on the routing rule that directs traffic to
	      our  routing  table. The format is [!]mark[/mask], where the op-
	      tional exclamation mark inverts the meaning (i.e.	the rule  only
	      applies to packets that don't match the mark).

       charon.plugins.kernel-netlink.hw_offload_feature_interface [lo]
	      If  the kernel supports hardware offloading, the plugin needs to
	      find the feature flag which represents hardware offloading  sup-
	      port  for	 network  devices.  Using the loopback device for this
	      purpose is usually fine, since it	should always be present.  For
	      rare cases in which the loopback device cannot be	used to	obtain
	      the appropriate feature flag, this option	can be used to specify
	      an alternative interface for offload feature detection.

       charon.plugins.kernel-netlink.ignore_retransmit_errors [no]
	      Whether  to  ignore errors potentially resulting from a retrans-
	      mission.

       charon.plugins.kernel-netlink.install_routes_xfrmi [no]
	      Whether routes via XFRM interfaces are  automatically  installed
	      for  SAs that reference such an interface	via if_id_out.	If the
	      traffic selectors	include	the IKE	traffic	to the peer, this  re-
	      quires  special  care  (e.g.  installing	bypass policies	and/or
	      routes, or setting a mark	on the IKE socket and  excluding  such
	      packets from the configured routing table	via fwmark option).

       charon.plugins.kernel-netlink.mss [0]
	      MSS to set on installed routes, 0	to disable.

       charon.plugins.kernel-netlink.mtu [0]
	      MTU to set on installed routes, 0	to disable.

       charon.plugins.kernel-netlink.parallel_route [no]
	      Whether  to perform concurrent Netlink ROUTE queries on a	single
	      socket. While parallel queries can improve  throughput,  it  has
	      more  overhead.  On  vanilla Linux, DUMP queries fail with EBUSY
	      and must be retried, further decreasing performance.

       charon.plugins.kernel-netlink.parallel_xfrm [no]
	      Whether to perform concurrent Netlink XFRM queries on  a	single
	      socket.

       charon.plugins.kernel-netlink.policy_update [no]
	      Whether to always	use XFRM_MSG_UPDPOLICY to install policies.

       charon.plugins.kernel-netlink.port_bypass [no]
	      Whether  to  use	port or	socket based IKE XFRM bypass policies.
	      IKE bypass policies are used to exempt  IKE  traffic  from  XFRM
	      processing.  The default socket based policies are directly tied
	      to the IKE UDP sockets, port based policies use global XFRM  by-
	      pass policies for	the used IKE UDP ports.

       charon.plugins.kernel-netlink.process_rules [no]
	      Whether  to  process  changes  in	 routing rules to trigger roam
	      events. This is currently	only useful if the kernel based	 route
	      lookup is	used (i.e. if route installation is disabled or	an in-
	      verted fwmark match is configured).

       charon.plugins.kernel-netlink.receive_buffer_size [8388608]
	      Maximum  Netlink socket receive buffer in	bytes. This value con-
	      trols how	many bytes of Netlink messages	can  be	 queued	 to  a
	      Netlink	 socket.    If	  set	to   0,	  the	default	  from
	      /proc/sys/net/core/rmem_default will apply. Note that the	kernel
	      doubles the configured value to account for overhead. To	exceed
	      the  system-wide	maximum	from /proc/sys/net/core/rmem_max, spe-
	      cial privileges (CAP_NET_ADMIN) are  necessary,  otherwise,  the
	      kernel silently caps the value.

       charon.plugins.kernel-netlink.retries [0]
	      Number of	Netlink	message	retransmissions	to send	on timeout.

       charon.plugins.kernel-netlink.roam_events [yes]
	      Whether  to  trigger  roam  events when interfaces, addresses or
	      routes change.

       charon.plugins.kernel-netlink.set_proto_port_transport_sa [no]
	      Whether to set protocol and ports	in the selector	 installed  on
	      transport	 mode IPsec SAs	in the kernel. While doing so enforces
	      policies for inbound traffic, it also prevents the use of	a sin-
	      gle IPsec	SA by more than	one traffic selector.

       charon.plugins.kernel-netlink.spdh_thresh
	      XFRM policy hashing threshold configuration for IPv4 and IPv6.

	      The section defines hashing thresholds to	configure in the  ker-
	      nel during daemon	startup. Each address family takes a threshold
	      for  the	local  subnet of an IPsec policy (src in out-policies,
	      dst in in- and forward-policies) and the remote subnet  (dst  in
	      out-policies, src	in in- and forward-policies).

	      If the subnet has	more or	equal net bits than the	threshold, the
	      first  threshold bits are	used to	calculate a hash to lookup the
	      policy.

	      Policy hashing thresholds	are not	supported  before  Linux  3.18
	      and might	conflict with socket policies before Linux 4.8.

       charon.plugins.kernel-netlink.spdh_thresh.ipv4.lbits [32]
	      Local subnet XFRM	policy hashing threshold for IPv4.

       charon.plugins.kernel-netlink.spdh_thresh.ipv4.rbits [32]
	      Remote subnet XFRM policy	hashing	threshold for IPv4.

       charon.plugins.kernel-netlink.spdh_thresh.ipv6.lbits [128]
	      Local subnet XFRM	policy hashing threshold for IPv6.

       charon.plugins.kernel-netlink.spdh_thresh.ipv6.rbits [128]
	      Remote subnet XFRM policy	hashing	threshold for IPv6.

       charon.plugins.kernel-netlink.timeout [0]
	      Netlink message retransmission timeout, 0	to disable retransmis-
	      sions.

       charon.plugins.kernel-netlink.xfrm_acq_expires [165]
	      Lifetime	of XFRM	acquire	state created by the kernel when traf-
	      fic  matches  a  trap  policy.  The  value   gets	  written   to
	      /proc/sys/net/core/xfrm_acq_expires.   Indirectly	 controls  the
	      delay between XFRM acquire messages triggered by the kernel  for
	      a	 trap policy. The same value is	used as	timeout	for SPIs allo-
	      cated by the kernel. The default value equals  the  total	   re-
	      transmission  timeout for	IKE messages, see IKEv2	RETRANSMISSION
	      in strongswan.conf(5).

       charon.plugins.kernel-pfkey.events_buffer_size [0]
	      Size of the receive buffer for the event socket (0  for  default
	      size).  Because  events  are  received asynchronously installing
	      e.g. lots	of policies may	require	a larger buffer	than  the  de-
	      fault on certain platforms in order to receive all messages.

       charon.plugins.kernel-pfkey.route_via_internal [no]
	      Whether  to  use the internal or external	interface in installed
	      routes. The internal interface is	the one	where the  IP  address
	      contained	in the local traffic selector is located, the external
	      interface	 is  the one over which	the destination	address	of the
	      IPsec tunnel can be reached. This	is not relevant	if virtual IPs
	      are used,	for which a TUN	device is created that's used  in  the
	      routes.

       charon.plugins.kernel-pfroute.mtu [1400]
	      MTU to set on TUN	devices	created	for virtual IPs.

       charon.plugins.kernel-pfroute.vip_wait [1000]
	      Time  in	ms to wait until virtual IP addresses appear/disappear
	      before failing.

       charon.plugins.led.activity_led []

       charon.plugins.led.blink_time [50]

       charon.plugins.load-tester
	      Section to configure the load-tester plugin, see LOAD  TESTS  in
	      strongswan.conf(5) for details.

       charon.plugins.load-tester.addrs
	      Section  that  contains  key/value  pairs	with address pools (in
	      CIDR notation) to	use for	a specific network interface e.g. eth0
	      =	10.10.0.0/16.

       charon.plugins.load-tester.addrs_keep [no]
	      Whether to keep dynamic addresses	even after the	associated  SA
	      got terminated.

       charon.plugins.load-tester.addrs_prefix [16]
	      Network  prefix length to	use when installing dynamic addresses.
	      If set to	-1 the full address is used (i.e. 32 or	128).

       charon.plugins.load-tester.ca_dir []
	      Directory	to load	(intermediate) CA certificates from.

       charon.plugins.load-tester.child_rekey [600]
	      Seconds to start CHILD_SA	rekeying after setup.

       charon.plugins.load-tester.crl []
	      URI to a CRL to include as  certificate  distribution  point  in
	      generated	certificates.

       charon.plugins.load-tester.delay	[0]
	      Delay between initiations	for each thread.

       charon.plugins.load-tester.delete_after_established [no]
	      Delete an	IKE_SA as soon as it has been established.

       charon.plugins.load-tester.digest [sha1]
	      Digest algorithm used when issuing certificates.

       charon.plugins.load-tester.dpd_delay [0]
	      DPD delay	to use in load test.

       charon.plugins.load-tester.dynamic_port [0]
	      Base  port to be used for	requests (each client uses a different
	      port).

       charon.plugins.load-tester.eap_password [default-pwd]
	      EAP secret to use	in load	test.

       charon.plugins.load-tester.enable [no]
	      Enable the load testing plugin.  WARNING:	Never enable this plu-
	      gin on productive	systems. It provides preconfigured credentials
	      and allows an attacker to	authenticate as	any user.

       charon.plugins.load-tester.esp [aes128-sha1]
	      CHILD_SA proposal	to use for load	tests.

       charon.plugins.load-tester.fake_kernel [no]
	      Fake the kernel interface	to allow load-testing against self.

       charon.plugins.load-tester.ike_rekey [0]
	      Seconds to start IKE_SA rekeying after setup.

       charon.plugins.load-tester.init_limit [0]
	      Global limit of concurrently established SAs during load test.

       charon.plugins.load-tester.initiator [0.0.0.0]
	      Address to initiate from.

       charon.plugins.load-tester.initiator_auth [pubkey]
	      Authentication method(s) the initiator uses.

       charon.plugins.load-tester.initiator_id []
	      Initiator	ID used	in load	test.

       charon.plugins.load-tester.initiator_match []
	      Initiator	ID to match against as responder.

       charon.plugins.load-tester.initiator_tsi	[]
	      Traffic selector on initiator side, as proposed by initiator.

       charon.plugins.load-tester.initiator_tsr	[]
	      Traffic selector on responder side, as proposed by initiator.

       charon.plugins.load-tester.initiators [0]
	      Number of	concurrent initiator threads to	use in load test.

       charon.plugins.load-tester.issuer_cert []
	      Path to the issuer certificate (if not configured	 a  hard-coded
	      default value is used).

       charon.plugins.load-tester.issuer_key []
	      Path  to	private	key that is used to issue certificates (if not
	      configured a hard-coded default value is used).

       charon.plugins.load-tester.iterations [1]
	      Number of	IKE_SAs	to initiate by each initiator in load test.

       charon.plugins.load-tester.mode [tunnel]
	      IPsec mode to use, one of	tunnel,	transport, or beet.

       charon.plugins.load-tester.pool []
	      Provide INTERNAL_IPV4_ADDRs from a named pool.

       charon.plugins.load-tester.preshared_key	[<default-psk>]
	      Preshared	key to use in load test.

       charon.plugins.load-tester.proposal [aes128-sha1-modp768]
	      IKE proposal to use in load test.

       charon.plugins.load-tester.request_virtual_ip [no]
	      Request an INTERNAL_IPV4_ADDR and	 INTERNAL_IPV6_ADDR  from  the
	      server.

       charon.plugins.load-tester.responder [127.0.0.1]
	      Address to initiation connections	to.

       charon.plugins.load-tester.responder_auth [pubkey]
	      Authentication method(s) the responder uses.

       charon.plugins.load-tester.responder_id []
	      Responder	ID used	in load	test.

       charon.plugins.load-tester.responder_tsi	[initiator_tsi]
	      Traffic selector on initiator side, as narrowed by responder.

       charon.plugins.load-tester.responder_tsr	[initiator_tsr]
	      Traffic selector on responder side, as narrowed by responder.

       charon.plugins.load-tester.shutdown_when_complete [no]
	      Shutdown the daemon after	all IKE_SAs have been established.

       charon.plugins.load-tester.socket [unix://${piddir}/charon.ldt]
	      Socket provided by the load-tester plugin.

       charon.plugins.load-tester.version [0]
	      IKE  version  to	use (0 means use IKEv2 as initiator and	accept
	      any version as responder).

       charon.plugins.lookip.socket [unix://${piddir}/charon.lkp]
	      Socket provided by the lookip plugin.

       charon.plugins.ntru.parameter_set [optimum]
	      The  following  parameter	 sets  are   available:	  x9_98_speed,
	      x9_98_bandwidth, x9_98_balance and optimum, the last set not be-
	      ing part of the X9.98 standard but having	the best performance.

       charon.plugins.openssl.engine_id	[pkcs11]
	      ENGINE ID	to use in the OpenSSL plugin.

       charon.plugins.openssl.fips_mode	[0]
	      Set  OpenSSL  FIPS mode.	With OpenSSL before 3.0, the supported
	      values are disabled(0), enabled(1) and Suite B enabled(2).  With
	      OpenSSL 3+, any value other than 0 will explicitly load the fips
	      and base providers (load_legacy will  be	ignored).  The	latter
	      still  requires the config in fipsmodule.cnf (e.g.  for the mod-
	      ule's MAC), but allows explicitly	loading	the provider  if  it's
	      not activated in that config.

       charon.plugins.openssl.load_legacy [yes]
	      Load  the	legacy provider	in OpenSSL 3+ for algorithms like MD4,
	      DES, or Blowfish (the first two are required for	EAP-MSCHAPv2).
	      If disabled, the default provider	is loaded, or those configured
	      in the OpenSSL config (e.g. the fips provider).

       charon.plugins.openxpki.database	[]
	      Database URI connecting to the OpenXPKI certificate database. If
	      it  contains  a password,	make sure to adjust the	permissions of
	      the config file accordingly.

       charon.plugins.osx-attr.append [yes]
	      Whether DNS servers are appended to existing entries, instead of
	      replacing	them.

       charon.plugins.p-cscf.enable
	      Section to enable	requesting P-CSCF server addresses  for	 indi-
	      vidual connections.

       charon.plugins.p-cscf.enable.<conn> [no]
	      <conn>  is  the  name of a connection with an ePDG from which to
	      request P-CSCF server addresses.	Requests will be sent for  ad-
	      dresses  of  the	same  families	for which internal IPs are re-
	      quested.

       charon.plugins.pkcs11.modules
	      List of available	PKCS#11	modules.

       charon.plugins.pkcs11.modules.<name>.load_certs [yes]
	      Whether to automatically load certificates from tokens.

       charon.plugins.pkcs11.modules.<name>.os_locking [no]
	      Whether OS locking should	be enabled for this module.

       charon.plugins.pkcs11.modules.<name>.path []
	      Full path	to the shared object file of this PKCS#11 module.

       charon.plugins.pkcs11.reload_certs [no]
	      Reload certificates from all tokens if charon receives a SIGHUP.

       charon.plugins.pkcs11.use_dh [no]
	      Whether the PKCS#11 modules should be used for DH	and ECDH  (see
	      use_ecc option).

       charon.plugins.pkcs11.use_ecc [no]
	      Whether  the  PKCS#11  modules should be used for	ECDH and ECDSA
	      public key operations. ECDSA private keys	can be used regardless
	      of this option.

       charon.plugins.pkcs11.use_hasher	[no]
	      Whether the PKCS#11 modules should be used to hash data.

       charon.plugins.pkcs11.use_pubkey	[no]
	      Whether the PKCS#11 modules should be used for public key	opera-
	      tions, even for keys not stored on tokens.

       charon.plugins.pkcs11.use_rng [no]
	      Whether the PKCS#11 modules should be used as RNG.

       charon.plugins.radattr.dir []
	      Directory	where RADIUS attributes	are stored in  client-ID  spe-
	      cific files.

       charon.plugins.radattr.message_id [-1]
	      Attributes  are  added to	all IKE_AUTH messages by default (-1),
	      or only to the IKE_AUTH message with the given IKEv2 message ID.

       charon.plugins.random.random [${random_device}]
	      File to read random bytes	from.

       charon.plugins.random.strong_equals_true	[no]
	      If set to	yes the	RNG_STRONG class reads random bytes  from  the
	      same source as the RNG_TRUE class.

       charon.plugins.random.urandom [${urandom_device}]
	      File to read pseudo random bytes from.

       charon.plugins.resolve.file [/etc/resolv.conf]
	      File where to add	DNS server entries if not using	resolvconf(8).

       charon.plugins.resolve.resolvconf.iface [lo.ipsec]
	      The interface name and protocol sent to resolvconf(8).  This has
	      to  be  a	valid interface	name according to the rules defined by
	      resolvconf.  Also, it should have	a high priority	 according  to
	      the  order defined in interface-order(5) if relevant on the sys-
	      tem.

       charon.plugins.resolve.resolvconf.path [/sbin/resolvconf]
	      Path/command for resolvconf(8).  The command is  executed	 by  a
	      shell, so	"resolvconf" will work if it's in $PATH	of the daemon.

	      If  not  configured,  resolvconf(8) will be used if found	at the
	      default location.	 Otherwise,  the  file	in  charon.plugins.re-
	      solve.file will be modified directly.

       charon.plugins.revocation.enable_crl [yes]
	      Whether CRL validation should be enabled.

       charon.plugins.revocation.enable_ocsp [yes]
	      Whether OCSP validation should be	enabled.

       charon.plugins.revocation.timeout [10s]
	      Timeout used when	fetching OCSP/CRL.

       charon.plugins.save-keys.esp [no]
	      Whether to save ESP keys.

       charon.plugins.save-keys.ike [no]
	      Whether to save IKE keys.

       charon.plugins.save-keys.load [no]
	      Whether to load the plugin.

       charon.plugins.save-keys.wireshark_keys []
	      Directory	 where	the keys are stored in the format supported by
	      Wireshark. IKEv1 keys are	stored in  the	ikev1_decryption_table
	      file.  IKEv2 keys	are stored in the ikev2_decryption_table file.
	      Keys for ESP CHILD_SAs are stored	in the esp_sa file.

       charon.plugins.socket-default.fwmark []
	      Firewall mark to set on outbound packets.

       charon.plugins.socket-default.set_source	[yes]
	      Set source address on outbound packets, if possible.

       charon.plugins.socket-default.set_sourceif [no]
	      Force sending interface on outbound packets, if  possible.  This
	      allows using IPv6	link-local addresses as	tunnel endpoints.

       charon.plugins.socket-default.use_ipv4 [yes]
	      Listen on	IPv4, if possible.

       charon.plugins.socket-default.use_ipv6 [yes]
	      Listen on	IPv6, if possible.

       charon.plugins.sql.database []
	      Database URI for charon's	SQL plugin. If it contains a password,
	      make  sure  to adjust the	permissions of the config file accord-
	      ingly.

       charon.plugins.sql.loglevel [-1]
	      Loglevel for logging to SQL database.

       charon.plugins.stroke.allow_swap	[yes]
	      Analyze addresses/hostnames in left|right	to detect  which  side
	      is  local	 and  swap configuration options if necessary. If dis-
	      abled left is always local.

       charon.plugins.stroke.ignore_missing_ca_basic_constraint	[no]
	      Treat certificates in ipsec.d/cacerts and	ipsec.conf ca sections
	      as CA certificates even if they don't contain a  CA  basic  con-
	      straint.

       charon.plugins.stroke.max_concurrent [4]
	      Maximum number of	stroke messages	handled	concurrently.

       charon.plugins.stroke.prevent_loglevel_changes [no]
	      If enabled log level changes via stroke socket are not allowed.

       charon.plugins.stroke.secrets_file [${sysconfdir}/ipsec.secrets]
	      Location of the ipsec.secrets file

       charon.plugins.stroke.socket [unix://${piddir}/charon.ctl]
	      Socket provided by the stroke plugin.

       charon.plugins.stroke.timeout [0]
	      Timeout in ms for	any stroke command. Use	0 to disable the time-
	      out.

       charon.plugins.systime-fix.interval [0]
	      Interval	in  seconds  to	check system time for validity.	0 dis-
	      ables the	check.

       charon.plugins.systime-fix.reauth [no]
	      Whether to use reauth or delete if an invalid cert  lifetime  is
	      detected.

       charon.plugins.systime-fix.threshold []
	      Threshold	 date  where system time is considered valid. Disabled
	      if not specified.

       charon.plugins.systime-fix.threshold_format [%Y]
	      strptime(3) format used to parse threshold option.

       charon.plugins.systime-fix.timeout [0s]
	      How long to wait for a valid system time if an interval is  con-
	      figured. 0 to recheck indefinitely.

       charon.plugins.tnc-ifmap.client_cert []
	      Path to X.509 certificate	file of	IF-MAP client.

       charon.plugins.tnc-ifmap.client_key []
	      Path to private key file of IF-MAP client.

       charon.plugins.tnc-ifmap.device_name []
	      Unique name of strongSwan	server as a PEP	and/or PDP device.

       charon.plugins.tnc-ifmap.renew_session_interval [150]
	      Interval	in  seconds  between  periodic IF-MAP RenewSession re-
	      quests.

       charon.plugins.tnc-ifmap.server_cert []
	      Path to X.509 certificate	file of	IF-MAP server.

       charon.plugins.tnc-ifmap.server_uri [https://localhost:8444/imap]
	      URI of the form [https://]servername[:port][/path].

       charon.plugins.tnc-ifmap.username_password []
	      Credentials of IF-MAP client of the form	username:password.  If
	      set,  make sure to adjust	the permissions	of the config file ac-
	      cordingly.

       charon.plugins.tnc-imc.dlclose [yes]
	      Unload IMC after use.

       charon.plugins.tnc-imc.preferred_language [en]
	      Preferred	language for TNC recommendations.

       charon.plugins.tnc-imv.dlclose [yes]
	      Unload IMV after use.

       charon.plugins.tnc-imv.recommendation_policy [default]
	      TNC recommendation policy, one of	default, any, or all.

       charon.plugins.tnc-pdp.pt_tls.enable [yes]
	      Enable PT-TLS protocol on	the strongSwan PDP.

       charon.plugins.tnc-pdp.pt_tls.port [271]
	      PT-TLS server port the strongSwan	PDP is listening on.

       charon.plugins.tnc-pdp.radius.enable [yes]
	      Enable RADIUS protocol on	the strongSwan PDP.

       charon.plugins.tnc-pdp.radius.method [ttls]
	      EAP tunnel method	to be used.

       charon.plugins.tnc-pdp.radius.port [1812]
	      RADIUS server port the strongSwan	PDP is listening on.

       charon.plugins.tnc-pdp.radius.secret []
	      Shared RADIUS secret between strongSwan PDP  and	NAS.  If  set,
	      make  sure  to adjust the	permissions of the config file accord-
	      ingly.

       charon.plugins.tnc-pdp.server []
	      Name of the strongSwan PDP as contained in the AAA certificate.

       charon.plugins.tnc-pdp.timeout []
	      Timeout in seconds before	closing	incomplete connections.

       charon.plugins.tnccs-11.max_message_size	[45000]
	      Maximum size of a	PA-TNC message (XML & Base64 encoding).

       charon.plugins.tnccs-20.max_batch_size [65522]
	      Maximum size of a	PB-TNC batch (upper limit via PT-EAP = 65529).

       charon.plugins.tnccs-20.max_message_size	[65490]
	      Maximum size of a	PA-TNC	message	 (upper	 limit	via  PT-EAP  =
	      65497).

       charon.plugins.tnccs-20.mutual [no]
	      Enable PB-TNC mutual protocol.

       charon.plugins.tnccs-20.tests.pb_tnc_noskip [no]
	      Send  an	unsupported  PB-TNC  message type with the NOSKIP flag
	      set.

       charon.plugins.tnccs-20.tests.pb_tnc_version [2]
	      Send a PB-TNC batch with a modified PB-TNC version.

       charon.plugins.tpm.ek_handle []
	      Handle of	the RSA	or ECC Endorsement Key (EK) to be used to  set
	      up an authenticated session with a TPM 2.0 (e.g. 0x81010001).

       charon.plugins.tpm.fips_186_4 [no]
	      Is the TPM 2.0 FIPS-186-4	compliant, forcing e.g.	the use	of the
	      default  salt  length instead of maximum salt length with	RSAPSS
	      padding.

       charon.plugins.tpm.tcti.name [device|tabrmd]
	      Name of TPM 2.0 TCTI library. Valid values:  tabrmd,  device  or
	      mssim.  Defaults are device if the /dev/tpmrm0 in-kernel TPM 2.0
	      resource	manager	device exists, and tabrmd otherwise, requiring
	      the d-bus	based TPM 2.0 access broker and	resource manager to be
	      available.

       charon.plugins.tpm.tcti.opts [/dev/tpmrm0|<none>]
	      Options for the TPM 2.0 TCTI library. Defaults  are  /dev/tpmrm0
	      if the TCTI library name is device and no	options	otherwise.

       charon.plugins.tpm.use_rng [no]
	      Whether  the TPM should be used as RNG. For security reasons en-
	      able only	if an authenticated session can	be set up (see ek_han-
	      dle option).

       charon.plugins.unbound.dlv_anchors []
	      File to read trusted keys	for DLV	(DNSSEC	Lookaside  Validation)
	      from.  It	 uses  the same	format as trust_anchors.  Only one DLV
	      can be configured, which is then used as	a  root	 trusted  DLV,
	      this means that it is a lookaside	for the	root.

       charon.plugins.unbound.resolv_conf [/etc/resolv.conf]
	      File to read DNS resolver	configuration from.

       charon.plugins.unbound.trust_anchors
       [${sysconfdir}/ipsec.d/dnssec.keys]
	      File  to read DNSSEC trust anchors from (usually root zone KSK).
	      The format of the	file is	the standard DNS Zone file format, an-
	      chors can	be stored as DS	or DNSKEY entries in the file.

       charon.plugins.updown.dns_handler [no]
	      Whether the updown script	should handle DNS servers assigned via
	      IKEv1 Mode Config	or IKEv2  Config  Payloads  (if	 enabled  they
	      can't be handled by other	plugins, like resolve)

       charon.plugins.vici.socket [unix://${piddir}/charon.vici]
	      Socket the vici plugin serves clients.

       charon.plugins.whitelist.enable [yes]
	      Enable loaded whitelist plugin.

       charon.plugins.whitelist.socket [unix://${piddir}/charon.wlst]
	      Socket provided by the whitelist plugin.

       charon.plugins.wolfssl.fips_mode	[no]
	      Enable  to  prevent loading the plugin if	wolfSSL	is not in FIPS
	      mode.

       charon.plugins.xauth-eap.backend	[radius]
	      EAP plugin to be used as backend for XAuth credential  verifica-
	      tion.

       charon.plugins.xauth-pam.pam_service [login]
	      PAM service to be	used for authentication.

       charon.plugins.xauth-pam.session	[no]
	      Open/close a PAM session for each	active IKE_SA.

       charon.plugins.xauth-pam.trim_email [yes]
	      If an email address is received as an XAuth username, trim it to
	      just the username	part.

       charon.port [500]
	      UDP  port	 used locally. If set to 0 a random port will be allo-
	      cated.

       charon.port_nat_t [4500]
	      UDP port used locally in case of NAT-T. If set  to  0  a	random
	      port  will  be allocated.	 Has to	be different from charon.port,
	      otherwise	a random port will be allocated.

       charon.prefer_best_path [no]
	      By default, charon keeps SAs on the routing path with  addresses
	      it previously used if that path is still usable. By setting this
	      option to	yes, it	tries more aggressively	to update SAs with MO-
	      BIKE  on	routing	priority changes using the cheapest path. This
	      adds more	noise, but allows to dynamically adapt SAs to  routing
	      priority	changes.  This	option	has no effect if MOBIKE	is not
	      supported	or disabled.

       charon.prefer_configured_proposals [yes]
	      Prefer locally configured	proposals for IKE/IPsec	over  supplied
	      ones  as	responder (disabling this can avoid keying retries due
	      to INVALID_KE_PAYLOAD notifies).

       charon.prefer_temporary_addrs [no]
	      By default, permanent IPv6 source	addresses are  preferred  over
	      temporary	 ones (RFC 4941), to make connections more stable. En-
	      able this	option to reverse this.

	      It also affects which IPv6 addresses are announced as additional
	      addresses	if MOBIKE is used.  If the option  is  disabled,  only
	      permanent	 addresses  are	sent, and only temporary ones if it is
	      enabled.

       charon.process_route [yes]
	      Process RTM_NEWROUTE and RTM_DELROUTE events.

       charon.processor.priority_threads
	      Section to configure the number of reserved threads per priority
	      class see	JOB PRIORITY MANAGEMENT	in strongswan.conf(5).

       charon.rdn_matching [strict]
	      How RDNs in subject DNs of certificates are matched against con-
	      figured identities. Possible values are  strict  (the  default),
	      reordered,  and relaxed.	With strict the	number,	type and order
	      of all RDNs has to match,	wildcards (*) for the values  of  RDNs
	      are  allowed (that's the case for	all three variants). Using re-
	      ordered also matches DNs if the RDNs appear in a	different  or-
	      der,  the	 number	 and type still	has to match. Finally, relaxed
	      also allows matches of DNs that contain more RDNs	than the  con-
	      figured  identity	 (missing  RDNs	 are  treated  like a wildcard
	      match).

	      Note that	reordered and relaxed impose a	considerable  overhead
	      on memory	usage and runtime, in particular, for mismatches, com-
	      pared to strict.

       charon.receive_delay [0]
	      Delay in ms for receiving	packets, to simulate larger RTT.

       charon.receive_delay_request [yes]
	      Delay request messages.

       charon.receive_delay_response [yes]
	      Delay response messages.

       charon.receive_delay_type [0]
	      Specific IKEv2 message type to delay, 0 for any.

       charon.reject_trusted_end_entity	[no]
	      Reject  peers that use trusted end-entity	certificates (i.e. lo-
	      cal certificates).

       charon.replay_window [32]
	      Size of the AH/ESP replay	window,	in packets.

       charon.reqid_base [1]
	      Value of the first reqid	to  be	automatically  assigned	 to  a
	      CHILD_SA.

       charon.retransmit_base [1.8]
	      Base  to use for calculating exponential back off, see IKEv2 RE-
	      TRANSMISSION in strongswan.conf(5).

       charon.retransmit_jitter	[0]
	      Maximum jitter in	percent	to apply randomly  to  calculated  re-
	      transmission timeout (0 to disable).

       charon.retransmit_limit [0]
	      Upper  limit in seconds for calculated retransmission timeout (0
	      to disable).

       charon.retransmit_timeout [4.0]
	      Timeout in seconds before	sending	first retransmit.

       charon.retransmit_tries [5]
	      Number of	times to retransmit a packet before giving up.

       charon.retry_initiate_interval [0s]
	      Interval in seconds to use when retrying to initiate  an	IKE_SA
	      (e.g. if DNS resolution failed), 0 to disable retries.

       charon.reuse_ikesa [yes]
	      Initiate	CHILD_SA  within  existing IKE_SAs (always enabled for
	      IKEv1).

       charon.routing_table []
	      Numerical	routing	table to install routes	to.

       charon.routing_table_prio []
	      Priority of the routing table.

       charon.rsa_pss [no]
	      Whether to use RSA with PSS padding instead of PKCS#1 padding by
	      default.

       charon.rsa_pss_trailerfield [no]
	      Whether to encode	an explicit trailerField value of 0x01 in  the
	      RSA-PSS  algorithmIdentifier  (CONTEXT3)	or  using  the DEFAULT
	      value by omitting	it.

       charon.send_delay [0]
	      Delay in ms for sending packets, to simulate larger RTT.

       charon.send_delay_request [yes]
	      Delay request messages.

       charon.send_delay_response [yes]
	      Delay response messages.

       charon.send_delay_type [0]
	      Specific IKEv2 message type to delay, 0 for any.

       charon.send_vendor_id [no]
	      Send strongSwan vendor ID	payload

       charon.signature_authentication [yes]
	      Whether to enable	Signature Authentication as per	RFC 7427.

       charon.signature_authentication_constraints [yes]
	      If enabled, signature schemes configured in rightauth, in	 addi-
	      tion  to	getting	 used as constraints against signature schemes
	      employed in the certificate chain, are also used as  constraints
	      against the signature scheme used	by peers during	IKEv2.

       charon.spi_label	[0x0000000000000000]
	      Value mixed into the local IKE SPIs after	applying spi_mask.

       charon.spi_mask [0x0000000000000000]
	      Mask  applied to local IKE SPIs before mixing in spi_label (bits
	      set will be replaced with	spi_label).

       charon.spi_max [0xcfffffff]
	      The upper	limit for SPIs requested from  the  kernel  for	 IPsec
	      SAs.

       charon.spi_min [0xc0000000]
	      The  lower  limit	 for  SPIs requested from the kernel for IPsec
	      SAs. Should not be set lower than	0x00000100 (256), as SPIs  be-
	      tween 1 and 255 are reserved by IANA.

       charon.start-scripts
	      Section containing a list	of scripts (name = path) that are exe-
	      cuted when the daemon is started.

       charon.stop-scripts
	      Section containing a list	of scripts (name = path) that are exe-
	      cuted when the daemon is terminated.

       charon.syslog
	      Section  to  define  syslog loggers, see LOGGER CONFIGURATION in
	      strongswan.conf(5).

       charon.syslog.<facility>
	      <facility> is one	of the supported syslog	facilities, see	LOGGER
	      CONFIGURATION in strongswan.conf(5).

       charon.syslog.<facility>.<subsystem> [<default>]
	      Loglevel for a specific subsystem.

       charon.syslog.<facility>.default	[1]
	      Specifies	the default loglevel to	be  used  for  subsystems  for
	      which no specific	loglevel is defined.

       charon.syslog.<facility>.ike_name [no]
	      Prefix  each log entry with the connection name and a unique nu-
	      merical identifier for each IKE_SA.

       charon.syslog.<facility>.log_level [no]
	      Add the log level	of each	 message  after	 the  subsystem	 (e.g.
	      [IKE2]).

       charon.syslog.<facility>.map_level [-1]
	      The  default setting of -1 passes	all messages to	syslog using a
	      log level	of LOG_INFO. A non-negative value maps the  strongSwan
	      specific	loglevels  (0..4)  to the syslog level starting	at the
	      specified	number.	For example, a value of	 5  (LOG_NOTICE)  maps
	      strongSwan  loglevel  0  to LOG_NOTICE, level 1 to LOG_INFO, and
	      levels 2,	3 and 4	to LOG_DEBUG. This allows (additional) filter-
	      ing of log messages on the syslog	server.

       charon.syslog.identifier	[]
	      Global identifier	used for an openlog(3) call, prepended to each
	      log message by syslog.  If not  configured,  openlog(3)  is  not
	      called,  so  the value will depend on system defaults (often the
	      program name).

       charon.threads [16]
	      Number of	worker threads in charon. Several  of  these  are  re-
	      served  for  long	running	tasks in internal modules and plugins.
	      Therefore, make sure you don't set this value too	low. The  num-
	      ber  of  idle  worker threads listed in ipsec statusall might be
	      used as indicator	on the number of reserved threads.

       charon.tls.cipher []
	      List of TLS encryption ciphers.

       charon.tls.ke_group []
	      List of TLS key exchange groups.

       charon.tls.key_exchange []
	      List of TLS key exchange methods.

       charon.tls.mac []
	      List of TLS MAC algorithms.

       charon.tls.send_certreq_authorities [yes]
	      Whether to include CAs in	a server's CertificateRequest message.
	      May be disabled if clients can't handle a	long list of CAs.

       charon.tls.signature []
	      List of TLS signature schemes.

       charon.tls.suites []
	      List of TLS cipher suites.

       charon.tls.version_max [1.2]
	      Maximum TLS version to negotiate.

       charon.tls.version_min [1.2]
	      Minimum TLS version to negotiate.

       charon.tnc.tnc_config [/etc/tnc_config]
	      TNC IMC/IMV configuration	file.

       charon.user []
	      Name of the user the daemon changes to after startup.

       charon.x509.enforce_critical [yes]
	      Discard certificates with	unsupported or unknown critical	exten-
	      sions.

       charon-nm.ca_dir	[<default>]
	      Directory	from which to load CA certificates if  no  certificate
	      is configured.

       charon-nm.mtu [1400]
	      MTU for XFRM interfaces created by the NM	plugin.

       charon-systemd.journal
	      Section to configure native systemd journal logger, very similar
	      to  the  syslog  logger  as described in LOGGER CONFIGURATION in
	      strongswan.conf(5).

       charon-systemd.journal.<subsystem> [<default>]
	      Loglevel for a specific subsystem.

       charon-systemd.journal.default [1]
	      Specifies	the default loglevel to	be  used  for  subsystems  for
	      which no specific	loglevel is defined.

       imv_policy_manager.command_allow	[]
	      Shell command to be executed with	recommendation allow.

       imv_policy_manager.command_block	[]
	      Shell command to be executed with	all other recommendations.

       imv_policy_manager.database []
	      Database	URI  for the database that stores the package informa-
	      tion. If it contains a password, make sure to adjust the permis-
	      sions of the config file accordingly.

       imv_policy_manager.load [sqlite]
	      Plugins to load in IMV policy manager.

       libimcv.debug_level [1]
	      Debug level for a	stand-alone libimcv library.

       libimcv.load [random nonce gmp pubkey x509]
	      Plugins to load in IMC/IMVs with stand-alone libimcv library.

       libimcv.plugins.imc-attestation.aik_blob	[]
	      AIK encrypted private key	blob file.

       libimcv.plugins.imc-attestation.aik_cert	[]
	      AIK certificate file.

       libimcv.plugins.imc-attestation.aik_handle []
	      AIK object handle.

       libimcv.plugins.imc-attestation.aik_pubkey []
	      AIK public key file.

       libimcv.plugins.imc-attestation.hash_algorithm [sha384]
	      Preferred	measurement hash algorithm.

       libimcv.plugins.imc-attestation.mandatory_dh_groups [yes]
	      Enforce mandatory	Diffie-Hellman groups.

       libimcv.plugins.imc-attestation.nonce_len [20]
	      DH nonce length.

       libimcv.plugins.imc-attestation.pcr17_after []
	      PCR17 value after	measurement.

       libimcv.plugins.imc-attestation.pcr17_before []
	      PCR17 value before measurement.

       libimcv.plugins.imc-attestation.pcr17_meas []
	      Dummy measurement	value extended into PCR17 if the TBOOT log  is
	      not available.

       libimcv.plugins.imc-attestation.pcr18_after []
	      PCR18 value after	measurement.

       libimcv.plugins.imc-attestation.pcr18_before []
	      PCR18 value before measurement.

       libimcv.plugins.imc-attestation.pcr18_meas []
	      Dummy  measurement value extended	into PCR17 if the TBOOT	log is
	      not available.

       libimcv.plugins.imc-attestation.pcr_info	[no]
	      Whether to send pcr_before and pcr_after info.

       libimcv.plugins.imc-attestation.pcr_padding [no]
	      Whether to pad IMA SHA1 measurements values when extending  into
	      SHA256 PCR bank.

       libimcv.plugins.imc-attestation.use_quote2 [yes]
	      Use Quote2 AIK signature instead of Quote	signature.

       libimcv.plugins.imc-attestation.use_version_info	[no]
	      Version Info is included in Quote2 signature.

       libimcv.plugins.imc-hcd.push_info [yes]
	      Send quadruple info without being	prompted.

       libimcv.plugins.imc-hcd.subtypes	[]
	      Section to define	PWG HCD	PA subtypes.

       libimcv.plugins.imc-hcd.subtypes.<section> []
	      Defines a	PWG HCD	PA subtype section. Recognized subtype section
	      names are	system,	control, marker, finisher, interface and scan-
	      ner.

       libimcv.plugins.imc-hcd.subtypes.<section>.<sw_type> []
	      Defines  a  software type	section. Recognized software type sec-
	      tion names are firmware, resident_application and	 user_applica-
	      tion.

       libimcv.plugins.imc-hcd.subtypes.<section>.<sw_type>.<software> []
	      Defines a	software section having	an arbitrary name.

       libimcv.plugins.imc-hcd.subtypes.<section>.<sw_type>.<software>.name []
	      Name of the software installed on	the hardcopy device.

       libimcv.plugins.imc-hcd.subtypes.<section>.<sw_type>.<software>.patches
       []
	      String  describing  all patches applied to the given software on
	      this hardcopy device. The	individual patches are separated by  a
	      newline character	'\n'.

       libimcv.plugins.imc-hcd.subtypes.<section>.<sw_type>.<soft-
       ware>.string_version []
	      String  describing  the  version	of  the	given software on this
	      hardcopy device.

       libimcv.plugins.imc-hcd.subtypes.<section>.<sw_type>.<software>.version
       []
	      Hex-encoded version string with a	length of 16 octets consisting
	      of the fields major version number  (4  octets),	minor  version
	      number  (4  octets), build number	(4 octets), service pack major
	      number (2	octets)	and service pack minor number (2 octets).

       libimcv.plugins.imc-hcd.subtypes.<section>.attributes_natural_language
       [en]
	      Variable length natural language	tag  conforming	 to  RFC  5646
	      specifies	 the language to be used in the	health assessment mes-
	      sage of a	given subtype.

       libimcv.plugins.imc-hcd.subtypes.system.certification_state []
	      Hex-encoded certification	state.

       libimcv.plugins.imc-hcd.subtypes.system.configuration_state []
	      Hex-encoded configuration	state.

       libimcv.plugins.imc-hcd.subtypes.system.machine_type_model []
	      String specifying	the machine type and model of the hardcopy de-
	      vice.

       libimcv.plugins.imc-hcd.subtypes.system.pstn_fax_enabled	[no]
	      Specifies	if a PSTN facsimile interface is installed and enabled
	      on the hardcopy device.

       libimcv.plugins.imc-hcd.subtypes.system.time_source []
	      String specifying	the hostname of	the network time  server  used
	      by the hardcopy device.

       libimcv.plugins.imc-hcd.subtypes.system.user_application_enabled	[no]
	      Specifies	if users can dynamically download and execute applica-
	      tions on the hardcopy device.

       libimcv.plugins.imc-hcd.subtypes.system.user_application_persis-
       tence_enabled [no]
	      Specifies	 if  user dynamically downloaded applications can per-
	      sist outside the boundaries of a single job on the hardcopy  de-
	      vice.

       libimcv.plugins.imc-hcd.subtypes.system.vendor_name []
	      String specifying	the manufacturer of the	hardcopy device.

       libimcv.plugins.imc-hcd.subtypes.system.vendor_smi_code []
	      Integer  specifying the globally unique 24-bit SMI code assigned
	      to the manufacturer of the hardcopy device.

       libimcv.plugins.imc-os.device_cert []
	      Manually set the path to the  client  device  certificate	 (e.g.
	      /etc/pts/aikCert.der)

       libimcv.plugins.imc-os.device_handle []
	      Manually set handle to a private key bound to a smartcard	or TPM
	      (e.g.  0x81010004)

       libimcv.plugins.imc-os.device_id	[]
	      Manually	set  the  client device	ID in hexadecimal format (e.g.
	      1083f03988c9762703b1c1080c2e46f72b99cc31)

       libimcv.plugins.imc-os.device_pubkey []
	      Manually set the path to the  client  device  public  key	 (e.g.
	      /etc/pts/aikPub.der)

       libimcv.plugins.imc-os.push_info	[yes]
	      Send operating system info without being prompted.

       libimcv.plugins.imc-scanner.push_info [yes]
	      Send open	listening ports	without	being prompted.

       libimcv.plugins.imc-swima.eid_epoch [0x11223344]
	      Set  32  bit epoch value for event IDs manually if software col-
	      lector database is not available.

       libimcv.plugins.imc-swima.subscriptions [no]
	      Accept SW	Inventory or SW	Events subscriptions.

       libimcv.plugins.imc-swima.swid_database []
	      URI to software collector	database containing event  timestamps,
	      software	creation  and  deletion	 events	and collected software
	      identifiers. If it contains a password, make sure	to adjust  the
	      permissions of the config	file accordingly.

       libimcv.plugins.imc-swima.swid_directory	[${prefix}/share]
	      Directory	where SWID tags	are located.

       libimcv.plugins.imc-swima.swid_full [no]
	      Include file information in the XML-encoded SWID tags.

       libimcv.plugins.imc-swima.swid_pretty [no]
	      Generate XML-encoded SWID	tags with pretty indentation.

       libimcv.plugins.imc-test.additional_ids [0]
	      Number of	additional IMC IDs.

       libimcv.plugins.imc-test.command	[none]
	      Command to be sent to the	Test IMV.

       libimcv.plugins.imc-test.dummy_size [0]
	      Size  of	dummy  attribute  to be	sent to	the Test IMV (0	= dis-
	      abled).

       libimcv.plugins.imc-test.retry [no]
	      Do a handshake retry.

       libimcv.plugins.imc-test.retry_command []
	      Command to be sent to the	Test IMV in the	handshake retry.

       libimcv.plugins.imv-attestation.cadir []
	      Path to directory	with AIK cacerts.

       libimcv.plugins.imv-attestation.dh_group	[ecp256]
	      Preferred	Diffie-Hellman group.

       libimcv.plugins.imv-attestation.hash_algorithm [sha384]
	      Preferred	measurement hash algorithm.

       libimcv.plugins.imv-attestation.mandatory_dh_groups [yes]
	      Enforce mandatory	Diffie-Hellman groups.

       libimcv.plugins.imv-attestation.min_nonce_len [0]
	      DH minimum nonce length.

       libimcv.plugins.imv-os.remediation_uri []
	      URI pointing to operating	system remediation instructions.

       libimcv.plugins.imv-scanner.remediation_uri []
	      URI pointing to scanner remediation instructions.

       libimcv.plugins.imv-swima.rest_api.timeout [120]
	      Timeout of SWID REST API HTTP POST transaction.

       libimcv.plugins.imv-swima.rest_api.uri []
	      HTTP URI of the SWID REST	API.

       libimcv.plugins.imv-test.rounds [0]
	      Number of	IMC-IMV	retry rounds.

       libimcv.stderr_quiet [no]
	      Disable output to	stderr with a stand-alone libimcv library.

       libimcv.swid_gen.command	[/usr/local/bin/swid_generator]
	      SWID generator command to	be executed.

       libimcv.swid_gen.tag_creator.name [strongSwan Project]
	      Name of the tagCreator entity.

       libimcv.swid_gen.tag_creator.regid [strongswan.org]
	      regid of the tagCreator entity.

       manager.database	[]
	      Credential database URI for manager. If it contains a  password,
	      make  sure  to adjust the	permissions of the config file accord-
	      ingly.

       manager.debug [no]
	      Enable debugging in manager.

       manager.load []
	      Plugins to load in manager.

       manager.socket []
	      FastCGI socket of	manager, to run	it statically.

       manager.threads [10]
	      Threads to use for request handling.

       manager.timeout [15m]
	      Session timeout for manager.

       medsrv.database []
	      Mediation	server database	URI. If	it contains a  password,  make
	      sure to adjust the permissions of	the config file	accordingly.

       medsrv.debug [no]
	      Debugging	in mediation server web	application.

       medsrv.dpd [5m]
	      DPD timeout to use in mediation server plugin.

       medsrv.load []
	      Plugins to load in mediation server plugin.

       medsrv.password_length [6]
	      Minimum  password	 length	required for mediation server user ac-
	      counts.

       medsrv.rekey [20m]
	      Rekeying time on mediation connections in	mediation server  plu-
	      gin.

       medsrv.socket []
	      Run Mediation server web application statically on socket.

       medsrv.threads [5]
	      Number of	thread for mediation service web application.

       medsrv.timeout [15m]
	      Session timeout for mediation service.

       pki.load	[]
	      Plugins to load in the pki tool.

       pki.scep.http_bind []
	      Source IP	address	to bind	for HTTP operations.

       pki.scep.http_timeout [30s]
	      Timeout for HTTP operations.

       pki.scep.renewal_via_pkcs_req [no]
	      Some SCEP	servers	(e.g. openxpki)	are incorrectly	doing certifi-
	      cate  renewal via	messageType PKCSReq (19) instead of RenewalReq
	      (17).

       pool.database []
	      Database URI for the database that stores	IP pools and  configu-
	      ration  attributes.  If it contains a password, make	  sure
	      to adjust	the permissions	of the config file accordingly.

       pool.load []
	      Plugins to load in ipsec pool tool.

       sec-updater
	      Options for the sec-updater tool.

       sec-updater.database []
	      Global IMV policy	database URI. If it contains a password,  make
	      sure to adjust the permissions of	the config file	accordingly.

       sec-updater.load	[]
	      Plugins to load in sec-updater tool.

       sec-updater.swid_gen.command [/usr/local/bin/swid_generator]
	      SWID generator command to	be executed.

       sec-updater.swid_gen.tag_creator.name [strongSwan Project]
	      Name of the tagCreator entity.

       sec-updater.swid_gen.tag_creator.regid [strongswan.org]
	      regid of the tagCreator entity.

       sec-updater.tmp.deb_file	[/tmp/sec-updater.deb]
	      Temporary	storage	for downloaded deb package file.

       sec-updater.tmp.tag_file	[/tmp/sec-updater.tag]
	      Temporary	storage	for generated SWID tags.

       sec-updater.tnc_manage_command [/var/www/tnc/manage.py]
	      strongTNC	manage.py command used to import SWID tags.

       starter.config_file [${sysconfdir}/ipsec.conf]
	      Location of the ipsec.conf file

       starter.load_warning [yes]
	      Disable charon plugin load option	warning.

       sw-collector
	      Options for the sw-collector tool.

       sw-collector.database []
	      URI  to software collector database containing event timestamps,
	      software creation	and deletion  events  and  collected  software
	      identifiers.  If it contains a password, make sure to adjust the
	      permissions of the config	file accordingly.

       sw-collector.first_file [/var/log/bootstrap.log]
	      Path pointing to file created when the Linux OS was installed.

       sw-collector.first_time [0000-00-00T00:00:00Z]
	      Time in UTC when the Linux OS was	installed.

       sw-collector.history []
	      Path pointing to apt history.log file.

       sw-collector.load []
	      Plugins to load in sw-collector tool.

       sw-collector.rest_api.timeout [120]
	      Timeout of REST API HTTP POST transaction.

       sw-collector.rest_api.uri []
	      HTTP URI of the central collector's REST API.

       swanctl.load []
	      Plugins to load in swanctl.

       swanctl.socket [unix://${piddir}/charon.vici]
	      VICI socket to connect to	by default.

LOGGER CONFIGURATION
       Options in strongswan.conf(5) provide a much more flexible way to  con-
       figure loggers for the IKE daemon charon	than using the charondebug op-
       tion in ipsec.conf(5).

       Note: If	any loggers are	specified in strongswan.conf, charondebug does
       not have	any effect.

       There are currently two types of	loggers:

       File loggers
	      Log  directly  to	 a file	and are	defined	by specifying an arbi-
	      trarily named subsection in the charon.filelog section. The full
	      path to the file is configured in	the path setting of that  sub-
	      section,	however,  if  it only contains characters permitted in
	      section names, the setting may also  be  omitted	and  the  path
	      specified	 as  name of the subsection. To	log to the console the
	      two special filenames stdout and stderr may be used.

       Syslog loggers
	      Log into a syslog	facility and are defined by specifying the fa-
	      cility to	log to as the name of a	subsection in the  charon.sys-
	      log  section.  The following facilities are currently supported:
	      daemon and auth.

       Multiple	loggers	can be defined for each	type with different  log  ver-
       bosity for the different	subsystems of the daemon.

   Subsystems
       dmn    Main daemon setup/cleanup/signal handling

       mgr    IKE_SA manager, handling synchronization for IKE_SA access

       ike    IKE_SA

       chd    CHILD_SA

       job    Jobs queueing/processing and thread pool management

       cfg    Configuration management and plugins

       knl    IPsec/Networking kernel interface

       net    IKE network communication

       asn    Low-level	encoding/decoding (ASN.1, X.509	etc.)

       enc    Packet encoding/decoding encryption/decryption operations

       tls    libtls library messages

       esp    libipsec library messages

       lib    libstrongswan library messages

       tnc    Trusted Network Connect

       imc    Integrity	Measurement Collector

       imv    Integrity	Measurement Verifier

       pts    Platform Trust Service

   Loglevels
       -1     Absolutely silent

       0      Very basic auditing logs,	(e.g. SA up/SA down)

       1      Generic  control	flow with errors, a good default to see	what's
	      going on

       2      More detailed debugging control flow

       3      Including	RAW data dumps in Hex

       4      Also include sensitive material in dumps,	e.g. keys

   Example
	    charon {
		 filelog {
		      charon {
			   path	= /var/log/charon.log
			   time_format = %b %e %T
			   append = no
			   default = 1
		      }
		      stderr {
			   ike = 2
			   knl = 3
			   ike_name = yes
		      }
		 }
		 syslog	{
		      #	enable logging to LOG_DAEMON, use defaults
		      daemon {
		      }
		      #	minimalistic IKE auditing logging to LOG_AUTHPRIV
		      auth {
			   default = -1
			   ike = 0
		      }
		 }
	    }

JOB PRIORITY MANAGEMENT
       Some operations in the IKEv2 daemon charon  are	currently  implemented
       synchronously and blocking. Two examples	for such operations are	commu-
       nication	 with a	RADIUS server via EAP-RADIUS, or fetching CRL/OCSP in-
       formation during	certificate chain verification.	Under high load	condi-
       tions, the thread pool may run out of available threads,	and some  more
       important  jobs,	 such  as  liveness  checking, may not get executed in
       time.

       To prevent thread starvation in such situations job priorities were in-
       troduced.  The job processor will reserve some threads for higher  pri-
       ority jobs, these threads are not available for lower priority, locking
       jobs.

   Implementation
       Currently  4  priorities	have been defined, and they are	used in	charon
       as follows:

       CRITICAL
	      Priority for long-running	dispatcher jobs.

       HIGH   INFORMATIONAL exchanges, as used by liveness checking (DPD).

       MEDIUM Everything not HIGH/LOW, including IKE_SA_INIT processing.

       LOW    IKE_AUTH message processing. RADIUS and CRL fetching block here

       Although	IKE_SA_INIT processing is computationally expensive, it	is ex-
       plicitly	assigned to the	MEDIUM class. This allows charon to do the  DH
       exchange	 while	other  threads are blocked in IKE_AUTH.	To prevent the
       daemon from accepting more IKE_SA_INIT requests than it can handle, use
       IKE_SA_INIT DROPPING.

       The thread pool processes jobs strictly by priority,  meaning  it  will
       consume	all  higher  priority  jobs before looking for ones with lower
       priority. Further, it reserves threads for certain priorities. A	prior-
       ity class having	reserved n threads will	always have n  threads	avail-
       able  for this class (either currently processing a job,	or waiting for
       one).

   Configuration
       To ensure that there are	always enough  threads	available  for	higher
       priority	tasks, threads must be reserved	for each priority class.

       charon.processor.priority_threads.critical [0]
	      Threads reserved for CRITICAL priority class jobs

       charon.processor.priority_threads.high [0]
	      Threads reserved for HIGH	priority class jobs

       charon.processor.priority_threads.medium	[0]
	      Threads reserved for MEDIUM priority class jobs

       charon.processor.priority_threads.low [0]
	      Threads reserved for LOW priority	class jobs

       Let's consider the following configuration:

	    charon {
		 processor {
		      priority_threads {
			   high	= 1
			   medium = 4
		      }
		 }
	    }

       With  this  configuration,  one	thread	is  reserved for HIGH priority
       tasks. As currently only	liveness checking and stroke message  process-
       ing  is	done  with  high priority, one or two threads should be	suffi-
       cient.

       The MEDIUM class	mostly processes non-blocking jobs. Unless your	 setup
       is  experiencing	many blocks in locks while accessing shared resources,
       threads for one or two times the	number of CPU cores is fine.

       It is usually not required to reserve threads for CRITICAL  jobs.  Jobs
       in  this	 class	rarely	return	and do not release their thread	to the
       pool.

       The remaining threads are available for LOW  priority  jobs.  Reserving
       threads does not	make sense (until we have an even lower	priority).

   Monitoring
       To  see	what  the  threads are actually	doing, invoke ipsec statusall.
       Under high load,	something like this will show up:

	    worker threads: 2 or 32 idle, 5/1/2/22 working,
		 job queue: 0/0/1/149, scheduled: 198

       From 32 worker threads,

       2      are currently idle.

       5      are running CRITICAL priority jobs  (dispatching	from  sockets,
	      etc.).

       1      is  currently handling a HIGH priority job. This is actually the
	      thread currently providing this information via stroke.

       2      are handling MEDIUM priority jobs, likely	 IKE_SA_INIT  or  CRE-
	      ATE_CHILD_SA messages.

       22     are  handling LOW	priority jobs, probably	waiting	for an EAP-RA-
	      DIUS response while processing IKE_AUTH messages.

       The job queue load shows	how many jobs are queued  for  each  priority,
       ready  for  execution. The single MEDIUM	priority job will get executed
       immediately, as we have two spare threads  reserved  for	 MEDIUM	 class
       jobs.

IKE_SA_INIT DROPPING
       If  a  responder	 receives more connection requests per seconds than it
       can handle, it does not make sense to accept more IKE_SA_INIT messages.
       And if they are queued but can't	get processed in time, an answer might
       be sent after the client	has already given up and restarted its connec-
       tion setup. This	additionally increases the load	on the responder.

       To limit	the responder load resulting from new connection attempts, the
       daemon can drop IKE_SA_INIT messages just after	reception.  There  are
       two  mechanisms	to  decide  if this should happen, configured with the
       following options:

       charon.init_limit_half_open [0]
	      Limit based on the  number  of  half  open  IKE_SAs.  Half  open
	      IKE_SAs are SAs in connecting state, but not yet established.

       charon.init_limit_job_load [0]
	      Limit  based on the number of jobs currently queued for process-
	      ing (sum over all	job priorities).

       The second limit	includes load  from  other  jobs,  such	 as  rekeying.
       Choosing	 a good	value is difficult and depends on the hardware and ex-
       pected load.

       The first limit is simpler to calculate,	but includes the load from new
       connections only. If your responder is capable of negotiating 100  tun-
       nels/s, you might set this limit	to 1000. The daemon will then drop new
       connection attempts if generating a response would require more than 10
       seconds.	 If  you are allowing for a maximum response time of more than
       30 seconds, consider  adjusting	the  timeout  for  connecting  IKE_SAs
       (charon.half_open_timeout).  A responder, by default, deletes an	IKE_SA
       if  the	initiator  does	not establish it within	30 seconds. Under high
       load, a higher value might be required.

LOAD TESTS
       To do stability testing and performance optimizations, the  IKE	daemon
       charon provides the load-tester plugin. This plugin allows one to setup
       thousands of tunnels concurrently against the daemon itself or a	remote
       host.

       WARNING:	Never enable the load-testing plugin on	productive systems. It
       provides	 preconfigured credentials and allows an attacker to authenti-
       cate as any user.

   Configuration details
       For public key authentication, the responder uses the "CN=srv, OU=load-
       test, O=strongSwan" identity. For the initiator,	 each  connection  at-
       tempt  uses  a  different identity in the form "CN=c1-r1, OU=load-test,
       O=strongSwan", where the	first number indicates the client number,  the
       second  the authentication round	(if multiple authentication rounds are
       used).

       For PSK authentication, FQDN  identities	 are  used.  The  server  uses
       srv.strongswan.org,   the   client   uses   an  identity	 in  the  form
       c1-r1.strongswan.org.

       For  EAP	 authentication,  the  client  uses  a	 NAI   in   the	  form
       100000000010001@strongswan.org.

       To configure multiple authentication rounds, concatenate	multiple meth-
       ods using, e.g.
	    initiator_auth = pubkey|psk|eap-md5|eap-aka

       The responder uses a hardcoded certificate based	on a 1024-bit RSA key.
       This certificate	additionally serves as CA certificate. A peer uses the
       same private key, but generates client certificates on demand signed by
       the  CA certificate. Install the	Responder/CA certificate on the	remote
       host to authenticate all	clients.

       To speed	up testing,  the  load	tester	plugin	implements  a  special
       Diffie-Hellman implementation called modpnull. By setting
	    proposal = aes128-sha1-modpnull
       this wicked fast	DH implementation is used. It does not provide any se-
       curity at all, but allows one to	run tests without DH calculation over-
       head.

   Examples
       In the simplest case, the daemon	initiates IKE_SAs against itself using
       the  loopback interface.	This will actually establish double the	number
       of IKE_SAs, as the daemon is initiator and responder for	each IKE_SA at
       the same	time.  Installation of IPsec SAs would fail, as	each  SA  gets
       installed twice.	To simulate the	correct	behavior, a fake kernel	inter-
       face  can be enabled which does not install the IPsec SAs at the	kernel
       level.

       A simple	loopback configuration might look like this:

	    charon {
		 # create new IKE_SAs for each CHILD_SA	to simulate
		 # different clients
		 reuse_ikesa = no
		 # turn	off denial of service protection
		 dos_protection	= no

		 plugins {
		      load-tester {
			   # enable the	plugin
			   enable = yes
			   # use 4 threads to initiate connections
			   # simultaneously
			   initiators =	4
			   # each thread initiates 1000	connections
			   iterations =	1000
			   # delay each	initiation in each thread by 20ms
			   delay = 20
			   # enable the	fake kernel interface to
			   # avoid SA conflicts
			   fake_kernel = yes
		      }
		 }
	    }

       This will initiate 4000 IKE_SAs within 20 seconds. You may increase the
       delay value if your box can not handle that much	load, or  decrease  it
       to  put	more  load on it. If the daemon	starts retransmitting messages
       your box	probably can not handle	all connection attempts.

       The plugin also allows one to test against a remote  host.  This	 might
       help  to	test against a real world configuration. A connection setup to
       do stress testing of a gateway might look like this:

	    charon {
		 reuse_ikesa = no
		 threads = 32

		 plugins {
		      load-tester {
			   enable = yes
			   # 10000 connections,	ten in parallel
			   initiators =	10
			   iterations =	1000
			   # use a delay of 100ms, overall time	is:
			   # iterations	* delay	= 100s
			   delay = 100
			   # address of	the gateway
			   remote = 1.2.3.4
			   # IKE-proposal to use
			   proposal = aes128-sha1-modp1024
			   # use faster	PSK authentication instead
			   # of	1024bit	RSA
			   initiator_auth = psk
			   responder_auth = psk
			   # request a virtual IP using	configuration
			   # payloads
			   request_virtual_ip =	yes
			   # enable CHILD_SA every 60s
			   child_rekey = 60
		      }
		 }
	    }

IKEv2 RETRANSMISSION
       Retransmission timeouts in the IKEv2 daemon charon  can	be  configured
       globally	using the three	keys listed below:

	      charon.retransmit_base [1.8]
	      charon.retransmit_timeout	[4.0]
	      charon.retransmit_tries [5]
	      charon.retransmit_jitter [0]
	      charon.retransmit_limit [0]

       The following algorithm is used to calculate the	timeout:

	    relative timeout = retransmit_timeout * retransmit_base ^ (n-1)

       Where  n	 is  the  current retransmission count.	The calculated timeout
       can't exceed the	configured retransmit_limit (if	any), which is	useful
       if the number of	retries	is high.

       If  a  jitter in	percent	is configured, the timeout is modified as fol-
       lows:

	    relative timeout -=	random(0, retransmit_jitter * relative timeout)

       Using the default values, packets are retransmitted in:

       Retransmission	Relative Timeout   Absolute Timeout
       -----------------------------------------------------
       1			      4s		 4s
       2			      7s		11s
       3			     13s		24s
       4			     23s		47s
       5			     42s		89s
       giving up		     76s	       165s

VARIABLES
       The variables used above	are configured as follows:

       ${piddir}	       /var/run
       ${prefix}	       /usr/local
       ${sysconfdir}	       /usr/local/etc
       ${random_device}	       /dev/random
       ${urandom_device}       /dev/urandom

FILES
       /usr/local/etc/strongswan.conf	    configuration file
       /usr/local/etc/strongswan.d/	    directory containing included config snippets
       /usr/local/etc/strongswan.d/charon/  plugin specific config snippets

SEE ALSO
       swanctl.conf(5),	swanctl(8), ipsec.conf(5), ipsec.secrets(5), ipsec(8),
       charon-cmd(8)

HISTORY
       Written for the strongSwan project <https://www.strongswan.org> by  To-
       bias Brunner, Andreas Steffen and Martin	Willi.

5.9.13							    STRONGSWAN.CONF(5)

NAME | DESCRIPTION | SYNTAX | NUMBER FORMATS | TIME FORMATS | REFERENCING OTHER SECTIONS | INCLUDING FILES | READING VALUES | DEFINED KEYS | LOGGER CONFIGURATION | JOB PRIORITY MANAGEMENT | IKE_SA_INIT DROPPING | LOAD TESTS | IKEv2 RETRANSMISSION | VARIABLES | FILES | SEE ALSO | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=strongswan.conf&sektion=5&manpath=FreeBSD+14.0-RELEASE+and+Ports>

home | help