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