1STRONGSWAN.CONF(5)                strongSwan                STRONGSWAN.CONF(5)
2
3
4

NAME

6       strongswan.conf - strongSwan configuration file
7

DESCRIPTION

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

SYNTAX

20       The format of the strongswan.conf file consists  of  hierarchical  sec‐
21       tions and a list of key/value pairs in each section. Each section has a
22       name, followed by C-Style curly brackets  defining  the  section  body.
23       Each section body contains a set of subsections and key/value pairs:
24
25            settings := (section|keyvalue)*
26            section  := name { settings }
27            keyvalue := key = value\n
28
29       Values must be terminated by a newline.
30
31       Comments are possible using the #-character.
32
33       Section names and keys may contain any printable character except:
34
35            . , : { } = " # \n \t space
36
37       An example file in this format might look like this:
38
39            a = b
40            section-one {
41                 somevalue = asdf
42                 subsection {
43                      othervalue = xxx
44                 }
45                 # yei, a comment
46                 yetanother = zz
47            }
48            section-two {
49                 x = 12
50            }
51
52       Indentation is optional, you may use tabs or spaces.
53
54
55

REFERENCING OTHER SECTIONS

57       It  is  possible to inherit settings and sections from another section.
58       This feature is mainly useful in swanctl.conf (which uses the same file
59       format).  The syntax is as follows:
60
61            section    := name : references { settings }
62            references := absname[, absname]*
63            absname    := name[.name]*
64
65       All key/value pairs and all subsections of the referenced sections will
66       be inherited by the section that references  them  via  their  absolute
67       name.  Values  may  be overridden in the section or any of its sub-sec‐
68       tions (use an empty assignment to clear a value so its  default  value,
69       if  any,  will apply). It is currently not possible to limit the inclu‐
70       sion level or clear/remove inherited sub-sections.
71
72       If the order is important (e.g. for auth rounds  in  a  connection,  if
73       round is not used), it should be noted that inherited settings/sections
74       will follow those defined in the current section (if multiple  sections
75       are referenced, their settings are enumerated left to right).
76
77       References  are  evaluated dynamically at runtime, so referring to sec‐
78       tions later in the config file or included via other files is no  prob‐
79       lem.
80
81       Here is an example of how this might look like:
82
83            conn-defaults {
84                 # default settings for all conns (e.g. a cert, or IP pools)
85            }
86            eap-defaults {
87                 # defaults if eap is used (e.g. a remote auth round)
88            }
89            child-defaults {
90                 # defaults for child configs (e.g. traffic selectors)
91            }
92            connections {
93                 conn-a : conn-defaults, eap-defaults {
94                      # set/override stuff specific to this connection
95                      children {
96                           child-a : child-defaults {
97                                # set/override stuff specific to this child
98                           }
99                      }
100                 }
101                 conn-b : conn-defaults {
102                      # set/override stuff specific to this connection
103                      children {
104                           child-b : child-defaults {
105                                # set/override stuff specific to this child
106                           }
107                      }
108                 }
109                 conn-c : connections.conn-a {
110                      # everything is inherited, including everything conn-a
111                      # already inherits from the sections it and its
112                      # sub-section reference
113                 }
114            }
115

INCLUDING FILES

