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