Project

General

Profile

strongswan.conf Reference » History » Version 110

« Previous - Version 110/195 (diff) - Next » - Current version
Tobias Brunner, 17.02.2012 11:19
Note about man page added.


strongswan.conf

Please note: This page documents the configuration options of the most current release. Therefore, you should always consult the strongswan.conf(5) man page coming with the release you are using to confirm which options are actually available.

Overview

While the ipsec.conf configuration file is well suited to define IPsec related configuration parameters, it is not useful for other strongSwan applications to read options from this file. The file is hard to parse and only ipsec starter is capable of doing so. As the number of components of the strongSwan project is continually growing, we needed a more flexible configuration file that is easy to extend and can be used by all components. The new configuration format consists of hierarchical sections and a list of key/value pairs in each section. Starting with the strongSwan 4.2.1 release, a default strongswan.conf file is installed in your sysconfdir, e.g. /etc/strongswan.conf.

Syntax

Each section has a name, followed by C-Style curly brackets defining the sections body. Each section body contains a set of subsections and key/value pairs:

settings := (section|keyvalue)*
section  := name { settings }
keyvalue := key = value\n

Values must be terminated by a newline. Comments are possible using the #-character, but be careful: The parser implementation is currently limited and does not like braces in comments. Section names and keys may contain any printable character except:

. { } # \n \t space

An example might look like this:

a = b
section-one {
  somevalue = asdf
  subsection {
    othervalue = xxx
  }
  # yei, a comment 
  yetanother = zz
}
section-two {
  x = 12
}

Indentation is optional, you may use tabs or spaces.

Including files

Version 4.5.1 introduced the include statement which allows to include other files into strongswan.conf, e.g.