117       Using  the include statement it is possible to include other files into
118       strongswan.conf, e.g.
119
120            include /some/path/*.conf
121
122       If the file name is not an absolute path, it is considered to be  rela‐
123       tive to the directory of the file containing the include statement. The
124       file name may include shell wildcards (see sh(1)).  Also,  such  inclu‐
125       sions can be nested.
126
127       Sections  loaded from included files extend previously loaded sections;
128       already existing values are replaced.  It is  important  to  note  that
129       settings are added relative to the section the include statement is in.
130
131       As  an example, the following three files result in the same final con‐
132       fig as the one given above:
133
134            a = b
135            section-one {
136                 somevalue = before include
137                 include include.conf
138            }
139            include other.conf
140
141       include.conf:
142            # settings loaded from this file are added to section-one
143            # the following replaces the previous value
144            somevalue = asdf
145            subsection {
146                 othervalue = yyy
147            }
148            yetanother = zz
149
150       other.conf:
151            # this extends section-one and subsection
152            section-one {
153                 subsection {
154                      # this replaces the previous value
155                      othervalue = xxx
156                 }
157            }
158            section-two {
159                 x = 12
160            }
161
162

READING VALUES

164       Values are accessed using a dot-separated section list and a key.  With
165       reference to the example above, accessing section-one.subsection.other‐
166       value will return xxx.
167
168

DEFINED KEYS

170       The following keys are currently  defined  (using  dot  notation).  The
171       default value (if any) is listed in brackets after the key.
172
173       aikgen.load []
174              Plugins to load in ipsec aikgen tool.
175
176
177       attest.database []
178              File  measurement  information  database  URI.  If it contains a
179              password, make sure to adjust the permissions of the config file
180              accordingly.
181
182
183       attest.load []
184              Plugins to load in ipsec attest tool.
185
186
187       charon
188              Options for the charon IKE daemon.
189
190              Note:  Many  of  the  options  in  this  section  also  apply to
191              charon-cmd and other charon derivatives.  Just use their respec‐
192              tive  name  (e.g.   charon-cmd  instead  of  charon).   For many
193              options defaults can be defined in the libstrongswan section.
194
195
196       charon.accept_private_algs [no]
197              Deliberately violate the IKE standard's  requirement  and  allow
198              the  use  of  private  algorithm  identifiers,  even if the peer
199              implementation is unknown.
200
201
202       charon.accept_unencrypted_mainmode_messages [no]
203              Accept unencrypted ID and HASH payloads in IKEv1 Main Mode.
204
205              Some implementations send the  third  Main  Mode  message  unen‐
206              crypted,  probably  to  find  the  PSKs for the specified ID for
207              authentication. This is very similar to Aggressive Mode, and has
208              the same security implications: A passive attacker can sniff the
209              negotiated Identity, and start brute forcing the PSK  using  the
210              HASH payload.
211
212              It  is  recommended  to  keep this option to no, unless you know
213              exactly what the implications are and require  compatibility  to
214              such devices (for example, some SonicWall boxes).
215
216
217       charon.block_threshold [5]
218              Maximum number of half-open IKE_SAs for a single peer IP.
219
220
221       charon.cache_crls [no]
222              Whether  Certificate Revocation Lists (CRLs) fetched via HTTP or
223              LDAP should be saved under a unique file name derived  from  the
224              public    key   of   the   Certification   Authority   (CA)   to
225              /etc/ipsec.d/crls  (stroke)  or   /etc/swanctl/x509crl   (vici),
226              respectively.
227
228
229       charon.cert_cache [yes]
230              Whether  relations  in  validated  certificate  chains should be
231              cached in memory.
232
233
234       charon.check_current_path [no]
235              By default, after detecting any  changes  to  interfaces  and/or
236              addresses  no  action is taken if the current path to the remote
237              peer still looks usable. Enabling this option will  use  DPD  to
238              check  if  the  path actually still works, or, for instance, the
239              peer removed the state after a longer phase  without  connectiv‐
240              ity.   It will also trigger a MOBIKE update if NAT mappings were
241              removed during the downtime.
242
243
244       charon.cisco_flexvpn [no]
245              Send the Cisco FlexVPN vendor ID payload, which is  required  in
246              order  to  make  Cisco  brand  devices allow negotiating a local
247              traffic selector (from strongSwan's point of view) that  is  not
248              the  assigned virtual IP address if such an address is requested
249              by    strongSwan.  Sending the Cisco FlexVPN vendor ID  prevents
250              the  peer  from narrowing the initiator's local traffic selector
251              and allows it to e.g. negotiate a TS of 0.0.0.0/0  ==  0.0.0.0/0
252              instead.   This  has been tested with a "tunnel mode ipsec ipv4"
253              Cisco template but should also work for GRE encapsulation.
254
255
256       charon.cisco_unity [no]
257              Send Cisco Unity vendor ID payload (IKEv1 only).
258
259
260       charon.close_ike_on_child_failure [no]
261              Close the IKE_SA if setup of the CHILD_SA  along  with  IKE_AUTH
262              failed.
263
264
265       charon.cookie_threshold [10]
266              Number of half-open IKE_SAs that activate the cookie mechanism.
267
268
269       charon.crypto_test.bench [no]
270              Benchmark crypto algorithms and order them by efficiency.
271
272
273       charon.crypto_test.bench_size [1024]
274              Buffer size used for crypto benchmark.
275
276
277       charon.crypto_test.bench_time [50]
278              Time  in  ms  during  which crypto algorithm performance is mea‐
279              sured.
280
281
282       charon.crypto_test.on_add [no]
283              Test crypto algorithms during registration (requires  test  vec‐
284              tors provided by the test-vectors plugin).
285
286
287       charon.crypto_test.on_create [no]
288              Test crypto algorithms on each crypto primitive instantiation.
289
290
291       charon.crypto_test.required [no]
292              Strictly  require  at  least  one test vector to enable an algo‐
293              rithm.
294
295
296       charon.crypto_test.rng_true [no]
297              Whether to test  RNG  with  TRUE  quality;  requires  a  lot  of
298              entropy.
299
300
301       charon.delete_rekeyed [no]
302              Delete  CHILD_SAs  right  after  they  got  successfully rekeyed
303              (IKEv1 only). Reduces the number of stale CHILD_SAs in scenarios
304              with a lot of rekeyings. However, this might cause problems with
305              implementations that continue to  use  rekeyed  SAs  until  they
306              expire.
307
308
309       charon.delete_rekeyed_delay [5]
310              Delay  in  seconds  until  inbound  IPsec  SAs are deleted after
311              rekeyings (IKEv2 only). To process delayed packets  the  inbound
312              part of a CHILD_SA is kept installed up to the configured number
313              of seconds after it got replaced during a rekeying. If set to  0
314              the  CHILD_SA  will  be  kept  installed until it expires (if no
315              lifetime is set it will be destroyed immediately).
316
317
318       charon.dh_exponent_ansi_x9_42 [yes]
319              Use ANSI X9.42 DH exponent size or optimum size matched to cryp‐
320              tographic strength.
321
322
323       charon.dlopen_use_rtld_now [no]
324              Use  RTLD_NOW  with  dlopen when loading plugins and IMV/IMCs to
325              reveal missing symbols immediately.
326
327
328       charon.dns1 []
329              DNS server assigned to peer via configuration payload (CP).
330
331
332       charon.dns2 []
333              DNS server assigned to peer via configuration payload (CP).
334
335
336       charon.dos_protection [yes]
337              Enable Denial of Service protection using  cookies  and  aggres‐
338              siveness checks.
339
340
341       charon.ecp_x_coordinate_only [yes]
342              Compliance with the errata for RFC 4753.
343
344
345       charon.filelog
346              Section  to  define  file  loggers,  see LOGGER CONFIGURATION in
347              strongswan.conf(5).
348
349
350
351       charon.filelog.<name>
352              <name> may be the full path to the log file if it only  contains
353              characters  permitted  in  section  names. Is ignored if path is
354              specified.
355
356
357       charon.filelog.<name>.<subsystem> [<default>]
358              Loglevel for a specific subsystem.
359
360
361       charon.filelog.<name>.append [yes]
362              If this option is enabled log entries are appended to the exist‐
363              ing file.
364
365
366       charon.filelog.<name>.default [1]
367              Specifies  the  default  loglevel  to be used for subsystems for
368              which no specific loglevel is defined.
369
370
371       charon.filelog.<name>.flush_line [no]
372              Enabling this option disables block buffering and  enables  line
373              buffering.
374
375
376       charon.filelog.<name>.ike_name [no]
377              Prefix  each  log  entry  with  the connection name and a unique
378              numerical identifier for each IKE_SA.
379
380
381       charon.filelog.<name>.log_level [no]
382              Add the log level of each  message  after  the  subsystem  (e.g.
383              [IKE2]).
384
385
386       charon.filelog.<name>.path []
387              Optional  path to the log file. Overrides the section name. Must
388              be used if the path contains characters that aren't  allowed  in
389              section names.
390
391
392       charon.filelog.<name>.time_add_ms [no]
393              Adds  the milliseconds within the current second after the time‐
394              stamp (separated by a dot, so time_format should end with %S  or
395              %T).
396
397
398       charon.filelog.<name>.time_format []
399              Prefix  each  log  entry  with a timestamp. The option accepts a
400              format string as passed to strftime(3).
401
402
403
404       charon.flush_auth_cfg [no]
405              If enabled objects  used  during  authentication  (certificates,
406              identities  etc.)  are released to free memory once an IKE_SA is
407              established. Enabling this  might  conflict  with  plugins  that
408              later need access to e.g. the used certificates.
409
410
411       charon.follow_redirects [yes]
412              Whether to follow IKEv2 redirects (RFC 5685).
413
414
415       charon.force_eap_only_authentication [no]
416              Violate  RFC  5998  and  use EAP-only authentication even if the
417              peer did  not  send  an  EAP_ONLY_AUTHENTICATION  notify  during
418              IKE_AUTH.
419
420
421       charon.fragment_size [1280]
422              Maximum  size (complete IP datagram size in bytes) of a sent IKE
423              fragment when using  proprietary  IKEv1  or  standardized  IKEv2
424              fragmentation,  defaults  to 1280 (use 0 for address family spe‐
425              cific default values, which uses a lower value  for  IPv4).   If
426              specified this limit is used for both IPv4 and IPv6.
427
428
429       charon.group []
430              Name of the group the daemon changes to after startup.
431
432
433       charon.half_open_timeout [30]
434              Timeout  in seconds for connecting IKE_SAs (also see IKE_SA_INIT
435              DROPPING).
436
437
438       charon.hash_and_url [no]
439              Enable hash and URL support.
440
441
442       charon.host_resolver.max_threads [3]
443              Maximum number of concurrent resolver threads (they  are  termi‐
444              nated if unused).
445
446
447       charon.host_resolver.min_threads [0]
448              Minimum number of resolver threads to keep around.
449
450
451       charon.i_dont_care_about_security_and_use_aggressive_mode_psk [no]
452              If  enabled  responders are allowed to use IKEv1 Aggressive Mode
453              with pre-shared keys, which is discouraged due to security  con‐
454              cerns  (offline  attacks  on  the openly transmitted hash of the
455              PSK).
456
457
458       charon.ignore_acquire_ts [no]
459              If this is disabled the  traffic  selectors  from  the  kernel's
460              acquire  events,  which  are derived from the triggering packet,
461              are prepended to the traffic selectors  from  the  configuration
462              for  IKEv2  connection.  By enabling this, such specific traffic
463              selectors will be ignored and only the ones in the  config  will
464              be sent. This always happens for IKEv1 connections as the proto‐
465              col only supports one set of traffic selectors per CHILD_SA.
466
467
468       charon.ignore_routing_tables []
469              A space-separated list of routing tables  to  be  excluded  from
470              route lookups.
471
472
473       charon.ikesa_limit [0]
474              Maximum  number  of  IKE_SAs that can be established at the same
475              time before new connection attempts are blocked.
476
477
478       charon.ikesa_table_segments [1]
479              Number of exclusively locked segments in the hash table.
480
481
482       charon.ikesa_table_size [1]
483              Size of the IKE_SA hash table.
484
485
486       charon.imcv
487              Defaults for options in this section can be  configured  in  the
488              libimcv section.
489
490
491       charon.imcv.assessment_result [yes]
492              Whether IMVs send a standard IETF Assessment Result attribute.
493
494
495       charon.imcv.database []
496              Global  IMV policy database URI. If it contains a password, make
497              sure to adjust the permissions of the config file accordingly.
498
499
500       charon.imcv.os_info.default_password_enabled [no]
501              Manually set whether a default password is enabled
502
503
504       charon.imcv.os_info.name []
505              Manually set the name of the client OS (e.g. Ubuntu).
506
507
508       charon.imcv.os_info.version []
509              Manually set the version of the client OS (e.g. 12.04 i686).
510
511
512       charon.imcv.policy_script [ipsec _imv_policy]
513              Script called for each TNC connection to generate IMV policies.
514
515
516       charon.inactivity_close_ike [no]
517              Whether to close IKE_SA if the only CHILD_SA closed due to inac‐
518              tivity.
519
520
521       charon.init_limit_half_open [0]
522              Limit  new  connections based on the current number of half open
523              IKE_SAs, see IKE_SA_INIT DROPPING in strongswan.conf(5).
524
525
526
527       charon.init_limit_job_load [0]
528              Limit new connections based on  the  number  of  jobs  currently
529              queued for processing (see IKE_SA_INIT DROPPING).
530
531
532       charon.initiator_only [no]
533              Causes charon daemon to ignore IKE initiation requests.
534
535
536       charon.install_routes [yes]
537              Install  routes  into  a  separate routing table for established
538              IPsec tunnels.
539
540
541       charon.install_virtual_ip [yes]
542              Install virtual IP addresses.
543
544
545       charon.install_virtual_ip_on []
546              The name of the interface on which virtual IP  addresses  should
547              be  installed.  If not specified the addresses will be installed
548              on the outbound interface.
549
550
551       charon.integrity_test [no]
552              Check daemon, libstrongswan and plugin integrity at startup.
553
554
555       charon.interfaces_ignore []
556              A comma-separated list of  network  interfaces  that  should  be
557              ignored,  if  interfaces_use  is  specified  this  option has no
558              effect.
559
560
561       charon.interfaces_use []
562              A comma-separated list of network interfaces that should be used
563              by charon. All other interfaces are ignored.
564
565
566       charon.keep_alive [20s]
567              NAT keep alive interval.
568
569
570       charon.keep_alive_dpd_margin [0s]
571              Number of seconds the keep alive interval may be exceeded before
572              a DPD is sent instead of a NAT keep alive (0 to disable).   This
573              is  only useful if a clock is used that includes time spent sus‐
574              pended (e.g. CLOCK_BOOTTIME).
575
576
577       charon.leak_detective.detailed [yes]
578              Includes source file names and line numbers  in  leak  detective
579              output.
580
581
582       charon.leak_detective.usage_threshold [10240]
583              Threshold in bytes for leaks to be reported (0 to report all).
584
585
586       charon.leak_detective.usage_threshold_count [0]
587              Threshold  in  number of allocations for leaks to be reported (0
588              to report all).
589
590
591       charon.load []
592              Plugins to load in the IKE daemon charon.
593
594
595       charon.load_modular [no]
596              If enabled, the list of plugins to load is  determined  via  the
597              value of the charon.plugins.<name>.load options.  In addition to
598              a simple boolean flag that option  may  take  an  integer  value
599              indicating  the  priority of a plugin, which would influence the
600              order of a plugin in the plugin list (the default is 1). If  two
601              plugins have the same priority their order in the default plugin
602              list is preserved. Enabled plugins not found in  that  list  are
603              ordered alphabetically before other plugins with the same prior‐
604              ity.
605
606
607       charon.make_before_break [no]
608              Initiate IKEv2 reauthentication with a make-before-break instead
609              of  a  break-before-make scheme. Make-before-break uses overlap‐
610              ping IKE and CHILD_SA during reauthentication by first  recreat‐
611              ing  all new SAs before deleting the old ones. This behavior can
612              be beneficial to avoid connectivity  gaps  during  reauthentica‐
613              tion,  but  requires  support  for  overlapping SAs by the peer.
614              strongSwan can handle such overlapping SAs since version 5.3.0.
615
616
617       charon.max_ikev1_exchanges [3]
618              Maximum number of IKEv1 phase 2 exchanges  per  IKE_SA  to  keep
619              state about and track concurrently.
620
621
622       charon.max_packet [10000]
623              Maximum packet size accepted by charon.
624
625
626       charon.multiple_authentication [yes]
627              Enable multiple authentication exchanges (RFC 4739).
628
629
630       charon.nbns1 []
631              WINS servers assigned to peer via configuration payload (CP).
632
633
634       charon.nbns2 []
635              WINS servers assigned to peer via configuration payload (CP).
636
637
638       charon.plugin.ha.buflen [2048]
639              Buffer  size  for  received HA messages. For IKEv1 the public DH
640              factors are also transmitted so depending on the DH group the HA
641              messages  can  get  quite  big (the default should be fine up to
642              modp4096).
643
644
645
646       charon.plugins.addrblock.strict [yes]
647              If set to yes, a subject certificate without an addrblock exten‐
648              sion is rejected if the issuer certificate has such an addrblock
649              extension. If set to no, subject certificates issued without the
650              addrblock  extension  are  accepted without any traffic selector
651              checks and no policy is enforced by the plugin.
652
653
654       charon.plugins.android_log.loglevel [1]
655              Loglevel for logging to Android specific logger.
656
657
658       charon.plugins.attr
659              Section to specify arbitrary attributes that are assigned  to  a
660              peer via configuration payload (CP).
661
662
663       charon.plugins.attr.<attr> []
664              <attr>  can be either address, netmask, dns, nbns, dhcp, subnet,
665              split-include, split-exclude or the numeric  identifier  of  the
666              attribute  type. The assigned value can be an IPv4/IPv6 address,
667              a subnet in CIDR notation or an arbitrary value depending on the
668              attribute type.  For some attribute types multiple values may be
669              specified as a comma separated list.
670
671
672       charon.plugins.attr-sql.crash_recovery [yes]
673              Release all online leases during startup.  Disable this to share
674              the DB between multiple VPN gateways.
675
676
677       charon.plugins.attr-sql.database []
678              Database  URI for attr-sql plugin used by charon. If it contains
679              a password, make sure to adjust the permissions  of  the  config
680              file accordingly.
681
682
683       charon.plugins.attr-sql.lease_history [yes]
684              Enable logging of SQL IP pool leases.
685
686
687       charon.plugins.bliss.use_bliss_b [yes]
688              Use the enhanced BLISS-B key generation and signature algorithm.
689
690
691       charon.plugins.bypass-lan.interfaces_ignore []
692              A comma-separated list of network interfaces for which connected
693              subnets should be ignored, if interfaces_use is  specified  this
694              option has no effect.
695
696
697       charon.plugins.bypass-lan.interfaces_use []
698              A comma-separated list of network interfaces for which connected
699              subnets should be considered. All other interfaces are ignored.
700
701
702       charon.plugins.bypass-lan.load [no]
703
704       charon.plugins.certexpire.csv.cron []
705              Cron style string specifying CSV export times.
706
707
708       charon.plugins.certexpire.csv.empty_string []
709              String to use in empty intermediate CA fields.
710
711
712       charon.plugins.certexpire.csv.fixed_fields [yes]
713              Use a fixed intermediate CA field count.
714
715
716       charon.plugins.certexpire.csv.force [yes]
717              Force export of all trustchains we have a private key for.
718
719
720       charon.plugins.certexpire.csv.format [%d:%m:%Y]
721              strftime(3) format string to export expiration dates as.
722
723
724       charon.plugins.certexpire.csv.local []
725              strftime(3) format string for the CSV file name to export  local
726              certificates to.
727
728
729       charon.plugins.certexpire.csv.remote []
730              strftime(3) format string for the CSV file name to export remote
731              certificates to.
732
733
734       charon.plugins.certexpire.csv.separator [,]
735              CSV field separator.
736
737
738       charon.plugins.coupling.file []
739              File to store coupling list to.
740
741
742       charon.plugins.coupling.hash [sha1]
743              Hashing algorithm to fingerprint coupled certificates.
744
745
746       charon.plugins.coupling.max [1]
747              Maximum number of coupling entries to create.
748
749
750       charon.plugins.curl.redir [-1]
751              Maximum number of redirects followed by the plugin, set to 0  to
752              disable following redirects, set to -1 for no limit.
753
754
755       charon.plugins.dhcp.force_server_address [no]
756              Always  use the configured server address. This might be helpful
757              if the DHCP server runs on the same host as strongSwan, and  the
758              DHCP  daemon does not listen on the loopback interface.  In that
759              case  the  server  cannot  be  reached  via  unicast  (or   even
760              255.255.255.255)  as  that would be routed via loopback. Setting
761              this option to yes and configuring the local  broadcast  address
762              (e.g.  192.168.0.255) as server address might work.
763
764
765       charon.plugins.dhcp.identity_lease [no]
766              Derive  user-defined  MAC  address from hash of IKE identity and
767              send client identity DHCP option.
768
769
770       charon.plugins.dhcp.interface []
771              Interface name the  plugin  uses  for  address  allocation.  The
772              default  is  to  bind to any (0.0.0.0) and let the system decide
773              which way to route the packets to the DHCP server.
774
775
776       charon.plugins.dhcp.server [255.255.255.255]
777              DHCP server unicast or broadcast IP address.
778
779
780       charon.plugins.dhcp.use_server_port [no]
781              Use the DHCP server port (67) as source  port,  instead  of  the
782              DHCP  client port (68), when a unicast server address is config‐
783              ured and the plugin acts as relay agent.  When replying in  this
784              mode the DHCP server will always send packets to the DHCP server
785              port and if no process binds that port an ICMP port unreachables
786              will  be  sent  back,  which  might be problematic for some DHCP
787              servers.  To avoid that, enabling this  option  will  cause  the
788              plugin  to  bind  the DHCP server port to send its requests when
789              acting as relay agent. This is not necessary if a DHCP server is
790              already  running on the same host and might even cause conflicts
791              (and since the server port is already bound, ICMPs should not be
792              an issue).
793
794
795       charon.plugins.dnscert.enable [no]
796              Enable fetching of CERT RRs via DNS.
797
798
799       charon.plugins.drbg.max_drbg_requests [4294967294]
800              Number  of  pseudo-random  bit  requests from the DRBG before an
801              automatic reseeding occurs.
802
803
804       charon.plugins.duplicheck.enable [yes]
805              Enable duplicheck plugin (if loaded).
806
807
808       charon.plugins.duplicheck.socket [unix://${piddir}/charon.dck]
809              Socket provided by the duplicheck plugin.
810
811
812       charon.plugins.eap-aka.request_identity [yes]
813
814       charon.plugins.eap-aka-3gpp.seq_check []
815              Enable to activate sequence check of the AKA SQN values in order
816              to trigger resync cycles.
817
818
819       charon.plugins.eap-aka-3gpp2.seq_check []
820              Enable to activate sequence check of the AKA SQN values in order
821              to trigger resync cycles.
822
823
824       charon.plugins.eap-dynamic.prefer_user [no]
825              If enabled the EAP methods proposed in an EAP-Nak  message  sent
826              by the peer are preferred over the methods registered locally.
827
828
829       charon.plugins.eap-dynamic.preferred []
830              The  preferred EAP method(s) to be used.  If it is not given the
831              first registered method will be used initially.  If a comma sep‐
832              arated  list  is  given the methods are tried in the given order
833              before trying the rest of the registered methods.
834
835
836       charon.plugins.eap-gtc.backend [pam]
837              XAuth backend to be used for credential verification.
838
839
840       charon.plugins.eap-peap.fragment_size [1024]
841              Maximum size of an EAP-PEAP packet.
842
843
844       charon.plugins.eap-peap.include_length [no]
845              Include length in non-fragmented EAP-PEAP packets.
846
847
848       charon.plugins.eap-peap.max_message_count [32]
849              Maximum number of processed EAP-PEAP packets (0 = no limit).
850
851
852       charon.plugins.eap-peap.phase2_method [mschapv2]
853              Phase2 EAP client authentication method.
854
855
856       charon.plugins.eap-peap.phase2_piggyback [no]
857              Phase2 EAP Identity request piggybacked by server onto TLS  Fin‐
858              ished message.
859
860
861       charon.plugins.eap-peap.phase2_tnc [no]
862              Start  phase2 EAP TNC protocol after successful client authenti‐
863              cation.
864
865
866       charon.plugins.eap-peap.request_peer_auth [no]
867              Request peer authentication based on a client certificate.
868
869
870       charon.plugins.eap-radius.accounting [no]
871              Send RADIUS accounting information to RADIUS servers.
872
873
874       charon.plugins.eap-radius.accounting_close_on_timeout [yes]
875              Close the IKE_SA if there is a  timeout  during  interim  RADIUS
876              accounting updates.
877
878
879       charon.plugins.eap-radius.accounting_interval [0]
880              Interval  in  seconds  for interim RADIUS accounting updates, if
881              not specified by the RADIUS server in the Access-Accept message.
882
883
884       charon.plugins.eap-radius.accounting_requires_vip [no]
885              If enabled, accounting is disabled unless an IKE_SA has at least
886              one  virtual  IP.   Only  for  IKEv2,  for IKEv1 a virtual IP is
887              strictly necessary.
888
889
890       charon.plugins.eap-radius.accounting_send_class [no]
891              If enabled, adds the Class attributes received in  Access-Accept
892              message to the RADIUS accounting messages.
893
894
895       charon.plugins.eap-radius.class_group [no]
896              Use  the  class  attribute  sent in the RADIUS-Accept message as
897              group membership information that  is  compared  to  the  groups
898              specified in the rightgroups option in ipsec.conf(5).
899
900
901
902       charon.plugins.eap-radius.close_all_on_timeout [no]
903              Closes all IKE_SAs if communication with the RADIUS server times
904              out. If it is not set only the current IKE_SA is closed.
905
906
907       charon.plugins.eap-radius.dae.enable [no]
908              Enables support for the  Dynamic  Authorization  Extension  (RFC
909              5176).
910
911
912       charon.plugins.eap-radius.dae.listen [0.0.0.0]
913              Address to listen for DAE messages from the RADIUS server.
914
915
916       charon.plugins.eap-radius.dae.port [3799]
917              Port to listen for DAE requests.
918
919
920       charon.plugins.eap-radius.dae.secret []
921              Shared  secret  used  to  verify/sign DAE messages. If set, make
922              sure to adjust the permissions of the config file accordingly.
923
924
925       charon.plugins.eap-radius.eap_start [no]
926              Send EAP-Start instead of EAP-Identity to start RADIUS conversa‐
927              tion.
928
929
930       charon.plugins.eap-radius.filter_id [no]
931              If  the RADIUS tunnel_type attribute with value ESP is received,
932              use the filter_id attribute sent in the RADIUS-Accept message as
933              group  membership  information  that  is  compared to the groups
934              specified in the rightgroups option in ipsec.conf(5).
935
936
937
938       charon.plugins.eap-radius.forward.ike_to_radius []
939              RADIUS attributes to be forwarded from IKEv2 to RADIUS  (can  be
940              defined  by  name  or  attribute  number, a colon can be used to
941              specify vendor-specific attributes, e.g. Reply-Message,  or  11,
942              or 36906:12).
943
944
945       charon.plugins.eap-radius.forward.radius_to_ike []
946              Same as charon.plugins.eap-radius.forward.ike_to_radius but from
947              RADIUS to IKEv2, a strongSwan specific private notify (40969) is
948              used to transmit the attributes.
949
950
951       charon.plugins.eap-radius.id_prefix []
952              Prefix  to  EAP-Identity,  some AAA servers use a IMSI prefix to
953              select the EAP method.
954
955
956       charon.plugins.eap-radius.nas_identifier [strongSwan]
957              NAS-Identifier to include in RADIUS messages.
958
959
960       charon.plugins.eap-radius.port [1812]
961              Port of RADIUS server (authentication).
962
963
964       charon.plugins.eap-radius.retransmit_base [1.4]
965              Base to use for calculating exponential back off.
966
967
968       charon.plugins.eap-radius.retransmit_timeout [2.0]
969              Timeout in seconds before sending first retransmit.
970
971
972       charon.plugins.eap-radius.retransmit_tries [4]
973              Number of times to retransmit a packet before giving up.
974
975
976       charon.plugins.eap-radius.secret []
977              Shared secret between RADIUS and  NAS.  If  set,  make  sure  to
978              adjust the permissions of the config file accordingly.
979
980
981       charon.plugins.eap-radius.server []
982              IP/Hostname of RADIUS server.
983
984
985       charon.plugins.eap-radius.servers
986              Section  to specify multiple RADIUS servers. The nas_identifier,
987              secret, sockets and port (or auth_port) options can be specified
988              for  each server. A server's IP/Hostname can be configured using
989              the address option.  The acct_port [1813] option can be used  to
990              specify  the  port  used  for RADIUS accounting. For each RADIUS
991              server a priority can be  specified  using  the  preference  [0]
992              option.  The  retransmission  time  for  each server can set set
993              using retransmit_base, retransmit_timeout and retransmit_tries.
994
995
996
997       charon.plugins.eap-radius.sockets [1]
998              Number of sockets (ports) to use, increase for high load.
999
1000
1001       charon.plugins.eap-radius.station_id_with_port [yes]
1002              Whether to include the UDP port in the Called- and  Calling-Sta‐
1003              tion-Id RADIUS attributes.
1004
1005
1006       charon.plugins.eap-radius.xauth
1007              Section  to  configure  multiple XAuth authentication rounds via
1008              RADIUS. The subsections define so called authentication profiles
1009              with  arbitrary names. In each profile section one or more XAuth
1010              types can be configured, with an assigned message. For each type
1011              a  separate XAuth exchange will be initiated and all replies get
1012              concatenated into the User-Password attribute, which  then  gets
1013              verified over RADIUS.
1014
1015              Available  XAuth  types  are  password,  passcode,  nextpin, and
1016              answer.  This type is not relevant  to  strongSwan  or  the  AAA
1017              server,  but  the client may show a different dialog (along with
1018              the configured message).
1019
1020              To use the configured profiles, they have to  be  configured  in
1021              the respective connection in ipsec.conf(5) by appending the pro‐
1022              file name, separated by a  colon,  to  the  xauth-radius  XAauth
1023              backend  configuration in rightauth or rightauth2, for instance,
1024              rightauth2=xauth-radius:profile.
1025
1026
1027
1028       charon.plugins.eap-sim.request_identity [yes]
1029
1030       charon.plugins.eap-simaka-sql.database []
1031
1032       charon.plugins.eap-simaka-sql.remove_used [no]
1033
1034       charon.plugins.eap-tls.fragment_size [1024]
1035              Maximum size of an EAP-TLS packet.
1036
1037
1038       charon.plugins.eap-tls.include_length [yes]
1039              Include length in non-fragmented EAP-TLS packets.
1040
1041
1042       charon.plugins.eap-tls.max_message_count [32]
1043              Maximum number of processed EAP-TLS packets (0 = no limit).
1044
1045
1046       charon.plugins.eap-tnc.max_message_count [10]
1047              Maximum number of processed EAP-TNC packets (0 = no limit).
1048
1049
1050       charon.plugins.eap-tnc.protocol [tnccs-2.0]
1051              IF-TNCCS protocol version  to  be  used  (tnccs-1.1,  tnccs-2.0,
1052              tnccs-dynamic).
1053
1054
1055
1056       charon.plugins.eap-ttls.fragment_size [1024]
1057              Maximum size of an EAP-TTLS packet.
1058
1059
1060       charon.plugins.eap-ttls.include_length [yes]
1061              Include length in non-fragmented EAP-TTLS packets.
1062
1063
1064       charon.plugins.eap-ttls.max_message_count [32]
1065              Maximum number of processed EAP-TTLS packets (0 = no limit).
1066
1067
1068       charon.plugins.eap-ttls.phase2_method [md5]
1069              Phase2 EAP client authentication method.
1070
1071
1072       charon.plugins.eap-ttls.phase2_piggyback [no]
1073              Phase2  EAP Identity request piggybacked by server onto TLS Fin‐
1074              ished message.
1075
1076
1077       charon.plugins.eap-ttls.phase2_tnc [no]
1078              Start phase2 EAP TNC protocol after successful client  authenti‐
1079              cation.
1080
1081
1082       charon.plugins.eap-ttls.phase2_tnc_method [pt]
1083              Phase2 EAP TNC transport protocol (pt as IETF standard or legacy
1084              tnc)
1085
1086
1087
1088       charon.plugins.eap-ttls.request_peer_auth [no]
1089              Request peer authentication based on a client certificate.
1090
1091
1092       charon.plugins.error-notify.socket [unix://${piddir}/charon.enfy]
1093              Socket provided by the error-notify plugin.
1094
1095
1096       charon.plugins.ext-auth.script []
1097              Command to pass to the  system  shell  for  peer  authorization.
1098              Authorization  is  considered successful if the command executes
1099              normally with an exit code of zero. For  all  other  exit  codes
1100              IKE_SA authorization is rejected.
1101
1102              The  following  environment  variables get passed to the script:
1103              IKE_UNIQUE_ID:   The   IKE_SA   numerical   unique   identifier.
1104              IKE_NAME:    The    peer    configuration    connection    name.
1105              IKE_LOCAL_HOST: Local IKE IP address.   IKE_REMOTE_HOST:  Remote
1106              IKE    IP    address.    IKE_LOCAL_ID:   Local   IKE   identity.
1107              IKE_REMOTE_ID: Remote IKE identity.   IKE_REMOTE_EAP_ID:  Remote
1108              EAP or XAuth identity, if used.
1109
1110
1111       charon.plugins.forecast.groups
1112       [224.0.0.1,224.0.0.22,224.0.0.251,224.0.0.252,239.255.255.250]
1113              Comma separated list of multicast groups to  join  locally.  The
1114              local  host  receives  and forwards packets in the local LAN for
1115              joined multicast groups only.  Packets matching the list of mul‐
1116              ticast  groups  get  forwarded to connected clients. The default
1117              group  includes  host  multicasts,   IGMP,   mDNS,   LLMNR   and
1118              SSDP/WS-Discovery,  and  is  usually  a  good choice for Windows
1119              clients.
1120
1121
1122       charon.plugins.forecast.interface []
1123              Name of the local interface to listen for broadcasts messages to
1124              forward.  If no interface is configured, the first usable inter‐
1125              face is used, which is usually just fine for single-homed hosts.
1126              If  your  host  has  multiple interfaces, set this option to the
1127              local LAN interface you want to forward broadcasts from/to.
1128
1129
1130       charon.plugins.forecast.reinject []
1131              Comma separated list of CHILD_SA configuration names  for  which
1132              to  perform  multi/broadcast reinjection. For clients connecting
1133              over such a configuration, any multi/broadcast received over the
1134              tunnel  gets  reinjected  to  all active tunnels. This makes the
1135              broadcasts visible to  other  peers,  and  for  examples  allows
1136              clients  to see others shares. If disabled, multi/broadcast mes‐
1137              sages received over a tunnel are injected to the  local  network
1138              only, but not to other IPsec clients.
1139
1140
1141       charon.plugins.gcrypt.quick_random [no]
1142              Use  faster random numbers in gcrypt; for testing only, produces
1143              weak keys!
1144
1145
1146       charon.plugins.ha.autobalance [0]
1147              Interval in seconds to automatically  balance  handled  segments
1148              between nodes. Set to 0 to disable.
1149
1150
1151       charon.plugins.ha.fifo_interface [yes]
1152
1153       charon.plugins.ha.heartbeat_delay [1000]
1154
1155       charon.plugins.ha.heartbeat_timeout [2100]
1156
1157       charon.plugins.ha.local []
1158
1159       charon.plugins.ha.monitor [yes]
1160
1161       charon.plugins.ha.pools []
1162
1163       charon.plugins.ha.remote []
1164
1165       charon.plugins.ha.resync [yes]
1166
1167       charon.plugins.ha.secret []
1168
1169       charon.plugins.ha.segment_count [1]
1170
1171       charon.plugins.ipseckey.enable [no]
1172              Enable fetching of IPSECKEY RRs via DNS.
1173
1174
1175       charon.plugins.kernel-libipsec.allow_peer_ts [no]
1176              Allow  that the remote traffic selector equals the IKE peer. The
1177              route installed for such traffic (via TUN device)  usually  pre‐
1178              vents  further  IKE  traffic.  The  fwmark  options for the ker‐
1179              nel-netlink and socket-default plugins can be used to circumvent
1180              that problem.
1181
1182
1183       charon.plugins.kernel-netlink.buflen [<min(PAGE_SIZE, 8192)>]
1184              Buffer size for received Netlink messages.
1185
1186
1187       charon.plugins.kernel-netlink.force_receive_buffer_size [no]
1188              If  the  maximum  Netlink  socket receive buffer in bytes set by
1189              receive_buffer_size  exceeds  the   system-wide   maximum   from
1190              /proc/sys/net/core/rmem_max, this option can be used to override
1191              the limit.  Enabling this  option  requires  special  privileges
1192              (CAP_NET_ADMIN).
1193
1194
1195       charon.plugins.kernel-netlink.fwmark []
1196              Firewall mark to set on the routing rule that directs traffic to
1197              our routing table.  The  format  is  [!]mark[/mask],  where  the
1198              optional  exclamation  mark  inverts  the meaning (i.e. the rule
1199              only applies to packets that don't match the mark).
1200
1201
1202       charon.plugins.kernel-netlink.hw_offload_feature_interface [lo]
1203              If the kernel supports hardware offloading, the plugin needs  to
1204              find  the feature flag which represents hardware offloading sup‐
1205              port for network devices. Using the  loopback  device  for  this
1206              purpose  is usually fine, since it should always be present. For
1207              rare cases in which the loopback device cannot be used to obtain
1208              the appropriate feature flag, this option can be used to specify
1209              an alternative interface for offload feature detection.
1210
1211
1212       charon.plugins.kernel-netlink.ignore_retransmit_errors [no]
1213              Whether to ignore errors potentially resulting from  a  retrans‐
1214              mission.
1215
1216
1217       charon.plugins.kernel-netlink.mss [0]
1218              MSS to set on installed routes, 0 to disable.
1219
1220
1221       charon.plugins.kernel-netlink.mtu [0]
1222              MTU to set on installed routes, 0 to disable.
1223
1224
1225       charon.plugins.kernel-netlink.parallel_route [no]
1226              Whether  to perform concurrent Netlink ROUTE queries on a single
1227              socket. While parallel queries can improve  throughput,  it  has
1228              more  overhead.  On  vanilla Linux, DUMP queries fail with EBUSY
1229              and must be retried, further decreasing performance.
1230
1231
1232       charon.plugins.kernel-netlink.parallel_xfrm [no]
1233              Whether to perform concurrent Netlink XFRM queries on  a  single
1234              socket.
1235
1236
1237       charon.plugins.kernel-netlink.policy_update [no]
1238              Whether to always use XFRM_MSG_UPDPOLICY to install policies.
1239
1240
1241       charon.plugins.kernel-netlink.port_bypass [no]
1242              Whether  to  use  port or socket based IKE XFRM bypass policies.
1243              IKE bypass policies are used to exempt  IKE  traffic  from  XFRM
1244              processing.  The default socket based policies are directly tied
1245              to the IKE UDP sockets, port  based  policies  use  global  XFRM
1246              bypass policies for the used IKE UDP ports.
1247
1248
1249       charon.plugins.kernel-netlink.process_rules [no]
1250              Whether  to  process  changes  in  routing rules to trigger roam
1251              events. This is currently only useful if the kernel based  route
1252              lookup  is  used  (i.e.  if route installation is disabled or an
1253              inverted fwmark match is configured).
1254
1255
1256       charon.plugins.kernel-netlink.receive_buffer_size [0]
1257              Maximum Netlink socket receive buffer in bytes. This value  con‐
1258              trols  how  many  bytes of Netlink messages can be received on a
1259              Netlink    socket.    The    default    value    is    set    by
1260              /proc/sys/net/core/rmem_default.   The  specified  value  cannot
1261              exceed the system-wide maximum from /proc/sys/net/core/rmem_max,
1262              unless force_receive_buffer_size is enabled.
1263
1264
1265       charon.plugins.kernel-netlink.retries [0]
1266              Number of Netlink message retransmissions to send on timeout.
1267
1268
1269       charon.plugins.kernel-netlink.roam_events [yes]
1270              Whether  to  trigger  roam  events when interfaces, addresses or
1271              routes change.
1272
1273
1274       charon.plugins.kernel-netlink.set_proto_port_transport_sa [no]
1275              Whether to set protocol and ports in the selector  installed  on
1276              transport  mode IPsec SAs in the kernel. While doing so enforces
1277              policies for inbound traffic, it also prevents the use of a sin‐
1278              gle IPsec SA by more than one traffic selector.
1279
1280
1281       charon.plugins.kernel-netlink.spdh_thresh
1282              XFRM policy hashing threshold configuration for IPv4 and IPv6.
1283
1284              The  section defines hashing thresholds to configure in the ker‐
1285              nel during daemon startup. Each address family takes a threshold
1286              for  the  local  subnet of an IPsec policy (src in out-policies,
1287              dst in in- and forward-policies) and the remote subnet  (dst  in
1288              out-policies, src in in- and forward-policies).
1289
1290              If the subnet has more or equal net bits than the threshold, the
1291              first threshold bits are used to calculate a hash to lookup  the
1292              policy.
1293
1294              Policy  hashing  thresholds  are not supported before Linux 3.18
1295              and might conflict with socket policies before Linux 4.8.
1296
1297
1298       charon.plugins.kernel-netlink.spdh_thresh.ipv4.lbits [32]
1299              Local subnet XFRM policy hashing threshold for IPv4.
1300
1301
1302       charon.plugins.kernel-netlink.spdh_thresh.ipv4.rbits [32]
1303              Remote subnet XFRM policy hashing threshold for IPv4.
1304
1305
1306       charon.plugins.kernel-netlink.spdh_thresh.ipv6.lbits [128]
1307              Local subnet XFRM policy hashing threshold for IPv6.
1308
1309
1310       charon.plugins.kernel-netlink.spdh_thresh.ipv6.rbits [128]
1311              Remote subnet XFRM policy hashing threshold for IPv6.
1312
1313
1314       charon.plugins.kernel-netlink.timeout [0]
1315              Netlink message retransmission timeout, 0 to disable retransmis‐
1316              sions.
1317
1318
1319       charon.plugins.kernel-netlink.xfrm_acq_expires [165]
1320              Lifetime  of XFRM acquire state created by the kernel when traf‐
1321              fic  matches  a  trap  policy.  The  value   gets   written   to
1322              /proc/sys/net/core/xfrm_acq_expires.   Indirectly  controls  the
1323              delay between XFRM acquire messages triggered by the kernel  for
1324              a  trap policy. The same value is used as timeout for SPIs allo‐
1325              cated  by  the  kernel.  The  default  value  equals  the  total
1326              retransmission  timeout  for IKE messages, see IKEv2 RETRANSMIS‐
1327              SION in strongswan.conf(5).
1328
1329
1330
1331       charon.plugins.kernel-pfkey.events_buffer_size [0]
1332              Size of the receive buffer for the event socket (0  for  default
1333              size).  Because  events  are  received asynchronously installing
1334              e.g. lots of policies may  require  a  larger  buffer  than  the
1335              default on certain platforms in order to receive all messages.
1336
1337
1338       charon.plugins.kernel-pfkey.route_via_internal [no]
1339              Whether  to  use the internal or external interface in installed
1340              routes. The internal interface is the one where the  IP  address
1341              contained in the local traffic selector is located, the external
1342              interface is the one over which the destination address  of  the
1343              IPsec tunnel can be reached. This is not relevant if virtual IPs
1344              are used, for which a TUN device is created that's used  in  the
1345              routes.
1346
1347
1348       charon.plugins.kernel-pfroute.vip_wait [1000]
1349              Time  in  ms to wait until virtual IP addresses appear/disappear
1350              before failing.
1351
1352
1353       charon.plugins.led.activity_led []
1354
1355       charon.plugins.led.blink_time [50]
1356
1357       charon.plugins.load-tester
1358              Section to configure the load-tester plugin, see LOAD  TESTS  in
1359              strongswan.conf(5) for details.
1360
1361
1362       charon.plugins.load-tester.addrs
1363              Section  that  contains  key/value  pairs with address pools (in
1364              CIDR notation) to use for a specific network interface e.g. eth0
1365              = 10.10.0.0/16.
1366
1367
1368       charon.plugins.load-tester.addrs_keep [no]
1369              Whether  to  keep dynamic addresses even after the associated SA
1370              got terminated.
1371
1372
1373       charon.plugins.load-tester.addrs_prefix [16]
1374              Network prefix length to use when installing dynamic  addresses.
1375              If set to -1 the full address is used (i.e. 32 or 128).
1376
1377
1378       charon.plugins.load-tester.ca_dir []
1379              Directory to load (intermediate) CA certificates from.
1380
1381
1382       charon.plugins.load-tester.child_rekey [600]
1383              Seconds to start CHILD_SA rekeying after setup.
1384
1385
1386       charon.plugins.load-tester.crl []
1387              URI  to  a  CRL  to include as certificate distribution point in
1388              generated certificates.
1389
1390
1391       charon.plugins.load-tester.delay [0]
1392              Delay between initiations for each thread.
1393
1394
1395       charon.plugins.load-tester.delete_after_established [no]
1396              Delete an IKE_SA as soon as it has been established.
1397
1398
1399       charon.plugins.load-tester.digest [sha1]
1400              Digest algorithm used when issuing certificates.
1401
1402
1403       charon.plugins.load-tester.dpd_delay [0]
1404              DPD delay to use in load test.
1405
1406
1407       charon.plugins.load-tester.dynamic_port [0]
1408              Base port to be used for requests (each client uses a  different
1409              port).
1410
1411
1412       charon.plugins.load-tester.eap_password [default-pwd]
1413              EAP secret to use in load test.
1414
1415
1416       charon.plugins.load-tester.enable [no]
1417              Enable  the  load  testing  plugin.   WARNING: Never enable this
1418              plugin on productive systems. It provides preconfigured  creden‐
1419              tials and allows an attacker to authenticate as any user.
1420
1421
1422       charon.plugins.load-tester.esp [aes128-sha1]
1423              CHILD_SA proposal to use for load tests.
1424
1425
1426       charon.plugins.load-tester.fake_kernel [no]
1427              Fake the kernel interface to allow load-testing against self.
1428
1429
1430       charon.plugins.load-tester.ike_rekey [0]
1431              Seconds to start IKE_SA rekeying after setup.
1432
1433
1434       charon.plugins.load-tester.init_limit [0]
1435              Global limit of concurrently established SAs during load test.
1436
1437
1438       charon.plugins.load-tester.initiator [0.0.0.0]
1439              Address to initiate from.
1440
1441
1442       charon.plugins.load-tester.initiator_auth [pubkey]
1443              Authentication method(s) the initiator uses.
1444
1445
1446       charon.plugins.load-tester.initiator_id []
1447              Initiator ID used in load test.
1448
1449
1450       charon.plugins.load-tester.initiator_match []
1451              Initiator ID to match against as responder.
1452
1453
1454       charon.plugins.load-tester.initiator_tsi []
1455              Traffic selector on initiator side, as proposed by initiator.
1456
1457
1458       charon.plugins.load-tester.initiator_tsr []
1459              Traffic selector on responder side, as proposed by initiator.
1460
1461
1462       charon.plugins.load-tester.initiators [0]
1463              Number of concurrent initiator threads to use in load test.
1464
1465
1466       charon.plugins.load-tester.issuer_cert []
1467              Path  to  the issuer certificate (if not configured a hard-coded
1468              default value is used).
1469
1470
1471       charon.plugins.load-tester.issuer_key []
1472              Path to private key that is used to issue certificates  (if  not
1473              configured a hard-coded default value is used).
1474
1475
1476       charon.plugins.load-tester.iterations [1]
1477              Number of IKE_SAs to initiate by each initiator in load test.
1478
1479
1480       charon.plugins.load-tester.mode [tunnel]
1481              IPsec mode to use, one of tunnel, transport, or beet.
1482
1483
1484
1485       charon.plugins.load-tester.pool []
1486              Provide INTERNAL_IPV4_ADDRs from a named pool.
1487
1488
1489       charon.plugins.load-tester.preshared_key [<default-psk>]
1490              Preshared key to use in load test.
1491
1492
1493       charon.plugins.load-tester.proposal [aes128-sha1-modp768]
1494              IKE proposal to use in load test.
1495
1496
1497       charon.plugins.load-tester.request_virtual_ip [no]
1498              Request  an  INTERNAL_IPV4_ADDR  and INTERNAL_IPV6_ADDR from the
1499              server.
1500
1501
1502       charon.plugins.load-tester.responder [127.0.0.1]
1503              Address to initiation connections to.
1504
1505
1506       charon.plugins.load-tester.responder_auth [pubkey]
1507              Authentication method(s) the responder uses.
1508
1509
1510       charon.plugins.load-tester.responder_id []
1511              Responder ID used in load test.
1512
1513
1514       charon.plugins.load-tester.responder_tsi [initiator_tsi]
1515              Traffic selector on initiator side, as narrowed by responder.
1516
1517
1518       charon.plugins.load-tester.responder_tsr [initiator_tsr]
1519              Traffic selector on responder side, as narrowed by responder.
1520
1521
1522       charon.plugins.load-tester.shutdown_when_complete [no]
1523              Shutdown the daemon after all IKE_SAs have been established.
1524
1525
1526       charon.plugins.load-tester.socket [unix://${piddir}/charon.ldt]
1527              Socket provided by the load-tester plugin.
1528
1529
1530       charon.plugins.load-tester.version [0]
1531              IKE version to use (0 means use IKEv2 as  initiator  and  accept
1532              any version as responder).
1533
1534
1535       charon.plugins.lookip.socket [unix://${piddir}/charon.lkp]
1536              Socket provided by the lookip plugin.
1537
1538
1539       charon.plugins.ntru.parameter_set [optimum]
1540              The   following   parameter  sets  are  available:  x9_98_speed,
1541              x9_98_bandwidth, x9_98_balance and optimum,  the  last  set  not
1542              being  part  of  the  X9.98 standard but having the best perfor‐
1543              mance.
1544
1545
1546       charon.plugins.openssl.engine_id [pkcs11]
1547              ENGINE ID to use in the OpenSSL plugin.
1548
1549
1550       charon.plugins.openssl.fips_mode [0]
1551              Set  OpenSSL  FIPS  mode:  disabled(0),  enabled(1),   Suite   B
1552              enabled(2).
1553
1554
1555       charon.plugins.osx-attr.append [yes]
1556              Whether DNS servers are appended to existing entries, instead of
1557              replacing them.
1558
1559
1560       charon.plugins.p-cscf.enable
1561              Section to enable requesting P-CSCF server addresses  for  indi‐
1562              vidual connections.
1563
1564
1565       charon.plugins.p-cscf.enable.<conn> [no]
1566              <conn>  is  the  name of a connection with an ePDG from which to
1567              request P-CSCF server addresses.   Requests  will  be  sent  for
1568              addresses  of  the  same  families  for  which  internal IPs are
1569              requested.
1570
1571
1572       charon.plugins.pkcs11.modules
1573              List of available PKCS#11 modules.
1574
1575
1576       charon.plugins.pkcs11.modules.<name>.load_certs [yes]
1577              Whether to automatically load certificates from tokens.
1578
1579
1580       charon.plugins.pkcs11.modules.<name>.os_locking [no]
1581              Whether OS locking should be enabled for this module.
1582
1583
1584       charon.plugins.pkcs11.modules.<name>.path []
1585              Full path to the shared object file of this PKCS#11 module.
1586
1587
1588       charon.plugins.pkcs11.reload_certs [no]
1589              Reload certificates from all tokens if charon receives a SIGHUP.
1590
1591
1592       charon.plugins.pkcs11.use_dh [no]
1593              Whether the PKCS#11 modules should be used for DH and ECDH  (see
1594              use_ecc option).
1595
1596
1597       charon.plugins.pkcs11.use_ecc [no]
1598              Whether  the  PKCS#11  modules should be used for ECDH and ECDSA
1599              public key operations. ECDSA private keys can be used regardless
1600              of this option.
1601
1602
1603       charon.plugins.pkcs11.use_hasher [no]
1604              Whether the PKCS#11 modules should be used to hash data.
1605
1606
1607       charon.plugins.pkcs11.use_pubkey [no]
1608              Whether the PKCS#11 modules should be used for public key opera‐
1609              tions, even for keys not stored on tokens.
1610
1611
1612       charon.plugins.pkcs11.use_rng [no]
1613              Whether the PKCS#11 modules should be used as RNG.
1614
1615
1616       charon.plugins.radattr.dir []
1617              Directory where RADIUS attributes are stored in  client-ID  spe‐
1618              cific files.
1619
1620
1621       charon.plugins.radattr.message_id [-1]
1622              Attributes  are  added to all IKE_AUTH messages by default (-1),
1623              or only to the IKE_AUTH message with the given IKEv2 message ID.
1624
1625
1626       charon.plugins.random.random [${random_device}]
1627              File to read random bytes from.
1628
1629
1630       charon.plugins.random.strong_equals_true [no]
1631              If set to yes the RNG_STRONG class reads random bytes  from  the
1632              same source as the RNG_TRUE class.
1633
1634
1635       charon.plugins.random.urandom [${urandom_device}]
1636              File to read pseudo random bytes from.
1637
1638
1639       charon.plugins.resolve.file [/etc/resolv.conf]
1640              File where to add DNS server entries.
1641
1642
1643       charon.plugins.resolve.resolvconf.iface_prefix [lo.inet.ipsec.]
1644              Prefix  used  for  interface  names  sent to resolvconf(8).  The
1645              nameserver address is appended to this prefix to make it unique.
1646              The  result  has  to  be a valid interface name according to the
1647              rules defined by resolvconf.  Also, it should have a high prior‐
1648              ity according to the order defined in interface-order(5).
1649
1650
1651
1652       charon.plugins.revocation.enable_crl [yes]
1653              Whether CRL validation should be enabled.
1654
1655
1656       charon.plugins.revocation.enable_ocsp [yes]
1657              Whether OCSP validation should be enabled.
1658
1659
1660       charon.plugins.save-keys.esp [no]
1661              Whether to save ESP keys.
1662
1663
1664       charon.plugins.save-keys.ike [no]
1665              Whether to save IKE keys.
1666
1667
1668       charon.plugins.save-keys.load [no]
1669              Whether to load the plugin.
1670
1671
1672       charon.plugins.save-keys.wireshark_keys []
1673              Directory  where  the keys are stored in the format supported by
1674              Wireshark. IKEv1 keys are stored in  the  ikev1_decryption_table
1675              file.  IKEv2 keys are stored in the ikev2_decryption_table file.
1676              Keys for ESP CHILD_SAs are stored in the esp_sa file.
1677
1678
1679       charon.plugins.socket-default.fwmark []
1680              Firewall mark to set on outbound packets.
1681
1682
1683       charon.plugins.socket-default.set_source [yes]
1684              Set source address on outbound packets, if possible.
1685
1686
1687       charon.plugins.socket-default.set_sourceif [no]
1688              Force sending interface on outbound packets, if  possible.  This
1689              allows using IPv6 link-local addresses as tunnel endpoints.
1690
1691
1692       charon.plugins.socket-default.use_ipv4 [yes]
1693              Listen on IPv4, if possible.
1694
1695
1696       charon.plugins.socket-default.use_ipv6 [yes]
1697              Listen on IPv6, if possible.
1698
1699
1700       charon.plugins.sql.database []
1701              Database URI for charon's SQL plugin. If it contains a password,
1702              make sure to adjust the permissions of the config  file  accord‐
1703              ingly.
1704
1705
1706       charon.plugins.sql.loglevel [-1]
1707              Loglevel for logging to SQL database.
1708
1709
1710       charon.plugins.stroke.allow_swap [yes]
1711              Analyze  addresses/hostnames  in left|right to detect which side
1712              is local and swap configuration options if  necessary.  If  dis‐
1713              abled left is always local.
1714
1715
1716
1717       charon.plugins.stroke.ignore_missing_ca_basic_constraint [no]
1718              Treat certificates in ipsec.d/cacerts and ipsec.conf ca sections
1719              as CA certificates even if they don't contain a  CA  basic  con‐
1720              straint.
1721
1722
1723       charon.plugins.stroke.max_concurrent [4]
1724              Maximum number of stroke messages handled concurrently.
1725
1726
1727       charon.plugins.stroke.prevent_loglevel_changes [no]
1728              If enabled log level changes via stroke socket are not allowed.
1729
1730
1731       charon.plugins.stroke.secrets_file [${sysconfdir}/ipsec.secrets]
1732              Location of the ipsec.secrets file
1733
1734
1735       charon.plugins.stroke.socket [unix://${piddir}/charon.ctl]
1736              Socket provided by the stroke plugin.
1737
1738
1739       charon.plugins.stroke.timeout [0]
1740              Timeout in ms for any stroke command. Use 0 to disable the time‐
1741              out.
1742
1743
1744       charon.plugins.systime-fix.interval [0]
1745              Interval in seconds to check system time for  validity.  0  dis‐
1746              ables the check.
1747
1748
1749       charon.plugins.systime-fix.reauth [no]
1750              Whether  to  use reauth or delete if an invalid cert lifetime is
1751              detected.
1752
1753
1754       charon.plugins.systime-fix.threshold []
1755              Threshold date where system time is considered  valid.  Disabled
1756              if not specified.
1757
1758
1759       charon.plugins.systime-fix.threshold_format [%Y]
1760              strptime(3) format used to parse threshold option.
1761
1762
1763       charon.plugins.systime-fix.timeout [0s]
1764              How  long to wait for a valid system time if an interval is con‐
1765              figured. 0 to recheck indefinitely.
1766
1767
1768       charon.plugins.tnc-ifmap.client_cert []
1769              Path to X.509 certificate file of IF-MAP client.
1770
1771
1772       charon.plugins.tnc-ifmap.client_key []
1773              Path to private key file of IF-MAP client.
1774
1775
1776       charon.plugins.tnc-ifmap.device_name []
1777              Unique name of strongSwan server as a PEP and/or PDP device.
1778
1779
1780       charon.plugins.tnc-ifmap.renew_session_interval [150]
1781              Interval  in  seconds  between  periodic   IF-MAP   RenewSession
1782              requests.
1783
1784
1785       charon.plugins.tnc-ifmap.server_cert []
1786              Path to X.509 certificate file of IF-MAP server.
1787
1788
1789       charon.plugins.tnc-ifmap.server_uri [https://localhost:8444/imap]
1790              URI of the form [https://]servername[:port][/path].
1791
1792
1793       charon.plugins.tnc-ifmap.username_password []
1794              Credentials  of  IF-MAP client of the form username:password. If
1795              set, make sure to adjust the  permissions  of  the  config  file
1796              accordingly.
1797
1798
1799       charon.plugins.tnc-imc.dlclose [yes]
1800              Unload IMC after use.
1801
1802
1803       charon.plugins.tnc-imc.preferred_language [en]
1804              Preferred language for TNC recommendations.
1805
1806
1807       charon.plugins.tnc-imv.dlclose [yes]
1808              Unload IMV after use.
1809
1810
1811       charon.plugins.tnc-imv.recommendation_policy [default]
1812              TNC recommendation policy, one of default, any, or all.
1813
1814
1815
1816       charon.plugins.tnc-pdp.pt_tls.enable [yes]
1817              Enable PT-TLS protocol on the strongSwan PDP.
1818
1819
1820       charon.plugins.tnc-pdp.pt_tls.port [271]
1821              PT-TLS server port the strongSwan PDP is listening on.
1822
1823
1824       charon.plugins.tnc-pdp.radius.enable [yes]
1825              Enable RADIUS protocol on the strongSwan PDP.
1826
1827
1828       charon.plugins.tnc-pdp.radius.method [ttls]
1829              EAP tunnel method to be used.
1830
1831
1832       charon.plugins.tnc-pdp.radius.port [1812]
1833              RADIUS server port the strongSwan PDP is listening on.
1834
1835
1836       charon.plugins.tnc-pdp.radius.secret []
1837              Shared  RADIUS  secret  between  strongSwan PDP and NAS. If set,
1838              make sure to adjust the permissions of the config  file  accord‐
1839              ingly.
1840
1841
1842       charon.plugins.tnc-pdp.server []
1843              Name of the strongSwan PDP as contained in the AAA certificate.
1844
1845
1846       charon.plugins.tnc-pdp.timeout []
1847              Timeout in seconds before closing incomplete connections.
1848
1849
1850       charon.plugins.tnccs-11.max_message_size [45000]
1851              Maximum size of a PA-TNC message (XML & Base64 encoding).
1852
1853
1854       charon.plugins.tnccs-20.max_batch_size [65522]
1855              Maximum size of a PB-TNC batch (upper limit via PT-EAP = 65529).
1856
1857
1858       charon.plugins.tnccs-20.max_message_size [65490]
1859              Maximum  size  of  a  PA-TNC  message  (upper limit via PT-EAP =
1860              65497).
1861
1862
1863       charon.plugins.tnccs-20.mutual [no]
1864              Enable PB-TNC mutual protocol.
1865
1866
1867       charon.plugins.tnccs-20.tests.pb_tnc_noskip [no]
1868              Send an unsupported PB-TNC message type  with  the  NOSKIP  flag
1869              set.
1870
1871
1872       charon.plugins.tnccs-20.tests.pb_tnc_version [2]
1873              Send a PB-TNC batch with a modified PB-TNC version.
1874
1875
1876       charon.plugins.tpm.fips_186_4 [no]
1877              Is the TPM 2.0 FIPS-186-4 compliant, forcing e.g. the use of the
1878              default salt length instead of maximum salt length  with  RSAPSS
1879              padding.
1880
1881
1882       charon.plugins.tpm.tcti.name [device|tabrmd]
1883              Name  of  TPM  2.0 TCTI library. Valid values: tabrmd, device or
1884              mssim.  Defaults are device if the /dev/tpmrm0 in-kernel TPM 2.0
1885              resource  manager device exists, and tabrmd otherwise, requiring
1886              the d-bus based TPM 2.0 access broker and resource manager to be
1887              available.
1888
1889
1890       charon.plugins.tpm.tcti.opts [/dev/tpmrm0|<none>]
1891              Options  for  the TPM 2.0 TCTI library. Defaults are /dev/tpmrm0
1892              if the TCTI library name is device and no options otherwise.
1893
1894
1895       charon.plugins.tpm.use_rng [no]
1896              Whether the TPM should be used as RNG.
1897
1898
1899       charon.plugins.unbound.dlv_anchors []
1900              File to read trusted keys for DLV (DNSSEC Lookaside  Validation)
1901              from.  It  uses  the same format as trust_anchors.  Only one DLV
1902              can be configured, which is then used as  a  root  trusted  DLV,
1903              this means that it is a lookaside for the root.
1904
1905
1906       charon.plugins.unbound.resolv_conf [/etc/resolv.conf]
1907              File to read DNS resolver configuration from.
1908
1909
1910       charon.plugins.unbound.trust_anchors [/etc/ipsec.d/dnssec.keys]
1911              File  to read DNSSEC trust anchors from (usually root zone KSK).
1912              The format of the file is the standard  DNS  Zone  file  format,
1913              anchors can be stored as DS or DNSKEY entries in the file.
1914
1915
1916       charon.plugins.updown.dns_handler [no]
1917              Whether the updown script should handle DNS servers assigned via
1918              IKEv1 Mode Config or IKEv2  Config  Payloads  (if  enabled  they
1919              can't be handled by other plugins, like resolve)
1920
1921
1922       charon.plugins.vici.socket [unix://${piddir}/charon.vici]
1923              Socket the vici plugin serves clients.
1924
1925
1926       charon.plugins.whitelist.enable [yes]
1927              Enable loaded whitelist plugin.
1928
1929
1930       charon.plugins.whitelist.socket [unix://${piddir}/charon.wlst]
1931              Socket provided by the whitelist plugin.
1932
1933
1934       charon.plugins.wolfssl.fips_mode [no]
1935              Enable  to  prevent loading the plugin if wolfSSL is not in FIPS
1936              mode.
1937
1938
1939       charon.plugins.xauth-eap.backend [radius]
1940              EAP plugin to be used as backend for XAuth credential  verifica‐
1941              tion.
1942
1943
1944       charon.plugins.xauth-pam.pam_service [login]
1945              PAM service to be used for authentication.
1946
1947
1948       charon.plugins.xauth-pam.session [no]
1949              Open/close a PAM session for each active IKE_SA.
1950
1951
1952       charon.plugins.xauth-pam.trim_email [yes]
1953              If an email address is received as an XAuth username, trim it to
1954              just the username part.
1955
1956
1957       charon.port [500]
1958              UDP port used locally. If set to 0 a random port will  be  allo‐
1959              cated.
1960
1961
1962       charon.port_nat_t [4500]
1963              UDP  port  used  locally  in case of NAT-T. If set to 0 a random
1964              port will be allocated.  Has to be different  from  charon.port,
1965              otherwise a random port will be allocated.
1966
1967
1968       charon.prefer_best_path [no]
1969              By  default, charon keeps SAs on the routing path with addresses
1970              it previously used if that path is still usable. By setting this
1971              option  to  yes,  it  tries more aggressively to update SAs with
1972              MOBIKE on routing priority changes using the cheapest path. This
1973              adds  more noise, but allows to dynamically adapt SAs to routing
1974              priority changes. This option has no effect  if  MOBIKE  is  not
1975              supported or disabled.
1976
1977
1978       charon.prefer_configured_proposals [yes]
1979              Prefer  locally configured proposals for IKE/IPsec over supplied
1980              ones as responder (disabling this can avoid keying  retries  due
1981              to INVALID_KE_PAYLOAD notifies).
1982
1983
1984       charon.prefer_temporary_addrs [no]
1985              By  default,  permanent IPv6 source addresses are preferred over
1986              temporary ones (RFC 4941),  to  make  connections  more  stable.
1987              Enable this option to reverse this.
1988
1989              It also affects which IPv6 addresses are announced as additional
1990              addresses if MOBIKE is used.  If the option  is  disabled,  only
1991              permanent  addresses  are sent, and only temporary ones if it is
1992              enabled.
1993
1994
1995       charon.process_route [yes]
1996              Process RTM_NEWROUTE and RTM_DELROUTE events.
1997
1998
1999       charon.processor.priority_threads
2000              Section to configure the number of reserved threads per priority
2001              class see JOB PRIORITY MANAGEMENT in strongswan.conf(5).
2002
2003
2004
2005       charon.rdn_matching [strict]
2006              How RDNs in subject DNs of certificates are matched against con‐
2007              figured identities. Possible values are  strict  (the  default),
2008              reordered,  and relaxed.  With strict the number, type and order
2009              of all RDNs has to match, wildcards (*) for the values  of  RDNs
2010              are  allowed  (that's  the  case  for all three variants). Using
2011              reordered also matches DNs if the RDNs  appear  in  a  different
2012              order,  the number and type still has to match. Finally, relaxed
2013              also allows matches of DNs that contain more RDNs than the  con‐
2014              figured  identity  (missing  RDNs  are  treated  like a wildcard
2015              match).
2016
2017              Note that reordered and relaxed impose a  considerable  overhead
2018              on memory usage and runtime, in particular, for mismatches, com‐
2019              pared to strict.
2020
2021
2022
2023       charon.receive_delay [0]
2024              Delay in ms for receiving packets, to simulate larger RTT.
2025
2026
2027       charon.receive_delay_request [yes]
2028              Delay request messages.
2029
2030
2031       charon.receive_delay_response [yes]
2032              Delay response messages.
2033
2034
2035       charon.receive_delay_type [0]
2036              Specific IKEv2 message type to delay, 0 for any.
2037
2038
2039       charon.replay_window [32]
2040              Size of the AH/ESP replay window, in packets.
2041
2042
2043       charon.retransmit_base [1.8]
2044              Base to use for calculating  exponential  back  off,  see  IKEv2
2045              RETRANSMISSION in strongswan.conf(5).
2046
2047
2048
2049       charon.retransmit_jitter [0]
2050              Maximum  jitter  in  percent  to  apply  randomly  to calculated
2051              retransmission timeout (0 to disable).
2052
2053
2054       charon.retransmit_limit [0]
2055              Upper limit in seconds for calculated retransmission timeout  (0
2056              to disable).
2057
2058
2059       charon.retransmit_timeout [4.0]
2060              Timeout in seconds before sending first retransmit.
2061
2062
2063       charon.retransmit_tries [5]
2064              Number of times to retransmit a packet before giving up.
2065
2066
2067       charon.retry_initiate_interval [0]
2068              Interval  in  seconds to use when retrying to initiate an IKE_SA
2069              (e.g. if DNS resolution failed), 0 to disable retries.
2070
2071
2072       charon.reuse_ikesa [yes]
2073              Initiate CHILD_SA within existing IKE_SAs  (always  enabled  for
2074              IKEv1).
2075
2076
2077       charon.routing_table []
2078              Numerical routing table to install routes to.
2079
2080
2081       charon.routing_table_prio []
2082              Priority of the routing table.
2083
2084
2085       charon.rsa_pss [no]
2086              Whether to use RSA with PSS padding instead of PKCS#1 padding by
2087              default.
2088
2089
2090       charon.send_delay [0]
2091              Delay in ms for sending packets, to simulate larger RTT.
2092
2093
2094       charon.send_delay_request [yes]
2095              Delay request messages.
2096
2097
2098       charon.send_delay_response [yes]
2099              Delay response messages.
2100
2101
2102       charon.send_delay_type [0]
2103              Specific IKEv2 message type to delay, 0 for any.
2104
2105
2106       charon.send_vendor_id [no]
2107              Send strongSwan vendor ID payload
2108
2109
2110       charon.signature_authentication [yes]
2111              Whether to enable Signature Authentication as per RFC 7427.
2112
2113
2114       charon.signature_authentication_constraints [yes]
2115              If enabled, signature schemes configured in rightauth, in  addi‐
2116              tion  to  getting  used as constraints against signature schemes
2117              employed in the certificate chain, are also used as  constraints
2118              against the signature scheme used by peers during IKEv2.
2119
2120
2121       charon.spi_label [0x0000000000000000]
2122              Value mixed into the local IKE SPIs after applying spi_mask.
2123
2124
2125
2126       charon.spi_mask [0x0000000000000000]
2127              Mask  applied to local IKE SPIs before mixing in spi_label (bits
2128              set will be replaced with spi_label).
2129
2130
2131
2132       charon.spi_max [0xcfffffff]
2133              The upper limit for SPIs requested from  the  kernel  for  IPsec
2134              SAs.
2135
2136
2137       charon.spi_min [0xc0000000]
2138              The  lower  limit  for  SPIs requested from the kernel for IPsec
2139              SAs. Should not be set lower  than  0x00000100  (256),  as  SPIs
2140              between 1 and 255 are reserved by IANA.
2141
2142
2143       charon.start-scripts
2144              Section containing a list of scripts (name = path) that are exe‐
2145              cuted when the daemon is started.
2146
2147
2148       charon.stop-scripts
2149              Section containing a list of scripts (name = path) that are exe‐
2150              cuted when the daemon is terminated.
2151
2152
2153       charon.syslog
2154              Section  to  define  syslog loggers, see LOGGER CONFIGURATION in
2155              strongswan.conf(5).
2156
2157
2158
2159       charon.syslog.<facility>
2160              <facility> is one of the supported syslog facilities, see LOGGER
2161              CONFIGURATION in strongswan.conf(5).
2162
2163
2164
2165       charon.syslog.<facility>.<subsystem> [<default>]
2166              Loglevel for a specific subsystem.
2167
2168
2169       charon.syslog.<facility>.default [1]
2170              Specifies  the  default  loglevel  to be used for subsystems for
2171              which no specific loglevel is defined.
2172
2173
2174       charon.syslog.<facility>.ike_name [no]
2175              Prefix each log entry with the  connection  name  and  a  unique
2176              numerical identifier for each IKE_SA.
2177
2178
2179       charon.syslog.<facility>.log_level [no]
2180              Add  the  log  level  of  each message after the subsystem (e.g.
2181              [IKE2]).
2182
2183
2184       charon.syslog.identifier []
2185              Global identifier used for an openlog(3) call, prepended to each
2186              log  message  by  syslog.   If not configured, openlog(3) is not
2187              called, so the value will depend on system defaults  (often  the
2188              program name).
2189
2190
2191       charon.threads [16]
2192              Number  of  worker  threads  in  charon.  Several  of  these are
2193              reserved for long running tasks in internal modules and plugins.
2194              Therefore,  make sure you don't set this value too low. The num‐
2195              ber of idle worker threads listed in ipsec  statusall  might  be
2196              used as indicator on the number of reserved threads.
2197
2198
2199       charon.tls.cipher []
2200              List of TLS encryption ciphers.
2201
2202
2203       charon.tls.key_exchange []
2204              List of TLS key exchange methods.
2205
2206
2207       charon.tls.mac []
2208              List of TLS MAC algorithms.
2209
2210
2211       charon.tls.suites []
2212              List of TLS cipher suites.
2213
2214
2215       charon.tnc.tnc_config [/etc/tnc_config]
2216              TNC IMC/IMV configuration file.
2217
2218
2219       charon.user []
2220              Name of the user the daemon changes to after startup.
2221
2222
2223       charon.x509.enforce_critical [yes]
2224              Discard certificates with unsupported or unknown critical exten‐
2225              sions.
2226
2227
2228       charon-nm.ca_dir [<default>]
2229              Directory from which to load CA certificates if  no  certificate
2230              is configured.
2231
2232
2233       charon-systemd.journal
2234              Section to configure native systemd journal logger, very similar
2235              to the syslog logger as described  in  LOGGER  CONFIGURATION  in
2236              strongswan.conf(5).
2237
2238
2239
2240       charon-systemd.journal.<subsystem> [<default>]
2241              Loglevel for a specific subsystem.
2242
2243
2244       charon-systemd.journal.default [1]
2245              Specifies  the  default  loglevel  to be used for subsystems for
2246              which no specific loglevel is defined.
2247
2248
2249       imv_policy_manager.command_allow []
2250              Shell command to be executed with recommendation allow.
2251
2252
2253       imv_policy_manager.command_block []
2254              Shell command to be executed with all other recommendations.
2255
2256
2257       imv_policy_manager.database []
2258              Database URI for the database that stores the  package  informa‐
2259              tion. If it contains a password, make sure to adjust the permis‐
2260              sions of the config file accordingly.
2261
2262
2263       imv_policy_manager.load [sqlite]
2264              Plugins to load in IMV policy manager.
2265
2266
2267       libimcv.debug_level [1]
2268              Debug level for a stand-alone libimcv library.
2269
2270
2271       libimcv.load [random nonce gmp pubkey x509]
2272              Plugins to load in IMC/IMVs with stand-alone libimcv library.
2273
2274
2275       libimcv.plugins.imc-attestation.aik_blob []
2276              AIK encrypted private key blob file.
2277
2278
2279       libimcv.plugins.imc-attestation.aik_cert []
2280              AIK certificate file.
2281
2282
2283       libimcv.plugins.imc-attestation.aik_handle []
2284              AIK object handle.
2285
2286
2287       libimcv.plugins.imc-attestation.aik_pubkey []
2288              AIK public key file.
2289
2290
2291       libimcv.plugins.imc-attestation.hash_algorithm [sha384]
2292              Preferred measurement hash algorithm.
2293
2294
2295       libimcv.plugins.imc-attestation.mandatory_dh_groups [yes]
2296              Enforce mandatory Diffie-Hellman groups.
2297
2298
2299       libimcv.plugins.imc-attestation.nonce_len [20]
2300              DH nonce length.
2301
2302
2303       libimcv.plugins.imc-attestation.pcr17_after []
2304              PCR17 value after measurement.
2305
2306
2307       libimcv.plugins.imc-attestation.pcr17_before []
2308              PCR17 value before measurement.
2309
2310
2311       libimcv.plugins.imc-attestation.pcr17_meas []
2312              Dummy measurement value extended into PCR17 if the TBOOT log  is
2313              not available.
2314
2315
2316       libimcv.plugins.imc-attestation.pcr18_after []
2317              PCR18 value after measurement.
2318
2319
2320       libimcv.plugins.imc-attestation.pcr18_before []
2321              PCR18 value before measurement.
2322
2323
2324       libimcv.plugins.imc-attestation.pcr18_meas []
2325              Dummy  measurement value extended into PCR17 if the TBOOT log is
2326              not available.
2327
2328
2329       libimcv.plugins.imc-attestation.pcr_info [no]
2330              Whether to send pcr_before and pcr_after info.
2331
2332
2333       libimcv.plugins.imc-attestation.use_quote2 [yes]
2334              Use Quote2 AIK signature instead of Quote signature.
2335
2336
2337       libimcv.plugins.imc-attestation.use_version_info [no]
2338              Version Info is included in Quote2 signature.
2339
2340
2341       libimcv.plugins.imc-hcd.push_info [yes]
2342              Send quadruple info without being prompted.
2343
2344
2345       libimcv.plugins.imc-hcd.subtypes []
2346              Section to define PWG HCD PA subtypes.
2347
2348
2349       libimcv.plugins.imc-hcd.subtypes.<section> []
2350              Defines a PWG HCD PA subtype section. Recognized subtype section
2351              names are system, control, marker, finisher, interface and scan‐
2352              ner.
2353
2354
2355
2356       libimcv.plugins.imc-hcd.subtypes.<section>.<sw_type> []
2357              Defines a software type section. Recognized software  type  sec‐
2358              tion  names are firmware, resident_application and user_applica‐
2359              tion.
2360
2361
2362
2363       libimcv.plugins.imc-hcd.subtypes.<section>.<sw_type>.<software> []
2364              Defines a software section having an arbitrary name.
2365
2366
2367       libimcv.plugins.imc-hcd.subtypes.<section>.<sw_type>.<software>.name []
2368              Name of the software installed on the hardcopy device.
2369
2370
2371       libimcv.plugins.imc-hcd.subtypes.<section>.<sw_type>.<software>.patches
2372       []
2373              String  describing  all patches applied to the given software on
2374              this hardcopy device. The individual patches are separated by  a
2375              newline character '\n'.
2376
2377
2378       libimcv.plugins.imc-hcd.subtypes.<section>.<sw_type>.<soft‐
2379       ware>.string_version []
2380              String describing the version of  the  given  software  on  this
2381              hardcopy device.
2382
2383
2384       libimcv.plugins.imc-hcd.subtypes.<section>.<sw_type>.<software>.version
2385       []
2386              Hex-encoded version string with a length of 16 octets consisting
2387              of  the  fields  major  version number (4 octets), minor version
2388              number (4 octets), build number (4 octets), service  pack  major
2389              number (2 octets) and service pack minor number (2 octets).
2390
2391
2392       libimcv.plugins.imc-hcd.subtypes.<section>.attributes_natural_language
2393       [en]
2394              Variable length natural language  tag  conforming  to  RFC  5646
2395              specifies  the language to be used in the health assessment mes‐
2396              sage of a given subtype.
2397
2398
2399       libimcv.plugins.imc-hcd.subtypes.system.certification_state []
2400              Hex-encoded certification state.
2401
2402
2403       libimcv.plugins.imc-hcd.subtypes.system.configuration_state []
2404              Hex-encoded configuration state.
2405
2406
2407       libimcv.plugins.imc-hcd.subtypes.system.machine_type_model []
2408              String specifying the machine type and  model  of  the  hardcopy
2409              device.
2410
2411
2412       libimcv.plugins.imc-hcd.subtypes.system.pstn_fax_enabled [no]
2413              Specifies if a PSTN facsimile interface is installed and enabled
2414              on the hardcopy device.
2415
2416
2417       libimcv.plugins.imc-hcd.subtypes.system.time_source []
2418              String specifying the hostname of the network time  server  used
2419              by the hardcopy device.
2420
2421
2422       libimcv.plugins.imc-hcd.subtypes.system.user_application_enabled [no]
2423              Specifies if users can dynamically download and execute applica‐
2424              tions on the hardcopy device.
2425
2426
2427       libimcv.plugins.imc-hcd.subtypes.system.user_application_persis‐
2428       tence_enabled [no]
2429              Specifies  if  user dynamically downloaded applications can per‐
2430              sist outside the boundaries of a  single  job  on  the  hardcopy
2431              device.
2432
2433
2434       libimcv.plugins.imc-hcd.subtypes.system.vendor_name []
2435              String specifying the manufacturer of the hardcopy device.
2436
2437
2438       libimcv.plugins.imc-hcd.subtypes.system.vendor_smi_code []
2439              Integer  specifying the globally unique 24-bit SMI code assigned
2440              to the manufacturer of the hardcopy device.
2441
2442
2443       libimcv.plugins.imc-os.device_cert []
2444              Manually set the path to the  client  device  certificate  (e.g.
2445              /etc/pts/aikCert.der)
2446
2447
2448       libimcv.plugins.imc-os.device_handle []
2449              Manually set handle to a private key bound to a smartcard or TPM
2450              (e.g.  0x81010004)
2451
2452
2453       libimcv.plugins.imc-os.device_id []
2454              Manually set the client device ID in  hexadecimal  format  (e.g.
2455              1083f03988c9762703b1c1080c2e46f72b99cc31)
2456
2457
2458       libimcv.plugins.imc-os.device_pubkey []
2459              Manually  set  the  path  to  the client device public key (e.g.
2460              /etc/pts/aikPub.der)
2461
2462
2463       libimcv.plugins.imc-os.push_info [yes]
2464              Send operating system info without being prompted.
2465
2466
2467       libimcv.plugins.imc-scanner.push_info [yes]
2468              Send open listening ports without being prompted.
2469
2470
2471       libimcv.plugins.imc-swima.eid_epoch [0x11223344]
2472              Set 32 bit epoch value for event IDs manually if  software  col‐
2473              lector database is not available.
2474
2475
2476       libimcv.plugins.imc-swima.subscriptions [no]
2477              Accept SW Inventory or SW Events subscriptions.
2478
2479
2480       libimcv.plugins.imc-swima.swid_database []
2481              URI  to software collector database containing event timestamps,
2482              software creation and deletion  events  and  collected  software
2483              identifiers.  If it contains a password, make sure to adjust the
2484              permissions of the config file accordingly.
2485
2486
2487       libimcv.plugins.imc-swima.swid_directory [${prefix}/share]
2488              Directory where SWID tags are located.
2489
2490
2491       libimcv.plugins.imc-swima.swid_full [no]
2492              Include file information in the XML-encoded SWID tags.
2493
2494
2495       libimcv.plugins.imc-swima.swid_pretty [no]
2496              Generate XML-encoded SWID tags with pretty indentation.
2497
2498
2499       libimcv.plugins.imc-test.additional_ids [0]
2500              Number of additional IMC IDs.
2501
2502
2503       libimcv.plugins.imc-test.command [none]
2504              Command to be sent to the Test IMV.
2505
2506
2507       libimcv.plugins.imc-test.dummy_size [0]
2508              Size of dummy attribute to be sent to the Test  IMV  (0  =  dis‐
2509              abled).
2510
2511
2512       libimcv.plugins.imc-test.retry [no]
2513              Do a handshake retry.
2514
2515
2516       libimcv.plugins.imc-test.retry_command []
2517              Command to be sent to the Test IMV in the handshake retry.
2518
2519
2520       libimcv.plugins.imv-attestation.cadir []
2521              Path to directory with AIK cacerts.
2522
2523
2524       libimcv.plugins.imv-attestation.dh_group [ecp256]
2525              Preferred Diffie-Hellman group.
2526
2527
2528       libimcv.plugins.imv-attestation.hash_algorithm [sha384]
2529              Preferred measurement hash algorithm.
2530
2531
2532       libimcv.plugins.imv-attestation.mandatory_dh_groups [yes]
2533              Enforce mandatory Diffie-Hellman groups.
2534
2535
2536       libimcv.plugins.imv-attestation.min_nonce_len [0]
2537              DH minimum nonce length.
2538
2539
2540       libimcv.plugins.imv-os.remediation_uri []
2541              URI pointing to operating system remediation instructions.
2542
2543
2544       libimcv.plugins.imv-scanner.remediation_uri []
2545              URI pointing to scanner remediation instructions.
2546
2547
2548       libimcv.plugins.imv-swima.rest_api.timeout [120]
2549              Timeout of SWID REST API HTTP POST transaction.
2550
2551
2552       libimcv.plugins.imv-swima.rest_api.uri []
2553              HTTP URI of the SWID REST API.
2554
2555
2556       libimcv.plugins.imv-test.rounds [0]
2557              Number of IMC-IMV retry rounds.
2558
2559
2560       libimcv.stderr_quiet [no]
2561              Disable output to stderr with a stand-alone libimcv library.
2562
2563
2564       libimcv.swid_gen.command [/usr/local/bin/swid_generator]
2565              SWID generator command to be executed.
2566
2567
2568       libimcv.swid_gen.tag_creator.name [strongSwan Project]
2569              Name of the tagCreator entity.
2570
2571
2572       libimcv.swid_gen.tag_creator.regid [strongswan.org]
2573              regid of the tagCreator entity.
2574
2575
2576       manager.database []
2577              Credential  database URI for manager. If it contains a password,
2578              make sure to adjust the permissions of the config  file  accord‐
2579              ingly.
2580
2581
2582       manager.debug [no]
2583              Enable debugging in manager.
2584
2585
2586       manager.load []
2587              Plugins to load in manager.
2588
2589
2590       manager.socket []
2591              FastCGI socket of manager, to run it statically.
2592
2593
2594       manager.threads [10]
2595              Threads to use for request handling.
2596
2597
2598       manager.timeout [15m]
2599              Session timeout for manager.
2600
2601
2602       medsrv.database []
2603              Mediation  server  database URI. If it contains a password, make
2604              sure to adjust the permissions of the config file accordingly.
2605
2606
2607       medsrv.debug [no]
2608              Debugging in mediation server web application.
2609
2610
2611       medsrv.dpd [5m]
2612              DPD timeout to use in mediation server plugin.
2613
2614
2615       medsrv.load []
2616              Plugins to load in mediation server plugin.
2617
2618
2619       medsrv.password_length [6]
2620              Minimum password  length  required  for  mediation  server  user
2621              accounts.
2622
2623
2624       medsrv.rekey [20m]
2625              Rekeying time on mediation connections in mediation server plug‐
2626              in.
2627
2628
2629       medsrv.socket []
2630              Run Mediation server web application statically on socket.
2631
2632
2633       medsrv.threads [5]
2634              Number of thread for mediation service web application.
2635
2636
2637       medsrv.timeout [15m]
2638              Session timeout for mediation service.
2639
2640
2641       pki.load []
2642              Plugins to load in ipsec pki tool.
2643
2644
2645       pool.database []
2646              Database URI for the database that stores IP pools and  configu‐
2647              ration  attributes.  If it contains a password, make        sure
2648              to adjust the permissions of the config file accordingly.
2649
2650
2651       pool.load []
2652              Plugins to load in ipsec pool tool.
2653
2654
2655       scepclient.load []
2656              Plugins to load in ipsec scepclient tool.
2657
2658
2659       sec-updater
2660              Options for the sec-updater tool.
2661
2662
2663       sec-updater.database []
2664              Global IMV policy database URI. If it contains a password,  make
2665              sure to adjust the permissions of the config file accordingly.
2666
2667
2668       sec-updater.load []
2669              Plugins to load in sec-updater tool.
2670
2671
2672       sec-updater.swid_gen.command [/usr/local/bin/swid_generator]
2673              SWID generator command to be executed.
2674
2675
2676       sec-updater.swid_gen.tag_creator.name [strongSwan Project]
2677              Name of the tagCreator entity.
2678
2679
2680       sec-updater.swid_gen.tag_creator.regid [strongswan.org]
2681              regid of the tagCreator entity.
2682
2683
2684       sec-updater.tmp.deb_file [/tmp/sec-updater.deb]
2685              Temporary storage for downloaded deb package file.
2686
2687
2688       sec-updater.tmp.tag_file [/tmp/sec-updater.tag]
2689              Temporary storage for generated SWID tags.
2690
2691
2692       sec-updater.tnc_manage_command [/var/www/tnc/manage.py]
2693              strongTNC manage.py command used to import SWID tags.
2694
2695
2696       starter.config_file [${sysconfdir}/ipsec.conf]
2697              Location of the ipsec.conf file
2698
2699
2700       starter.load_warning [yes]
2701              Disable charon plugin load option warning.
2702
2703
2704       sw-collector
2705              Options for the sw-collector tool.
2706
2707
2708       sw-collector.database []
2709              URI  to software collector database containing event timestamps,
2710              software creation and deletion  events  and  collected  software
2711              identifiers.  If it contains a password, make sure to adjust the
2712              permissions of the config file accordingly.
2713
2714
2715       sw-collector.first_file [/var/log/bootstrap.log]
2716              Path pointing to file created when the Linux OS was installed.
2717
2718
2719       sw-collector.first_time [0000-00-00T00:00:00Z]
2720              Time in UTC when the Linux OS was installed.
2721
2722
2723       sw-collector.history []
2724              Path pointing to apt history.log file.
2725
2726
2727       sw-collector.load []
2728              Plugins to load in sw-collector tool.
2729
2730
2731       sw-collector.rest_api.timeout [120]
2732              Timeout of REST API HTTP POST transaction.
2733
2734
2735       sw-collector.rest_api.uri []
2736              HTTP URI of the central collector's REST API.
2737
2738
2739       swanctl.load []
2740              Plugins to load in swanctl.
2741
2742
2743       swanctl.socket [unix://${piddir}/charon.vici]
2744              VICI socket to connect to by default.
2745
2746

LOGGER CONFIGURATION

2748       Options in strongswan.conf(5) provide a much more flexible way to  con‐
2749       figure  loggers  for  the  IKE daemon charon than using the charondebug
2750       option in ipsec.conf(5).
2751
2752       Note: If any loggers are specified in strongswan.conf, charondebug does
2753       not have any effect.
2754
2755       There are currently two types of loggers:
2756
2757       File loggers
2758              Log  directly  to  a file and are defined by specifying an arbi‐
2759              trarily named subsection in the charon.filelog section. The full
2760              path  to the file is configured in the path setting of that sub‐
2761              section, however, if it only contains  characters  permitted  in
2762              section  names,  the  setting  may  also be omitted and the path
2763              specified as name of the subsection. To log to the  console  the
2764              two special filenames stdout and stderr may be used.
2765
2766       Syslog loggers
2767              Log  into  a  syslog  facility and are defined by specifying the
2768              facility  to  log  to  as  the  name  of  a  subsection  in  the
2769              charon.syslog  section.  The  following facilities are currently
2770              supported: daemon and auth.
2771
2772       Multiple loggers can be defined for each type with different  log  ver‐
2773       bosity for the different subsystems of the daemon.
2774
2775
2776   Subsystems
2777       dmn    Main daemon setup/cleanup/signal handling
2778
2779       mgr    IKE_SA manager, handling synchronization for IKE_SA access
2780
2781       ike    IKE_SA
2782
2783       chd    CHILD_SA
2784
2785       job    Jobs queueing/processing and thread pool management
2786
2787       cfg    Configuration management and plugins
2788
2789       knl    IPsec/Networking kernel interface
2790
2791       net    IKE network communication
2792
2793       asn    Low-level encoding/decoding (ASN.1, X.509 etc.)
2794
2795       enc    Packet encoding/decoding encryption/decryption operations
2796
2797       tls    libtls library messages
2798
2799       esp    libipsec library messages
2800
2801       lib    libstrongswan library messages
2802
2803       tnc    Trusted Network Connect
2804
2805       imc    Integrity Measurement Collector
2806
2807       imv    Integrity Measurement Verifier
2808
2809       pts    Platform Trust Service
2810
2811   Loglevels
2812       -1     Absolutely silent
2813
2814       0      Very basic auditing logs, (e.g. SA up/SA down)
2815
2816       1      Generic  control  flow with errors, a good default to see what's
2817              going on
2818
2819       2      More detailed debugging control flow
2820
2821       3      Including RAW data dumps in Hex
2822
2823       4      Also include sensitive material in dumps, e.g. keys
2824
2825   Example
2826            charon {
2827                 filelog {
2828                      charon {
2829                           path = /var/log/charon.log
2830                           time_format = %b %e %T
2831                           append = no
2832                           default = 1
2833                      }
2834                      stderr {
2835                           ike = 2
2836                           knl = 3
2837                           ike_name = yes
2838                      }
2839                 }
2840                 syslog {
2841                      # enable logging to LOG_DAEMON, use defaults
2842                      daemon {
2843                      }
2844                      # minimalistic IKE auditing logging to LOG_AUTHPRIV
2845                      auth {
2846                           default = -1
2847                           ike = 0
2848                      }
2849                 }
2850            }
2851
2852

JOB PRIORITY MANAGEMENT

2854       Some operations in the IKEv2 daemon charon  are  currently  implemented
2855       synchronously and blocking. Two examples for such operations are commu‐
2856       nication with a RADIUS server  via  EAP-RADIUS,  or  fetching  CRL/OCSP
2857       information during certificate chain verification. Under high load con‐
2858       ditions, the thread pool may run out of  available  threads,  and  some
2859       more important jobs, such as liveness checking, may not get executed in
2860       time.
2861
2862       To prevent thread starvation in such  situations  job  priorities  were
2863       introduced.   The  job  processor  will reserve some threads for higher
2864       priority jobs, these threads are  not  available  for  lower  priority,
2865       locking jobs.
2866
2867   Implementation
2868       Currently  4  priorities have been defined, and they are used in charon
2869       as follows:
2870
2871       CRITICAL
2872              Priority for long-running dispatcher jobs.
2873
2874       HIGH   INFORMATIONAL exchanges, as used by liveness checking (DPD).
2875
2876       MEDIUM Everything not HIGH/LOW, including IKE_SA_INIT processing.
2877
2878       LOW    IKE_AUTH message processing. RADIUS and CRL fetching block here
2879
2880       Although IKE_SA_INIT processing is  computationally  expensive,  it  is
2881       explicitly  assigned  to the MEDIUM class. This allows charon to do the
2882       DH exchange while other threads are blocked in IKE_AUTH. To prevent the
2883       daemon from accepting more IKE_SA_INIT requests than it can handle, use
2884       IKE_SA_INIT DROPPING.
2885
2886       The thread pool processes jobs strictly by priority,  meaning  it  will
2887       consume  all  higher  priority  jobs before looking for ones with lower
2888       priority. Further, it reserves threads for certain priorities. A prior‐
2889       ity  class  having reserved n threads will always have n threads avail‐
2890       able for this class (either currently processing a job, or waiting  for
2891       one).
2892
2893   Configuration
2894       To  ensure  that  there  are always enough threads available for higher
2895       priority tasks, threads must be reserved for each priority class.
2896
2897       charon.processor.priority_threads.critical [0]
2898              Threads reserved for CRITICAL priority class jobs
2899
2900       charon.processor.priority_threads.high [0]
2901              Threads reserved for HIGH priority class jobs
2902
2903       charon.processor.priority_threads.medium [0]
2904              Threads reserved for MEDIUM priority class jobs
2905
2906       charon.processor.priority_threads.low [0]
2907              Threads reserved for LOW priority class jobs
2908
2909       Let's consider the following configuration:
2910
2911            charon {
2912                 processor {
2913                      priority_threads {
2914                           high = 1
2915                           medium = 4
2916                      }
2917                 }
2918            }
2919
2920       With this configuration, one  thread  is  reserved  for  HIGH  priority
2921       tasks.  As currently only liveness checking and stroke message process‐
2922       ing is done with high priority, one or two  threads  should  be  suffi‐
2923       cient.
2924
2925       The  MEDIUM class mostly processes non-blocking jobs. Unless your setup
2926       is experiencing many blocks in locks while accessing shared  resources,
2927       threads for one or two times the number of CPU cores is fine.
2928
2929       It  is  usually not required to reserve threads for CRITICAL jobs. Jobs
2930       in this class rarely return and do not  release  their  thread  to  the
2931       pool.
2932
2933       The  remaining  threads  are available for LOW priority jobs. Reserving
2934       threads does not make sense (until we have an even lower priority).
2935
2936   Monitoring
2937       To see what the threads are actually  doing,  invoke  ipsec  statusall.
2938       Under high load, something like this will show up:
2939
2940            worker threads: 2 or 32 idle, 5/1/2/22 working,
2941                 job queue: 0/0/1/149, scheduled: 198
2942
2943       From 32 worker threads,
2944
2945       2      are currently idle.
2946
2947       5      are  running  CRITICAL  priority jobs (dispatching from sockets,
2948              etc.).
2949
2950       1      is currently handling a HIGH priority job. This is actually  the
2951              thread currently providing this information via stroke.
2952
2953       2      are  handling  MEDIUM  priority jobs, likely IKE_SA_INIT or CRE‐
2954              ATE_CHILD_SA messages.
2955
2956       22     are handling LOW priority jobs, probably  waiting  for  an  EAP-
2957              RADIUS response while processing IKE_AUTH messages.
2958
2959       The  job  queue  load shows how many jobs are queued for each priority,
2960       ready for execution. The single MEDIUM priority job will  get  executed
2961       immediately,  as  we  have  two spare threads reserved for MEDIUM class
2962       jobs.
2963
2964

IKE_SA_INIT DROPPING

2966       If a responder receives more connection requests per  seconds  than  it
2967       can handle, it does not make sense to accept more IKE_SA_INIT messages.
2968       And if they are queued but can't get processed in time, an answer might
2969       be sent after the client has already given up and restarted its connec‐
2970       tion setup. This additionally increases the load on the responder.
2971
2972       To limit the responder load resulting from new connection attempts, the
2973       daemon  can  drop  IKE_SA_INIT messages just after reception. There are
2974       two mechanisms to decide if this should  happen,  configured  with  the
2975       following options:
2976
2977       charon.init_limit_half_open [0]
2978              Limit  based  on  the  number  of  half  open IKE_SAs. Half open
2979              IKE_SAs are SAs in connecting state, but not yet established.
2980
2981       charon.init_limit_job_load [0]
2982              Limit based on the number of jobs currently queued for  process‐
2983              ing (sum over all job priorities).
2984
2985       The  second  limit  includes  load  from  other jobs, such as rekeying.
2986       Choosing a good value is difficult and  depends  on  the  hardware  and
2987       expected load.
2988
2989       The first limit is simpler to calculate, but includes the load from new
2990       connections only. If your responder is capable of negotiating 100  tun‐
2991       nels/s, you might set this limit to 1000. The daemon will then drop new
2992       connection attempts if generating a response would require more than 10
2993       seconds.  If  you are allowing for a maximum response time of more than
2994       30 seconds, consider  adjusting  the  timeout  for  connecting  IKE_SAs
2995       (charon.half_open_timeout).  A responder, by default, deletes an IKE_SA
2996       if the initiator does not establish it within 30  seconds.  Under  high
2997       load, a higher value might be required.
2998
2999

LOAD TESTS

3001       To  do  stability testing and performance optimizations, the IKE daemon
3002       charon provides the load-tester plugin. This plugin allows one to setup
3003       thousands of tunnels concurrently against the daemon itself or a remote
3004       host.
3005
3006       WARNING: Never enable the load-testing plugin on productive systems. It
3007       provides  preconfigured credentials and allows an attacker to authenti‐
3008       cate as any user.
3009
3010   Configuration details
3011       For public key authentication, the responder uses the "CN=srv, OU=load-
3012       test,  O=strongSwan"  identity.  For  the  initiator,  each  connection
3013       attempt uses a different identity in the form "CN=c1-r1,  OU=load-test,
3014       O=strongSwan",  where the first number indicates the client number, the
3015       second the authentication round (if multiple authentication rounds  are
3016       used).
3017
3018       For  PSK  authentication,  FQDN  identities  are  used. The server uses
3019       srv.strongswan.org,  the  client  uses  an   identity   in   the   form
3020       c1-r1.strongswan.org.
3021
3022       For   EAP   authentication,   the   client  uses  a  NAI  in  the  form
3023       100000000010001@strongswan.org.
3024
3025       To configure multiple authentication rounds, concatenate multiple meth‐
3026       ods using, e.g.
3027            initiator_auth = pubkey|psk|eap-md5|eap-aka
3028
3029       The responder uses a hardcoded certificate based on a 1024-bit RSA key.
3030       This certificate additionally serves as CA certificate. A peer uses the
3031       same private key, but generates client certificates on demand signed by
3032       the CA certificate. Install the Responder/CA certificate on the  remote
3033       host to authenticate all clients.
3034
3035       To  speed  up  testing,  the  load  tester  plugin implements a special
3036       Diffie-Hellman implementation called modpnull. By setting
3037            proposal = aes128-sha1-modpnull
3038       this wicked fast DH implementation is used. It  does  not  provide  any
3039       security  at  all,  but  allows one to run tests without DH calculation
3040       overhead.
3041
3042   Examples
3043       In the simplest case, the daemon initiates IKE_SAs against itself using
3044       the  loopback interface. This will actually establish double the number
3045       of IKE_SAs, as the daemon is initiator and responder for each IKE_SA at
3046       the  same  time.  Installation of IPsec SAs would fail, as each SA gets
3047       installed twice. To simulate the correct behavior, a fake kernel inter‐
3048       face  can be enabled which does not install the IPsec SAs at the kernel
3049       level.
3050
3051       A simple loopback configuration might look like this:
3052
3053            charon {
3054                 # create new IKE_SAs for each CHILD_SA to simulate
3055                 # different clients
3056                 reuse_ikesa = no
3057                 # turn off denial of service protection
3058                 dos_protection = no
3059
3060                 plugins {
3061                      load-tester {
3062                           # enable the plugin
3063                           enable = yes
3064                           # use 4 threads to initiate connections
3065                           # simultaneously
3066                           initiators = 4
3067                           # each thread initiates 1000 connections
3068                           iterations = 1000
3069                           # delay each initiation in each thread by 20ms
3070                           delay = 20
3071                           # enable the fake kernel interface to
3072                           # avoid SA conflicts
3073                           fake_kernel = yes
3074                      }
3075                 }
3076            }
3077
3078       This will initiate 4000 IKE_SAs within 20 seconds. You may increase the
3079       delay  value  if your box can not handle that much load, or decrease it
3080       to put more load on it. If the daemon  starts  retransmitting  messages
3081       your box probably can not handle all connection attempts.
3082
3083       The  plugin  also  allows one to test against a remote host. This might
3084       help to test against a real world configuration. A connection setup  to
3085       do stress testing of a gateway might look like this:
3086
3087            charon {
3088                 reuse_ikesa = no
3089                 threads = 32
3090
3091                 plugins {
3092                      load-tester {
3093                           enable = yes
3094                           # 10000 connections, ten in parallel
3095                           initiators = 10
3096                           iterations = 1000
3097                           # use a delay of 100ms, overall time is:
3098                           # iterations * delay = 100s
3099                           delay = 100
3100                           # address of the gateway
3101                           remote = 1.2.3.4
3102                           # IKE-proposal to use
3103                           proposal = aes128-sha1-modp1024
3104                           # use faster PSK authentication instead
3105                           # of 1024bit RSA
3106                           initiator_auth = psk
3107                           responder_auth = psk
3108                           # request a virtual IP using configuration
3109                           # payloads
3110                           request_virtual_ip = yes
3111                           # enable CHILD_SA every 60s
3112                           child_rekey = 60
3113                      }
3114                 }
3115            }
3116
3117

IKEv2 RETRANSMISSION

3119       Retransmission  timeouts  in  the IKEv2 daemon charon can be configured
3120       globally using the three keys listed below:
3121
3122              charon.retransmit_base [1.8]
3123              charon.retransmit_timeout [4.0]
3124              charon.retransmit_tries [5]
3125              charon.retransmit_jitter [0]
3126              charon.retransmit_limit [0]
3127
3128       The following algorithm is used to calculate the timeout:
3129
3130            relative timeout = retransmit_timeout * retransmit_base ^ (n-1)
3131
3132       Where n is the current retransmission  count.  The  calculated  timeout
3133       can't  exceed the configured retransmit_limit (if any), which is useful
3134       if the number of retries is high.
3135
3136       If a jitter in percent is configured, the timeout is modified  as  fol‐
3137       lows:
3138
3139            relative timeout -= random(0, retransmit_jitter * relative timeout)
3140
3141       Using the default values, packets are retransmitted in:
3142
3143
3144       Retransmission   Relative Timeout   Absolute Timeout
3145       ─────────────────────────────────────────────────────
3146       1                              4s                 4s
3147       2                              7s                11s
3148       3                             13s                24s
3149       4                             23s                47s
3150       5                             42s                89s
3151       giving up                     76s               165s
3152

VARIABLES

3154       The variables used above are configured as follows:
3155
3156       ${piddir}               /run/strongswan
3157       ${prefix}               /usr
3158       ${random_device}        /dev/random
3159       ${urandom_device}       /dev/urandom
3160

FILES

3162       /etc/strongswan.conf       configuration file
3163       /etc/strongswan.d/         directory containing included config snippets
3164       /etc/strongswan.d/charon/  plugin specific config snippets
3165

SEE ALSO

3167       ipsec.conf(5), ipsec.secrets(5), ipsec(8), charon-cmd(8)
3168
3169

HISTORY

3171       Written  for  the  strongSwan  project  ⟨http://www.strongswan.org⟩  by
3172       Tobias Brunner, Andreas Steffen and Martin Willi.
3173
3174
3175
31765.9.1                                                       STRONGSWAN.CONF(5)
Impressum