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

LOGGER CONFIGURATION

2829       Options  in strongswan.conf(5) provide a much more flexible way to con‐
2830       figure loggers for the IKE daemon charon than using the charondebug op‐
2831       tion in ipsec.conf(5).
2832
2833       Note: If any loggers are specified in strongswan.conf, charondebug does
2834       not have any effect.
2835
2836       There are currently two types of loggers:
2837
2838       File loggers
2839              Log directly to a file and are defined by  specifying  an  arbi‐
2840              trarily named subsection in the charon.filelog section. The full
2841              path to the file is configured in the path setting of that  sub‐
2842              section,  however,  if  it only contains characters permitted in
2843              section names, the setting may also  be  omitted  and  the  path
2844              specified  as  name of the subsection. To log to the console the
2845              two special filenames stdout and stderr may be used.
2846
2847       Syslog loggers
2848              Log into a syslog facility and are defined by specifying the fa‐
2849              cility  to log to as the name of a subsection in the charon.sys‐
2850              log section. The following facilities are  currently  supported:
2851              daemon and auth.
2852
2853       Multiple  loggers  can be defined for each type with different log ver‐
2854       bosity for the different subsystems of the daemon.
2855
2856
2857   Subsystems
2858       dmn    Main daemon setup/cleanup/signal handling
2859
2860       mgr    IKE_SA manager, handling synchronization for IKE_SA access
2861
2862       ike    IKE_SA
2863
2864       chd    CHILD_SA
2865
2866       job    Jobs queueing/processing and thread pool management
2867
2868       cfg    Configuration management and plugins
2869
2870       knl    IPsec/Networking kernel interface
2871
2872       net    IKE network communication
2873
2874       asn    Low-level encoding/decoding (ASN.1, X.509 etc.)
2875
2876       enc    Packet encoding/decoding encryption/decryption operations
2877
2878       tls    libtls library messages
2879
2880       esp    libipsec library messages
2881
2882       lib    libstrongswan library messages
2883
2884       tnc    Trusted Network Connect
2885
2886       imc    Integrity Measurement Collector
2887
2888       imv    Integrity Measurement Verifier
2889
2890       pts    Platform Trust Service
2891
2892   Loglevels
2893       -1     Absolutely silent
2894
2895       0      Very basic auditing logs, (e.g. SA up/SA down)
2896
2897       1      Generic control flow with errors, a good default to  see  what's
2898              going on
2899
2900       2      More detailed debugging control flow
2901
2902       3      Including RAW data dumps in Hex
2903
2904       4      Also include sensitive material in dumps, e.g. keys
2905
2906   Example
2907            charon {
2908                 filelog {
2909                      charon {
2910                           path = /var/log/charon.log
2911                           time_format = %b %e %T
2912                           append = no
2913                           default = 1
2914                      }
2915                      stderr {
2916                           ike = 2
2917                           knl = 3
2918                           ike_name = yes
2919                      }
2920                 }
2921                 syslog {
2922                      # enable logging to LOG_DAEMON, use defaults
2923                      daemon {
2924                      }
2925                      # minimalistic IKE auditing logging to LOG_AUTHPRIV
2926                      auth {
2927                           default = -1
2928                           ike = 0
2929                      }
2930                 }
2931            }
2932
2933

JOB PRIORITY MANAGEMENT

