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