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