2935       Some  operations  in  the IKEv2 daemon charon are currently implemented
2936       synchronously and blocking. Two examples for such operations are commu‐
2937       nication  with a RADIUS server via EAP-RADIUS, or fetching CRL/OCSP in‐
2938       formation during certificate chain verification. Under high load condi‐
2939       tions,  the thread pool may run out of available threads, and some more
2940       important jobs, such as liveness checking,  may  not  get  executed  in
2941       time.
2942
2943       To prevent thread starvation in such situations job priorities were in‐
2944       troduced.  The job processor will reserve some threads for higher  pri‐
2945       ority jobs, these threads are not available for lower priority, locking
2946       jobs.
2947
2948   Implementation
2949       Currently 4 priorities have been defined, and they are used  in  charon
2950       as follows:
2951
2952       CRITICAL
2953              Priority for long-running dispatcher jobs.
2954
2955       HIGH   INFORMATIONAL exchanges, as used by liveness checking (DPD).
2956
2957       MEDIUM Everything not HIGH/LOW, including IKE_SA_INIT processing.
2958
2959       LOW    IKE_AUTH message processing. RADIUS and CRL fetching block here
2960
2961       Although IKE_SA_INIT processing is computationally expensive, it is ex‐
2962       plicitly assigned to the MEDIUM class. This allows charon to do the  DH
2963       exchange  while  other  threads are blocked in IKE_AUTH. To prevent the
2964       daemon from accepting more IKE_SA_INIT requests than it can handle, use
2965       IKE_SA_INIT DROPPING.
2966
2967       The  thread  pool  processes jobs strictly by priority, meaning it will
2968       consume all higher priority jobs before looking  for  ones  with  lower
2969       priority. Further, it reserves threads for certain priorities. A prior‐
2970       ity class having reserved n threads will always have n  threads  avail‐
2971       able  for this class (either currently processing a job, or waiting for
2972       one).
2973
2974   Configuration
2975       To ensure that there are always enough  threads  available  for  higher
2976       priority tasks, threads must be reserved for each priority class.
2977
2978       charon.processor.priority_threads.critical [0]
2979              Threads reserved for CRITICAL priority class jobs
2980
2981       charon.processor.priority_threads.high [0]
2982              Threads reserved for HIGH priority class jobs
2983
2984       charon.processor.priority_threads.medium [0]
2985              Threads reserved for MEDIUM priority class jobs
2986
2987       charon.processor.priority_threads.low [0]
2988              Threads reserved for LOW priority class jobs
2989
2990       Let's consider the following configuration:
2991
2992            charon {
2993                 processor {
2994                      priority_threads {
2995                           high = 1
2996                           medium = 4
2997                      }
2998                 }
2999            }
3000
3001       With  this  configuration,  one  thread  is  reserved for HIGH priority
3002       tasks. As currently only liveness checking and stroke message  process‐
3003       ing  is  done  with  high priority, one or two threads should be suffi‐
3004       cient.
3005
3006       The MEDIUM class mostly processes non-blocking jobs. Unless your  setup
3007       is  experiencing many blocks in locks while accessing shared resources,
3008       threads for one or two times the number of CPU cores is fine.
3009
3010       It is usually not required to reserve threads for CRITICAL  jobs.  Jobs
3011       in  this  class  rarely  return  and do not release their thread to the
3012       pool.
3013
3014       The remaining threads are available for LOW  priority  jobs.  Reserving
3015       threads does not make sense (until we have an even lower priority).
3016
3017   Monitoring
3018       To  see  what  the  threads are actually doing, invoke ipsec statusall.
3019       Under high load, something like this will show up:
3020
3021            worker threads: 2 or 32 idle, 5/1/2/22 working,
3022                 job queue: 0/0/1/149, scheduled: 198
3023
3024       From 32 worker threads,
3025
3026       2      are currently idle.
3027
3028       5      are running CRITICAL priority jobs  (dispatching  from  sockets,
3029              etc.).
3030
3031       1      is  currently handling a HIGH priority job. This is actually the
3032              thread currently providing this information via stroke.
3033
3034       2      are handling MEDIUM priority jobs, likely  IKE_SA_INIT  or  CRE‐
3035              ATE_CHILD_SA messages.
3036
3037       22     are  handling LOW priority jobs, probably waiting for an EAP-RA‐
3038              DIUS response while processing IKE_AUTH messages.
3039
3040       The job queue load shows how many jobs are queued  for  each  priority,
3041       ready  for  execution. The single MEDIUM priority job will get executed
3042       immediately, as we have two spare threads  reserved  for  MEDIUM  class
3043       jobs.
3044
3045

IKE_SA_INIT DROPPING