include /some/path/*.conf

If the file name is not an absolute path, it is considered to be relative to the directory of the file containing the
include statement. The file name may include shell wildcards. Also, such inclusions can be nested.

Sections loaded from the included files extend previously loaded sections; already existing values are replaced.
It is important to note that settings are added relative to the section the include statement is in.

As an example, the following three files result in the same final config as the one given above:

a = b
section-one {
    somevalue = before include
    include include.conf
}
include other.conf

include.conf:
# settings loaded from this file are added to section-one
# the following replaces the previous value
somevalue = asdf
subsection {
    othervalue = yyy
}
yetanother = zz

other.conf:
# this extends section-one and subsection
section-one {
    subsection {
        # this replaces the previous value
        othervalue = xxx
    }
}
section-two {
    x = 12
}

Reading values

The config file is read by libstrongswan during library initialization. Values are accessed using a dot-separated section list and a key:
Accessing section-one.subsection.othervalue will return xxx.

Have a look at the settings interface (source:src/libstrongswan/settings.h) to learn about the details.

Defined keys

The following keys are currently defined (using dot notation).

Key Default Description
attest section
attest.database Path to database with file measurement information
attest.load Plugins to load in ipsec attest tool
charon section
charon.block_threshold 5 Maximum number of half-open IKE_SAs for a single peer IP
charon.close_ike_on_child_failure no Close the IKE_SA if setup of the CHILD_SA along with IKE_AUTH failed
charon.cookie_threshold 10 Number of half-open IKE_SAs that activate the cookie mechanism
charon.dns1 DNS server 1 assigned to peer via configuration payload (CP), see attr plugin
charon.dns2 DNS server 2 assigned to peer via configuration payload (CP)
charon.dos_protection yes Enable Denial of Service protection using cookies and aggressiveness checks
charon.filelog Section to define file loggers, see LoggerConfiguration
charon.flush_auth_cfg no
charon.half_open_timeout 30 Timeout in seconds for connecting IKE_SAs, also see IKE_SA_INIT dropping
charon.hash_and_url no Enable hash and URL support
charon.ignore_routing_tables A list of routing tables to be excluded from route lookup
charon.ikesa_table_segments 1 Number of exclusively locked segments in the hash table
charon.ikesa_table_size 1 Size of the IKE_SA hash table
charon.inactivity_close_ike no Whether to close IKE_SA if the only CHILD_SA closed due to inactivity
charon.init_limit_half_open 0 Limit new connections based on the current number of half open IKE_SAs, see IKE_SA_INIT dropping
charon.init_limit_job_load 0 Limit new connections based on the number of jobs currently queued for processing, see IKE_SA_INIT dropping
charon.install_routes yes Install routes into a separate routing table for established IPsec tunnels
charon.install_virtual_ip yes Install virtual IP addresses
charon.keep_alive 20s NAT keep alive interval
charon.load Plugins to load in IKEv2 charon daemon, see PluginLoad
charon.max_packet 10000 Maximum packet size accepted by charon
charon.multiple_authentication yes Enable multiple authentication exchanges (RFC 4739)
charon.nbns1 WINS server 1 assigned to peer via configuration payload (CP), see attr plugin
charon.nbns2 WINS server 2 assigned to peer via configuration payload (CP)
charon.process_route yes Process RTM_NEWROUTE and RTM_DELROUTE events
charon.receive_delay 0 Delay for receiving packets, to simulate larger RTT
charon.receive_delay_response yes Delay response messages
charon.receive_delay_request yes Delay request messages
charon.receive_delay_type 0 Specific IKEv2 message type to delay, 0 for any
charon.retransmit_base 1.8 Base to use for calculating exponential back off, see Retransmission
charon.retransmit_timeout 4.0 Timeout in seconds before sending first retransmit
charon.retransmit_tries 5 Number of times to retransmit a packet before giving up
charon.reuse_ikesa yes Initiate CHILD_SA within existing IKE_SAs
charon.routing_table Numerical routing table to install routes to
charon.routing_table_prio Priority of the routing table
charon.send_delay 0 Delay for sending packets, to simulate larger RTT
charon.send_delay_response yes Delay response messages
charon.send_delay_request yes Delay request messages
charon.send_delay_type 0 Specific IKEv2 message type to delay, 0 for any
charon.send_vendor_id no Send strongSwan vendor ID payload
charon.syslog Section to define syslog loggers, see LoggerConfiguration
charon.threads 16 Number of worker threads in charon
charon plugins subsection
charon.plugins.android.loglevel 1 Loglevel for logging to Android specific logger
charon.plugins.attr Section to specify arbitrary attributes that are assigned to a peer via configuration payload, see attr plugin
charon.plugins.dhcp.identity_lease no Derive user-defined MAC address from hash of IKEv2 identity
charon.plugins.dhcp.server 255.255.255.255 DHCP server unicast or broadcast IP address, see DHCP plugin
charon.plugins.duplicheck.enable yes enable loaded duplicheck plugin
charon.plugins.eap-aka.request_identity yes
charon.plugins.eap-aka-3ggp2.seq_check
charon.plugins.eap-gtc.pam_service login PAM service to be used for authentication, see EAP-GTC
charon.plugins.eap-peap.fragment_size 1024 Maximum size of an EAP-PEAP packet
charon.plugins.eap-peap.max_message_count 32 Maximum number of processed EAP-PEAP packets
charon.plugins.eap-peap.include_length no Include length in non-fragmented EAP-PEAP packets
charon.plugins.eap-peap.phase2_method mschapv2 Phase2 EAP client authentication method
charon.plugins.eap-peap.phase2_piggyback no Phase2 EAP Identity request piggybacked by server onto TLS Finished message
charon.plugins.eap-peap.request_peer_auth no Request peer authentication based on a client certificate
charon.plugins.eap-radius.accounting no Enable EAP-RADIUS accounting
charon.plugins.eap-radius.class_group no Use the class attribute sent in the RADIUS-Accept message as group membership information, see EapRadius
charon.plugins.eap-radius.eap_start no Send EAP-Start instead of EAP-Identity to start RADIUS conversation
charon.plugins.eap-radius.filter_id no Use the filter_id attribute sent in the RADIUS-Accept message as group membership if the RADIUS tunnel_type attribute is set to ESP
charon.plugins.eap-radius.id_prefix Prefix to EAP-Identity, some AAA servers use a IMSI prefix to select the EAP method
charon.plugins.eap-radius.nas_identifier strongSwan NAS-Identifier to include in RADIUS messages
charon.plugins.eap-radius.auth_port 1812 Port of RADIUS server (authentication)
charon.plugins.eap-radius.acct_port 1813 Port of RADIUS server (accounting)
charon.plugins.eap-radius.port 1812 Alias for auth_port
charon.plugins.eap-radius.secret Shared secret between RADIUS and NAS
charon.plugins.eap-radius.server IP/Hostname of RADIUS server
charon.plugins.eap-radius.servers Section to specify multiple RADIUS servers, see EapRadius
charon.plugins.eap-radius.sockets 1 Number of sockets (ports) to use, increase for high load
charon.plugins.eap-sim.request_identity yes
charon.plugins.eap-simaka-sql.database
charon.plugins.eap-simaka-sql.remove_used
charon.plugins.eap-tls.fragment_size 1024 Maximum size of an EAP-TLS packet
charon.plugins.eap-tls.max_message_count 32 Maximum number of processed EAP-TLS packets
charon.plugins.eap-tls.include_length yes Include length in non-fragmented EAP-TLS packets
charon.plugins.eap-tnc.fragment_size 50000 Maximum size of an EAP-TNC packet
charon.plugins.eap-tnc.max_message_count 10 Maximum number of processed EAP-TNC packets
charon.plugins.eap-tnc.include_length yes Include length in non-fragmented EAP-TM
NC packets
charon.plugins.eap-ttls.fragment_size 1024 Maximum size of an EAP-TTLS packet
charon.plugins.eap-ttls.max_message_count 32 Maximum number of processed EAP-TTLS packets
charon.plugins.eap-ttls.include_length yes Include length in non-fragmented EAP-TTLS packets
charon.plugins.eap-ttls.phase2_method md5 Phase2 EAP client authentication method
charon.plugins.eap-ttls.phase2_piggyback no Phase2 EAP Identity request piggybacked by server onto TLS Finished message
charon.plugins.eap-ttls.phase2_tnc no Start phase2 EAP TNC protocol after successful client authentication
charon.plugins.eap-ttls.request_peer_auth no Request peer authentication based on a client certificate
charon.plugins.ha.fifo_interface yes
charon.plugins.ha.heartbeat_delay 1000
charon.plugins.ha.heartbeat_timeout 2100
charon.plugins.ha.local
charon.plugins.ha.monitor yes
charon.plugins.ha.pools
charon.plugins.ha.remote
charon.plugins.ha.resync yes
charon.plugins.ha.secret
charon.plugins.ha.segment_count 1
charon.plugins.led.activity_led
charon.plugins.led.blink_time 50
charon.plugins.kernel-klips.ipsec_dev_count 4 Number of ipsecN devices
charon.plugins.kernel-klips.ipsec_dev_mtu 0 Set MTU of ipsecN device
charon.plugins.load-tester.child_rekey 600 Seconds to start CHILD_SA rekeying after setup
charon.plugins.load-tester.delay 0 Delay between initiatons for each thread
charon.plugins.load-tester.delete_after_established no Delete an IKE_SA as soon as it has been established
charon.plugins.load-tester.dpd_delay 0 DPD delay to use in load test
charon.plugins.load-tester.dynamic_port 0 Base port to be used for requests (each client uses a different port)
charon.plugins.load-tester.eap_password default-pwd EAP secret to use in load test
charon.plugins.load-tester.enable no Enable the load testing plugin. Read LoadTests first!
charon.plugins.load-tester.fake_kernel no Fake the kernel interface to allow load-testing against self
charon.plugins.load-tester.ike_rekey 0 Seconds to start IKE_SA rekeying after setup
charon.plugins.load-tester.init_limit 0 Global limit of concurrently established SAs during load test
charon.plugins.load-tester.initiators 0 Number of concurrent initiator threads to use in load test
charon.plugins.load-tester.initiator_auth pubkey Authentication method(s) the intiator uses
charon.plugins.load-tester.initiator_id Initiator ID to use in load test
charon.plugins.load-tester.iterations 1 Number of IKE_SAs to initate to self by each initiator in load test
charon.plugins.load-tester.pool Provide INTERNAL_IPV4_ADDRs from a named pool
charon.plugins.load-tester.preshared_key default-psk Preshared key to use in load test
charon.plugins.load-tester.proposal aes128-sha1-modp768 IKE proposal to use in load test
charon.plugins.load-tester.remote 127.0.0.1 Address to initiation connections to
charon.plugins.load-tester.responder_auth pubkey Authentication method(s) the responder uses
charon.plugins.load-tester.responder_id Responder ID to use in load test
charon.plugins.load-tester.request_virtual_ip no Request an INTERNAL_IPV4_ADDR from the server
charon.plugins.load-tester.shutdown_when_complete no Shutdown the daemon after all IKE_SAs have been established
charon.plugins.resolve.file /etc/resolv.conf File where to add DNS server entries
charon.plugins.sql.database Database URI for charons SQL plugin
charon.plugins.sql.loglevel -1 Loglevel for logging to SQL database
charon.plugins.stroke.ignore_missing_ca_basic_constraint no Treat certificates in ipsec.d/cacerts and ipsec.conf ca sections as CA certificates even if they don't contain a CA basic constraint.
charon.plugins.stroke.max_concurrent 4 Maximum number of stroke messages handled concurrently
charon.plugins.tnc-ifmap.device_name Unique name as a PEP and/or PDP device
charon.plugins.tnc-ifmap.key_file Concatenated client certificate and private key
charon.plugins.tnc-ifmap.password Authentication password of MAP client
charon.plugins.tnc-ifmap.server_cert Certificate of MAP server
charon.plugins.tnc-ifmap.ssl_passphrase Passphrase protecting private key
charon.plugins.tnc-ifmap.username Authentication usernameof of MAP client
charon.plugins.tnc_imc.preferred_language en Preferred language for TNC recommendations
charon.plugins.tnc-imv.tnc_config /etc/tnc_config TNC IMC configuration directory
charon.plugins.tnc-imc.tnc_config /etc/tnc_config TNC IMV configuration directory
charon.plugins.whitelist.enable yes enable loaded whitelist plugin
libstrongswan section
libstrongswan.crypto_test.bench no
libstrongswan.crypto_test.bench_size 1024
libstrongswan.crypto_test.bench_time 50
libstrongswan.crypto_test.on_add no Test crypto algorithms during registration
libstrongswan.crypto_test.on_create no Test crypto algorithms on each crypto primitive instantiation
libstrongswan.crypto_test.required no Strictly require at least one test vector to enable an algorithm
libstrongswan.crypto_test.rng_true no Whether to test RNG with TRUE quality; requires a lot of entropy
libstrongswan.dh_exponent_ansi_x9_42 yes Use ANSI X9.42 DH exponent size or optimum size matched to cryptographical strength
libstrongswan.ecp_x_coordinate_only yes Compliance with the errata for RFC 4753
libstrongswan.integrity_test no Check daemon, libstrongswan and plugin integrity at startup
libstrongswan.leak_detective.detailed yes Includes source file names and line numbers in leak detective output
libstrongswan.processor.priority_threads Subsection to configure the number of reserved threads per priority class (see JobPriority)
libstrongswan.x509.enforce_critical yes Discard certificates with unsupported or unknown critical extensions
libstrongswan plugins subsection
libstrongswan.plugins.attr-sql.database Database URI for the attr-sql plugin used by charon and pluto
libstrongswan.plugins.attr-sql.lease_history yes Enable logging of SQL IP pool leases
libstrongswan.plugins.gcrypt.quick_random no Use faster random numbers in gcrypt; for testing only, produces weak keys!
libstrongswan.plugins.openssl.engine_id pkcs11 ENGINE ID to use in the OpenSSL plugin
libstrongswan.plugins.pkcs11.modules List of available PKCS#11 modules, see SmartCardsIKEv2
libstrongswan.plugins.pkcs11.use_dh no Whether the PKCS#11 modules should be used for DH and ECDH
libstrongswan.plugins.pkcs11.use_ecc no Whether the PKCS#11 modules should be used for ECDH and ECDSA public key operations. ECDSA private keys are used regardless of this option
libstrongswan.plugins.pkcs11.use_hasher no Whether the PKCS#11 modules should be used to hash data
libstrongswan.plugins.pkcs11.use_pubkey no Whether the PKCS#11 modules should be used for public key operations, even for keys not stored on tokens
libstrongswan.plugins.pkcs11.use_rng no Whether the PKCS#11 modules should be used as RNG
libtls section
libtls.cipher List of TLS encryption ciphers
libtls.key_exchange List of TLS key exchange methods
libtls.mac List of TLS MAC algorithms
libtls.suites List of TLS cipher suites
libimcv section
libimcv.debug_level 1 Debug level for a standalone libimcv library
libimcv.stderr_quiet no Disable the output to stderr in a standalone libimcv library
libimcv plugins subsection
libimcv.plugins.imc-attestation.platform_info Information on PTS IMC operating system and hardware platform
libimcv.plugins.imc-attestation.aik_blob AIK encrypted private key blob file
libimcv.plugins.imc-attestation.aik_cert AIK certificate file
libimcv.plugins.imc-attestation.aik_key AIK public key file
libimcv.plugins.imc-attestation.nonce_len 20 DH nonce length
libimcv.plugins.imc-attestation.use_quote2 yes Use Quote2 AIK signature instead of Quote signature
libimcv.plugins.imv-attestation.cadir Path to directory with AIK cacerts
libimcv.plugins.imv-attestation.database Path to database with file measurement information
libimcv.plugins.imv-attestation.dh_group ecp256 Preferred Diffie-Hellman group
libimcv.plugins.imv-attestation.hash_algorithm sha256 Preferred measurement hash algorithm
libimcv.plugins.imv-attestation.min_nonce_len 0 DH minimum nonce length
libimcv.plugins.imv-attestation.platform_info Information on PTS IMC operating system and hardware platform
libimcv.plugins.imc-test.command none Command to be sent to the IMV Test
libimcv.plugins.imc-test.retry no Do a handshake retry
libimcv.plugins.imc-test.retry_command Command to be sent to the IMV Test in the handshake retry
libimcv.plugins.imv-test.rounds 0 Number of IMC-IMV retry rounds
libimcv.plugins.imv-scanner.closed_port_policy yes By default all ports must be closed (yes) or can be open (no)
libimcv.plugins.imv-scanner.tcp_ports List of TCP ports that can be open or must be closed
libimcv.plugins.imv-scanner.udp_ports List of UDP ports that can be open or must be closed
manager section
manager.database Credential database URI for manager
manager.debug no Enable debugging in manager
manager.load Plugins to load in manager
manager.socket FastCGI socket of manager, to run it statically
manager.threads 10 Threads to use for request handling
manager.timeout 15m Session timeout for manager
mediation client section
medcli.database Mediation client database URI
medcli.dpd 5m DPD timeout to use in mediation client plugin
medcli.rekey 20m Rekeying time on mediation connections in mediation client plugin
mediation server section
medsrv.database Mediation server database URI
medsrv.debug no Debugging in mediation server web application
medsrv.dpd 5m DPD timeout to use in mediation server plugin
medsrv.load Plugins to load in mediation server plugin
medsrv.password_length 6 Minimum password length required for mediation server user accounts
medsrv.rekey 20m Rekeying time on mediation connections in mediation server plugin
medsrv.socket Run Mediation server web application statically on socket
medsrv.threads 5 Number of thread for mediation service web application
medsrv.timeout 15m Session timeout for mediation service
openac section
openac.load Plugins to load in ipsec openac tool
pki section
pki.load Plugins to load in ipsec pki tool
pluto section
pluto.dns1 DNS server 1 assigned to peer via Mode Config, see attr plugin
pluto.dns2 DNS server 2 assigned to peer via Mode Config
pluto.load Plugins to load in IKEv1 pluto daemon, also see PluginLoad
pluto.nbns1 WINS server 1 assigned to peer via Mode Config, see attr plugin
pluto.nbns2 WINS server 2 assigned to peer via Mode Config
pluto.threads 4 Number of worker threads in pluto
pluto plugins section
pluto.plugins.attr Section to specify arbitrary attributes that are assigned to a peer via Mode Config, see attr plugin
pluto.plugins.kernel-klips.ipsec_dev_count 4 Number of ipsecN devices
pluto.plugins.kernel-klips.ipsec_dev_mtu 0 Set MTU of ipsecN device
pool section
pool.load Plugins to load in ipsec pool tool
scepclient section
scepclient.load Plugins to load in ipsec scepclient tool
starter section
starter.load Plugins to load in starter
starter.load_warning yes Disable charon/pluto plugin load option warning