3047       If  a  responder  receives more connection requests per seconds than it
3048       can handle, it does not make sense to accept more IKE_SA_INIT messages.
3049       And if they are queued but can't get processed in time, an answer might
3050       be sent after the client has already given up and restarted its connec‐
3051       tion setup. This additionally increases the load on the responder.
3052
3053       To limit the responder load resulting from new connection attempts, the
3054       daemon can drop IKE_SA_INIT messages just after  reception.  There  are
3055       two  mechanisms  to  decide  if this should happen, configured with the
3056       following options:
3057
3058       charon.init_limit_half_open [0]
3059              Limit based on the  number  of  half  open  IKE_SAs.  Half  open
3060              IKE_SAs are SAs in connecting state, but not yet established.
3061
3062       charon.init_limit_job_load [0]
3063              Limit  based on the number of jobs currently queued for process‐
3064              ing (sum over all job priorities).
3065
3066       The second limit includes load  from  other  jobs,  such  as  rekeying.
3067       Choosing  a good value is difficult and depends on the hardware and ex‐
3068       pected load.
3069
3070       The first limit is simpler to calculate, but includes the load from new
3071       connections  only. If your responder is capable of negotiating 100 tun‐
3072       nels/s, you might set this limit to 1000. The daemon will then drop new
3073       connection attempts if generating a response would require more than 10
3074       seconds. If you are allowing for a maximum response time of  more  than
3075       30  seconds,  consider  adjusting  the  timeout  for connecting IKE_SAs
3076       (charon.half_open_timeout).  A responder, by default, deletes an IKE_SA
3077       if  the  initiator  does not establish it within 30 seconds. Under high
3078       load, a higher value might be required.
3079
3080

LOAD TESTS

3082       To do stability testing and performance optimizations, the  IKE  daemon
3083       charon provides the load-tester plugin. This plugin allows one to setup
3084       thousands of tunnels concurrently against the daemon itself or a remote
3085       host.
3086
3087       WARNING: Never enable the load-testing plugin on productive systems. It
3088       provides preconfigured credentials and allows an attacker to  authenti‐
3089       cate as any user.
3090
3091   Configuration details
3092       For public key authentication, the responder uses the "CN=srv, OU=load-
3093       test, O=strongSwan" identity. For the initiator,  each  connection  at‐
3094       tempt  uses  a  different identity in the form "CN=c1-r1, OU=load-test,
3095       O=strongSwan", where the first number indicates the client number,  the
3096       second  the authentication round (if multiple authentication rounds are
3097       used).
3098
3099       For PSK authentication, FQDN  identities  are  used.  The  server  uses
3100       srv.strongswan.org,   the   client   uses   an  identity  in  the  form
3101       c1-r1.strongswan.org.
3102
3103       For  EAP  authentication,  the  client  uses  a   NAI   in   the   form
3104       100000000010001@strongswan.org.
3105
3106       To configure multiple authentication rounds, concatenate multiple meth‐
3107       ods using, e.g.
3108            initiator_auth = pubkey|psk|eap-md5|eap-aka
3109
3110       The responder uses a hardcoded certificate based on a 1024-bit RSA key.
3111       This certificate additionally serves as CA certificate. A peer uses the
3112       same private key, but generates client certificates on demand signed by
3113       the  CA certificate. Install the Responder/CA certificate on the remote
3114       host to authenticate all clients.
3115
3116       To speed up testing,  the  load  tester  plugin  implements  a  special
3117       Diffie-Hellman implementation called modpnull. By setting
3118            proposal = aes128-sha1-modpnull
3119       this wicked fast DH implementation is used. It does not provide any se‐
3120       curity at all, but allows one to run tests without DH calculation over‐
3121       head.
3122
3123   Examples
3124       In the simplest case, the daemon initiates IKE_SAs against itself using
3125       the loopback interface. This will actually establish double the  number
3126       of IKE_SAs, as the daemon is initiator and responder for each IKE_SA at
3127       the same time.  Installation of IPsec SAs would fail, as each  SA  gets
3128       installed twice. To simulate the correct behavior, a fake kernel inter‐
3129       face can be enabled which does not install the IPsec SAs at the  kernel
3130       level.
3131
3132       A simple loopback configuration might look like this:
3133
3134            charon {
3135                 # create new IKE_SAs for each CHILD_SA to simulate
3136                 # different clients
3137                 reuse_ikesa = no
3138                 # turn off denial of service protection
3139                 dos_protection = no
3140
3141                 plugins {
3142                      load-tester {
3143                           # enable the plugin
3144                           enable = yes
3145                           # use 4 threads to initiate connections
3146                           # simultaneously
3147                           initiators = 4
3148                           # each thread initiates 1000 connections
3149                           iterations = 1000
3150                           # delay each initiation in each thread by 20ms
3151                           delay = 20
3152                           # enable the fake kernel interface to
3153                           # avoid SA conflicts
3154                           fake_kernel = yes
3155                      }
3156                 }
3157            }
3158
3159       This will initiate 4000 IKE_SAs within 20 seconds. You may increase the
3160       delay value if your box can not handle that much load, or  decrease  it
3161       to  put  more  load on it. If the daemon starts retransmitting messages
3162       your box probably can not handle all connection attempts.
3163
3164       The plugin also allows one to test against a remote  host.  This  might
3165       help  to test against a real world configuration. A connection setup to
3166       do stress testing of a gateway might look like this:
3167
3168            charon {
3169                 reuse_ikesa = no
3170                 threads = 32
3171
3172                 plugins {
3173                      load-tester {
3174                           enable = yes
3175                           # 10000 connections, ten in parallel
3176                           initiators = 10
3177                           iterations = 1000
3178                           # use a delay of 100ms, overall time is:
3179                           # iterations * delay = 100s
3180                           delay = 100
3181                           # address of the gateway
3182                           remote = 1.2.3.4
3183                           # IKE-proposal to use
3184                           proposal = aes128-sha1-modp1024
3185                           # use faster PSK authentication instead
3186                           # of 1024bit RSA
3187                           initiator_auth = psk
3188                           responder_auth = psk
3189                           # request a virtual IP using configuration
3190                           # payloads
3191                           request_virtual_ip = yes
3192                           # enable CHILD_SA every 60s
3193                           child_rekey = 60
3194                      }
3195                 }
3196            }
3197
3198

IKEv2 RETRANSMISSION

3200       Retransmission timeouts in the IKEv2 daemon charon  can  be  configured
3201       globally using the three keys listed below:
3202
3203              charon.retransmit_base [1.8]
3204              charon.retransmit_timeout [4.0]
3205              charon.retransmit_tries [5]
3206              charon.retransmit_jitter [0]
3207              charon.retransmit_limit [0]
3208
3209       The following algorithm is used to calculate the timeout:
3210
3211            relative timeout = retransmit_timeout * retransmit_base ^ (n-1)
3212
3213       Where  n  is  the  current retransmission count. The calculated timeout
3214       can't exceed the configured retransmit_limit (if any), which is  useful
3215       if the number of retries is high.
3216
3217       If  a  jitter in percent is configured, the timeout is modified as fol‐
3218       lows:
3219
3220            relative timeout -= random(0, retransmit_jitter * relative timeout)
3221
3222       Using the default values, packets are retransmitted in:
3223
3224
3225       Retransmission   Relative Timeout   Absolute Timeout
3226       ─────────────────────────────────────────────────────
3227       1                              4s                 4s
3228       2                              7s                11s
3229       3                             13s                24s
3230       4                             23s                47s
3231       5                             42s                89s
3232       giving up                     76s               165s
3233

VARIABLES

3235       The variables used above are configured as follows:
3236
3237       ${piddir}               /run/strongswan
3238       ${prefix}               /usr
3239       ${random_device}        /dev/random
3240       ${urandom_device}       /dev/urandom
3241

FILES

3243       /etc/strongswan.conf       configuration file
3244       /etc/strongswan.d/         directory containing included config snippets
3245       /etc/strongswan.d/charon/  plugin specific config snippets
3246

SEE ALSO

3248       ipsec.conf(5), ipsec.secrets(5), ipsec(8), charon-cmd(8)
3249
3250

HISTORY

3252       Written for the strongSwan project ⟨http://www.strongswan.org⟩  by  To‐
3253       bias Brunner, Andreas Steffen and Martin Willi.
3254
3255
3256
32575.9.6                                                       STRONGSWAN.CONF(5)
Impressum