Annotation of embedaddon/strongswan/src/swanctl/swanctl.opt, revision 1.1
1.1 ! misho 1: connections { # }
! 2: Section defining IKE connection configurations.
! 3:
! 4: Section defining IKE connection configurations.
! 5:
! 6: The connections section defines IKE connection configurations, each in
! 7: its own subsections. In the keyword description below, the connection
! 8: is named _<conn>_, but an arbitrary yet unique connection name can be
! 9: chosen for each connection subsection.
! 10:
! 11: connections.<conn> { # }
! 12: Section for an IKE connection named <conn>.
! 13:
! 14: connections.<conn>.version = 0
! 15: IKE major version to use for connection.
! 16:
! 17: IKE major version to use for connection. _1_ uses IKEv1 aka ISAKMP, _2_
! 18: uses IKEv2. A connection using the default of _0_ accepts both IKEv1
! 19: and IKEv2 as responder, and initiates the connection actively with IKEv2.
! 20:
! 21: connections.<conn>.local_addrs = %any
! 22: Local address(es) to use for IKE communication, comma separated.
! 23:
! 24: Local address(es) to use for IKE communication, comma separated. Takes
! 25: single IPv4/IPv6 addresses, DNS names, CIDR subnets or IP address ranges.
! 26:
! 27: As initiator, the first non-range/non-subnet is used to initiate the
! 28: connection from. As responder, the local destination address must match at
! 29: least to one of the specified addresses, subnets or ranges.
! 30:
! 31: If FQDNs are assigned they are resolved every time a configuration lookup
! 32: is done. If DNS resolution times out, the lookup is delayed for that time.
! 33:
! 34: connections.<conn>.remote_addrs = %any
! 35: Remote address(es) to use for IKE communication, comma separated.
! 36:
! 37: Remote address(es) to use for IKE communication, comma separated. Takes
! 38: single IPv4/IPv6 addresses, DNS names, CIDR subnets or IP address ranges.
! 39:
! 40: As initiator, the first non-range/non-subnet is used to initiate the
! 41: connection to. As responder, the initiator source address must match at
! 42: least to one of the specified addresses, subnets or ranges.
! 43:
! 44: If FQDNs are assigned they are resolved every time a configuration lookup
! 45: is done. If DNS resolution times out, the lookup is delayed for that time.
! 46:
! 47: To initiate a connection, at least one specific address or DNS name must
! 48: be specified.
! 49:
! 50: connections.<conn>.local_port = 500
! 51: Local UDP port for IKE communication.
! 52:
! 53: Local UDP port for IKE communication. By default the port of the socket
! 54: backend is used, which is usually _500_. If port _500_ is used, automatic
! 55: IKE port floating to port 4500 is used to work around NAT issues.
! 56:
! 57: Using a non-default local IKE port requires support from the socket backend
! 58: in use (socket-dynamic).
! 59:
! 60: connections.<conn>.remote_port = 500
! 61: Remote UDP port for IKE communication.
! 62:
! 63: Remote UDP port for IKE communication. If the default of port _500_ is used,
! 64: automatic IKE port floating to port 4500 is used to work around NAT issues.
! 65:
! 66: connections.<conn>.proposals = default
! 67: Comma separated proposals to accept for IKE.
! 68:
! 69: A proposal is a set of algorithms. For non-AEAD algorithms, this includes
! 70: for IKE an encryption algorithm, an integrity algorithm, a pseudo random
! 71: function and a Diffie-Hellman group. For AEAD algorithms, instead of
! 72: encryption and integrity algorithms, a combined algorithm is used.
! 73:
! 74: In IKEv2, multiple algorithms of the same kind can be specified in a single
! 75: proposal, from which one gets selected. In IKEv1, only one algorithm per
! 76: kind is allowed per proposal, more algorithms get implicitly stripped. Use
! 77: multiple proposals to offer different algorithms combinations in IKEv1.
! 78:
! 79: Algorithm keywords get separated using dashes. Multiple proposals may be
! 80: separated by commas. The special value _default_ forms a default proposal
! 81: of supported algorithms considered safe, and is usually a good choice
! 82: for interoperability.
! 83:
! 84: connections.<conn>.vips =
! 85: Virtual IPs to request in configuration payload / Mode Config.
! 86:
! 87: Comma separated list of virtual IPs to request in IKEv2 configuration
! 88: payloads or IKEv1 Mode Config. The wildcard addresses _0.0.0.0_ and _::_
! 89: request an arbitrary address, specific addresses may be defined. The
! 90: responder may return a different address, though, or none at all.
! 91:
! 92: connections.<conn>.aggressive = no
! 93: Use Aggressive Mode in IKEv1.
! 94:
! 95: Enables Aggressive Mode instead of Main Mode with Identity Protection.
! 96: Aggressive Mode is considered less secure, because the ID and HASH
! 97: payloads are exchanged unprotected. This allows a passive attacker to
! 98: snoop peer identities, and even worse, start dictionary attacks on the
! 99: Preshared Key.
! 100:
! 101: connections.<conn>.pull = yes
! 102: Set the Mode Config mode to use.
! 103:
! 104: If the default of _yes_ is used, Mode Config works in pull mode, where
! 105: the initiator actively requests a virtual IP. With _no_, push mode is used,
! 106: where the responder pushes down a virtual IP to the initiating peer.
! 107:
! 108: Push mode is currently supported for IKEv1, but not in IKEv2. It is used
! 109: by a few implementations only, pull mode is recommended.
! 110:
! 111: connections.<conn>.dscp = 000000
! 112: Differentiated Services Field Codepoint to set on outgoing IKE packets (six
! 113: binary digits).
! 114:
! 115: Differentiated Services Field Codepoint to set on outgoing IKE packets for
! 116: this connection. The value is a six digit binary encoded string specifying
! 117: the Codepoint to set, as defined in RFC 2474.
! 118:
! 119: connections.<conn>.encap = no
! 120: Enforce UDP encapsulation by faking NAT-D payloads.
! 121:
! 122: To enforce UDP encapsulation of ESP packets, the IKE daemon can fake the
! 123: NAT detection payloads. This makes the peer believe that NAT takes
! 124: place on the path, forcing it to encapsulate ESP packets in UDP.
! 125:
! 126: Usually this is not required, but it can help to work around connectivity
! 127: issues with too restrictive intermediary firewalls.
! 128:
! 129: connections.<conn>.mobike = yes
! 130: Enables MOBIKE on IKEv2 connections.
! 131:
! 132: Enables MOBIKE on IKEv2 connections. MOBIKE is enabled by default on IKEv2
! 133: connections, and allows mobility of clients and multi-homing on servers by
! 134: migrating active IPsec tunnels.
! 135:
! 136: Usually keeping MOBIKE enabled is unproblematic, as it is not used if the
! 137: peer does not indicate support for it. However, due to the design of MOBIKE,
! 138: IKEv2 always floats to port 4500 starting from the second exchange. Some
! 139: implementations don't like this behavior, hence it can be disabled.
! 140:
! 141: connections.<conn>.dpd_delay = 0s
! 142: Interval of liveness checks (DPD).
! 143:
! 144: Interval to check the liveness of a peer actively using IKEv2 INFORMATIONAL
! 145: exchanges or IKEv1 R_U_THERE messages. Active DPD checking is only enforced
! 146: if no IKE or ESP/AH packet has been received for the configured DPD delay.
! 147:
! 148: connections.<conn>.dpd_timeout = 0s
! 149: Timeout for DPD checks (IKEV1 only).
! 150:
! 151: Charon by default uses the normal retransmission mechanism and timeouts to
! 152: check the liveness of a peer, as all messages are used for liveness
! 153: checking. For compatibility reasons, with IKEv1 a custom interval may be
! 154: specified; this option has no effect on connections using IKE2.
! 155:
! 156: connections.<conn>.fragmentation = yes
! 157: Use IKE UDP datagram fragmentation (_yes_, _accept_, _no_ or _force_).
! 158:
! 159: Use IKE fragmentation (proprietary IKEv1 extension or RFC 7383 IKEv2
! 160: fragmentation). Acceptable values are _yes_ (the default), _accept_,
! 161: _force_ and _no_. If set to _yes_, and the peer supports it, oversized IKE
! 162: messages will be sent in fragments. If set to _accept_, support for
! 163: fragmentation is announced to the peer but the daemon does not send its own
! 164: messages in fragments. If set to _force_ (only supported for IKEv1) the
! 165: initial IKE message will already be fragmented if required. Finally, setting
! 166: the option to _no_ will disable announcing support for this feature.
! 167:
! 168: Note that fragmented IKE messages sent by a peer are always accepted
! 169: irrespective of the value of this option (even when set to _no_).
! 170:
! 171: connections.<conn>.childless = allow
! 172: Use childless IKE_SA initiation (_allow_, _force_ or _never_).
! 173:
! 174: Use childless IKE_SA initiation (RFC 6023) for IKEv2. Acceptable values
! 175: are _allow_ (the default), _force_ and _never_. If set to _allow_,
! 176: responders will accept childless IKE_SAs (as indicated via notify in the
! 177: IKE_SA_INIT response) while initiators continue to create regular IKE_SAs
! 178: with the first CHILD_SA created during IKE_AUTH, unless the IKE_SA is
! 179: initiated explicitly without any children (which will fail if the responder
! 180: does not support or has disabled this extension). If set to _force_, only
! 181: childless initiation is accepted and the first CHILD_SA is created with a
! 182: separate CREATE_CHILD_SA exchange (e.g. to use an independent DH exchange
! 183: for all CHILD_SAs). Finally, setting the option to _never_ disables support
! 184: for childless IKE_SAs as responder.
! 185:
! 186: connections.<conn>.send_certreq = yes
! 187: Send certificate requests payloads (_yes_ or _no_).
! 188:
! 189: Send certificate request payloads to offer trusted root CA certificates
! 190: to the peer. Certificate requests help the peer to choose an appropriate
! 191: certificate/private key for authentication and are enabled by default.
! 192:
! 193: Disabling certificate requests can be useful if too many trusted root CA
! 194: certificates are installed, as each certificate request increases the size
! 195: of the initial IKE packets.
! 196:
! 197: connections.<conn>.send_cert = ifasked
! 198: Send certificate payloads (_always_, _never_ or _ifasked_).
! 199:
! 200: Send certificate payloads when using certificate authentication. With the
! 201: default of _ifasked_ the daemon sends certificate payloads only if
! 202: certificate requests have been received. _never_ disables sending of
! 203: certificate payloads altogether, _always_ causes certificate payloads to be
! 204: sent unconditionally whenever certificate authentication is used.
! 205:
! 206: connections.<conn>.ppk_id =
! 207: String identifying the Postquantum Preshared Key (PPK) to be used.
! 208:
! 209: connections.<conn>.ppk_required = no
! 210: Whether a Postquantum Preshared Key (PPK) is required for this connection.
! 211:
! 212: connections.<conn>.keyingtries = 1
! 213: Number of retransmission sequences to perform during initial connect.
! 214:
! 215: Number of retransmission sequences to perform during initial connect.
! 216: Instead of giving up initiation after the first retransmission sequence with
! 217: the default value of _1_, additional sequences may be started according to
! 218: the configured value. A value of _0_ initiates a new sequence until the
! 219: connection establishes or fails with a permanent error.
! 220:
! 221: connections.<conn>.unique = no
! 222: Connection uniqueness policy (_never_, _no_, _keep_ or _replace_).
! 223:
! 224: Connection uniqueness policy to enforce. To avoid multiple connections
! 225: from the same user, a uniqueness policy can be enforced. The value _never_
! 226: does never enforce such a policy, even if a peer included INITIAL_CONTACT
! 227: notification messages, whereas _no_ replaces existing connections for the
! 228: same identity if a new one has the INITIAL_CONTACT notify. _keep_ rejects
! 229: new connection attempts if the same user already has an active connection,
! 230: _replace_ deletes any existing connection if a new one for the same user
! 231: gets established.
! 232:
! 233: To compare connections for uniqueness, the remote IKE identity is used. If
! 234: EAP or XAuth authentication is involved, the EAP-Identity or XAuth username
! 235: is used to enforce the uniqueness policy instead.
! 236:
! 237: On initiators this setting specifies whether an INITIAL_CONTACT notify is
! 238: sent during IKE_AUTH if no existing connection is found with the remote
! 239: peer (determined by the identities of the first authentication round).
! 240: Unless set to _never_ the client will send a notify.
! 241:
! 242: connections.<conn>.reauth_time = 0s
! 243: Time to schedule IKE reauthentication.
! 244:
! 245: Time to schedule IKE reauthentication. IKE reauthentication recreates the
! 246: IKE/ISAKMP SA from scratch and re-evaluates the credentials. In asymmetric
! 247: configurations (with EAP or configuration payloads) it might not be possible
! 248: to actively reauthenticate as responder. The IKEv2 reauthentication lifetime
! 249: negotiation can instruct the client to perform reauthentication.
! 250:
! 251: Reauthentication is disabled by default. Enabling it usually may lead
! 252: to small connection interruptions, as strongSwan uses a break-before-make
! 253: policy with IKEv2 to avoid any conflicts with associated tunnel resources.
! 254:
! 255: connections.<conn>.rekey_time = 4h
! 256: Time to schedule IKE rekeying.
! 257:
! 258: IKE rekeying refreshes key material using a Diffie-Hellman exchange, but
! 259: does not re-check associated credentials. It is supported in IKEv2 only,
! 260: IKEv1 performs a reauthentication procedure instead.
! 261:
! 262: With the default value IKE rekeying is scheduled every 4 hours, minus the
! 263: configured **rand_time**. If a **reauth_time** is configured, **rekey_time**
! 264: defaults to zero disabling rekeying; explicitly set both to enforce
! 265: rekeying and reauthentication.
! 266:
! 267: connections.<conn>.over_time = 10% of rekey_time/reauth_time
! 268: Hard IKE_SA lifetime if rekey/reauth does not complete, as time.
! 269:
! 270: Hard IKE_SA lifetime if rekey/reauth does not complete, as time.
! 271: To avoid having an IKE/ISAKMP kept alive if IKE reauthentication or rekeying
! 272: fails perpetually, a maximum hard lifetime may be specified. If the
! 273: IKE_SA fails to rekey or reauthenticate within the specified time, the
! 274: IKE_SA gets closed.
! 275:
! 276: In contrast to CHILD_SA rekeying, **over_time** is relative in time to the
! 277: **rekey_time** _and_ **reauth_time** values, as it applies to both.
! 278:
! 279: The default is 10% of the longer of **rekey_time** and **reauth_time**.
! 280:
! 281: connections.<conn>.rand_time = over_time
! 282: Range of random time to subtract from rekey/reauth times.
! 283:
! 284: Time range from which to choose a random value to subtract from
! 285: rekey/reauth times. To avoid having both peers initiating the rekey/reauth
! 286: procedure simultaneously, a random time gets subtracted from the
! 287: rekey/reauth times.
! 288:
! 289: The default is equal to the configured **over_time**.
! 290:
! 291: connections.<conn>.pools =
! 292: Comma separated list of named IP pools.
! 293:
! 294: Comma separated list of named IP pools to allocate virtual IP addresses and
! 295: other configuration attributes from. Each name references a pool by name
! 296: from either the **pools** section or an external pool.
! 297:
! 298: connections.<conn>.if_id_in = 0
! 299: Default inbound XFRM interface ID for children.
! 300:
! 301: XFRM interface ID set on inbound policies/SA, can be overridden by child
! 302: config, see there for details.
! 303:
! 304: connections.<conn>.if_id_out = 0
! 305: Default outbound XFRM interface ID for children.
! 306:
! 307: XFRM interface ID set on outbound policies/SA, can be overridden by child
! 308: config, see there for details.
! 309:
! 310: connections.<conn>.mediation = no
! 311: Whether this connection is a mediation connection.
! 312:
! 313: Whether this connection is a mediation connection, that is, whether this
! 314: connection is used to mediate other connections using the IKEv2 Mediation
! 315: Extension. Mediation connections create no CHILD_SA.
! 316:
! 317: connections.<conn>.mediated_by =
! 318: The name of the connection to mediate this connection through.
! 319:
! 320: The name of the connection to mediate this connection through. If given, the
! 321: connection will be mediated through the named mediation connection.
! 322: The mediation connection must have **mediation** enabled.
! 323:
! 324: connections.<conn>.mediation_peer =
! 325: Identity under which the peer is registered at the mediation server.
! 326:
! 327: Identity under which the peer is registered at the mediation server, that
! 328: is, the IKE identity the other end of this connection uses as its local
! 329: identity on its connection to the mediation server. This is the identity we
! 330: request the mediation server to mediate us with. Only relevant on
! 331: connections that set **mediated_by**. If it is not given, the remote IKE
! 332: identity of the first authentication round of this connection will be used.
! 333:
! 334: connections.<conn>.local<suffix> {}
! 335: Section for a local authentication round.
! 336:
! 337: Section for a local authentication round. A local authentication round
! 338: defines the rules how authentication is performed for the local peer.
! 339: Multiple rounds may be defined to use IKEv2 RFC 4739 Multiple Authentication
! 340: or IKEv1 XAuth.
! 341:
! 342: Each round is defined in a section having _local_ as prefix, and an optional
! 343: unique suffix. To define a single authentication round, the suffix may be
! 344: omitted.
! 345:
! 346: connections.<conn>.local<suffix>.round = 0
! 347: Optional numeric identifier by which authentication rounds are sorted. If
! 348: not specified rounds are ordered by their position in the config file/VICI
! 349: message.
! 350:
! 351: connections.<conn>.local<suffix>.certs =
! 352: Comma separated list of certificate candidates to use for authentication.
! 353:
! 354: Comma separated list of certificate candidates to use for authentication.
! 355: The certificates may use a relative path from the **swanctl** _x509_
! 356: directory or an absolute path.
! 357:
! 358: The certificate used for authentication is selected based on the received
! 359: certificate request payloads. If no appropriate CA can be located, the
! 360: first certificate is used.
! 361:
! 362: connections.<conn>.local<suffix>.cert<suffix> =
! 363: Section for a certificate candidate to use for authentication.
! 364:
! 365: Section for a certificate candidate to use for authentication. Certificates
! 366: in _certs_ are transmitted as binary blobs, these sections offer more
! 367: flexibility.
! 368:
! 369: connections.<conn>.local<suffix>.cert<suffix>.file =
! 370: Absolute path to the certificate to load.
! 371:
! 372: Absolute path to the certificate to load. Passed as-is to the daemon, so it
! 373: must be readable by it.
! 374:
! 375: Configure either this or _handle_, but not both, in one section.
! 376:
! 377: connections.<conn>.local<suffix>.cert<suffix>.handle =
! 378: Hex-encoded CKA_ID of the certificate on a token.
! 379:
! 380: Hex-encoded CKA_ID of the certificate on a token.
! 381:
! 382: Configure either this or _file_, but not both, in one section.
! 383:
! 384: connections.<conn>.local<suffix>.cert<suffix>.slot =
! 385: Optional slot number of the token that stores the certificate.
! 386:
! 387: connections.<conn>.local<suffix>.cert<suffix>.module =
! 388: Optional PKCS#11 module name.
! 389:
! 390: connections.<conn>.local<suffix>.pubkeys =
! 391: Comma separated list of raw public key candidates to use for authentication.
! 392:
! 393: Comma separated list of raw public key candidates to use for authentication.
! 394: The public keys may use a relative path from the **swanctl** _pubkey_
! 395: directory or an absolute path.
! 396:
! 397: Even though multiple local public keys could be defined in principle, only
! 398: the first public key in the list is used for authentication.
! 399:
! 400: connections.<conn>.local<suffix>.auth = pubkey
! 401: Authentication to perform locally (_pubkey_, _psk_, _xauth[-backend]_ or
! 402: _eap[-method]_).
! 403:
! 404: Authentication to perform locally. _pubkey_ uses public key authentication
! 405: using a private key associated to a usable certificate. _psk_ uses
! 406: pre-shared key authentication. The IKEv1 specific _xauth_ is used for
! 407: XAuth or Hybrid authentication, while the IKEv2 specific _eap_ keyword
! 408: defines EAP authentication.
! 409:
! 410: For _xauth_, a specific backend name may be appended, separated by a dash.
! 411: The appropriate _xauth_ backend is selected to perform the XAuth exchange.
! 412: For traditional XAuth, the _xauth_ method is usually defined in the second
! 413: authentication round following an initial _pubkey_ (or _psk_) round. Using
! 414: _xauth_ in the first round performs Hybrid Mode client authentication.
! 415:
! 416: For _eap_, a specific EAP method name may be appended, separated by a dash.
! 417: An EAP module implementing the appropriate method is selected to perform
! 418: the EAP conversation.
! 419:
! 420: If both peers support RFC 7427 ("Signature Authentication in IKEv2")
! 421: specific hash algorithms to be used during IKEv2 authentication may be
! 422: configured. To do so use _ike:_ followed by a trust chain signature scheme
! 423: constraint (see description of the **remote** section's **auth** keyword).
! 424: For example, with _ike:pubkey-sha384-sha256_ a public key signature scheme
! 425: with either SHA-384 or SHA-256 would get used for authentication, in that
! 426: order and depending on the hash algorithms supported by the peer. If no
! 427: specific hash algorithms are configured, the default is to prefer an
! 428: algorithm that matches or exceeds the strength of the signature key.
! 429: If no constraints with _ike:_ prefix are configured any signature scheme
! 430: constraint (without _ike:_ prefix) will also apply to IKEv2 authentication,
! 431: unless this is disabled in **strongswan.conf**(5). To use RSASSA-PSS
! 432: signatures use _rsa/pss_ instead of _pubkey_ or _rsa_ as in e.g.
! 433: _ike:rsa/pss-sha256_. If _pubkey_ or _rsa_ constraints are configured
! 434: RSASSA-PSS signatures will only be used if enabled in
! 435: **strongswan.conf**(5).
! 436:
! 437: connections.<conn>.local<suffix>.id =
! 438: IKE identity to use for authentication round.
! 439:
! 440: IKE identity to use for authentication round. When using certificate
! 441: authentication, the IKE identity must be contained in the certificate,
! 442: either as subject or as subjectAltName.
! 443:
! 444: The identity can be an IP address, a fully-qualified domain name, an email
! 445: address or a Distinguished Name for which the ID type is determined
! 446: automatically and the string is converted to the appropriate encoding. To
! 447: enforce a specific identity type, a prefix may be used, followed by a colon
! 448: (:). If the number sign (#) follows the colon, the remaining data is
! 449: interpreted as hex encoding, otherwise the string is used as-is as the
! 450: identification data. Note that this implies that no conversion is performed
! 451: for non-string identities. For example, _ipv4:10.0.0.1_ does not create a
! 452: valid ID_IPV4_ADDR IKE identity, as it does not get converted to binary
! 453: 0x0a000001. Instead, one could use _ipv4:#0a000001_ to get a valid identity,
! 454: but just using the implicit type with automatic conversion is usually
! 455: simpler. The same applies to the ASN1 encoded types. The following prefixes
! 456: are known: _ipv4_, _ipv6_, _rfc822_, _email_, _userfqdn_, _fqdn_, _dns_,
! 457: _asn1dn_, _asn1gn_ and _keyid_. Custom type prefixes may be specified by
! 458: surrounding the numerical type value by curly brackets.
! 459:
! 460: connections.<conn>.local<suffix>.eap_id = id
! 461: Client EAP-Identity to use in EAP-Identity exchange and the EAP method.
! 462:
! 463: connections.<conn>.local<suffix>.aaa_id = remote-id
! 464: Server side EAP-Identity to expect in the EAP method.
! 465:
! 466: Server side EAP-Identity to expect in the EAP method. Some EAP methods, such
! 467: as EAP-TLS, use an identity for the server to perform mutual authentication.
! 468: This identity may differ from the IKE identity, especially when EAP
! 469: authentication is delegated from the IKE responder to an AAA backend.
! 470:
! 471: For EAP-(T)TLS, this defines the identity for which the server must provide
! 472: a certificate in the TLS exchange.
! 473:
! 474: connections.<conn>.local<suffix>.xauth_id = id
! 475: Client XAuth username used in the XAuth exchange.
! 476:
! 477: connections.<conn>.remote<suffix> {}
! 478: Section for a remote authentication round.
! 479:
! 480: Section for a remote authentication round. A remote authentication round
! 481: defines the constraints how the peers must authenticate to use this
! 482: connection. Multiple rounds may be defined to use IKEv2 RFC 4739 Multiple
! 483: Authentication or IKEv1 XAuth.
! 484:
! 485: Each round is defined in a section having _remote_ as prefix, and an
! 486: optional unique suffix. To define a single authentication round, the suffix
! 487: may be omitted.
! 488:
! 489: connections.<conn>.remote<suffix>.round = 0
! 490: Optional numeric identifier by which authentication rounds are sorted. If
! 491: not specified rounds are ordered by their position in the config file/VICI
! 492: message.
! 493:
! 494: connections.<conn>.remote<suffix>.id = %any
! 495: IKE identity to expect for authentication round.
! 496:
! 497: IKE identity to expect for authentication round. Refer to the **local**
! 498: section's **id** keyword for details.
! 499:
! 500: It's possible to use wildcards to match remote identities (e.g.
! 501: _*@strongswan.org_, _*.strongswan.org_, or _C=CH,O=strongSwan,CN=*_).
! 502: Connections with exact matches are preferred. When using distinguished names
! 503: with wildcards, the _charon.rdn_matching_ option in **strongswan.conf**(5)
! 504: specifies how RDNs are matched.
! 505:
! 506: connections.<conn>.remote<suffix>.eap_id = id
! 507: Identity to use as peer identity during EAP authentication.
! 508:
! 509: Identity to use as peer identity during EAP authentication. If set to _%any_
! 510: the EAP-Identity method will be used to ask the client for an identity.
! 511:
! 512: connections.<conn>.remote<suffix>.groups =
! 513: Authorization group memberships to require.
! 514:
! 515: Comma separated authorization group memberships to require. The peer must
! 516: prove membership to at least one of the specified groups. Group membership
! 517: can be certified by different means, for example by appropriate Attribute
! 518: Certificates or by an AAA backend involved in the authentication.
! 519:
! 520: connections.<conn>.remote<suffix>.cert_policy =
! 521: Certificate policy OIDs the peer's certificate must have.
! 522:
! 523: Comma separated list of certificate policy OIDs the peer's certificate must
! 524: have. OIDs are specified using the numerical dotted representation.
! 525:
! 526: connections.<conn>.remote<suffix>.certs =
! 527: Comma separated list of certificate to accept for authentication.
! 528:
! 529: Comma separated list of certificates to accept for authentication.
! 530: The certificates may use a relative path from the **swanctl** _x509_
! 531: directory or an absolute path.
! 532:
! 533: connections.<conn>.remote<suffix>.cert<suffix> =
! 534: Section for a certificate to accept for authentication.
! 535:
! 536: Section for a certificate to accept for authentication. Certificates
! 537: in _certs_ are transmitted as binary blobs, these sections offer more
! 538: flexibility.
! 539:
! 540: connections.<conn>.remote<suffix>.cert<suffix>.file =
! 541: Absolute path to the certificate to load.
! 542:
! 543: Absolute path to the certificate to load. Passed as-is to the daemon, so it
! 544: must be readable by it.
! 545:
! 546: Configure either this or _handle_, but not both, in one section.
! 547:
! 548: connections.<conn>.remote<suffix>.cert<suffix>.handle =
! 549: Hex-encoded CKA_ID of the certificate on a token.
! 550:
! 551: Hex-encoded CKA_ID of the certificate on a token.
! 552:
! 553: Configure either this or _file_, but not both, in one section.
! 554:
! 555: connections.<conn>.remote<suffix>.cert<suffix>.slot =
! 556: Optional slot number of the token that stores the certificate.
! 557:
! 558: connections.<conn>.remote<suffix>.cert<suffix>.module =
! 559: Optional PKCS#11 module name.
! 560:
! 561: connections.<conn>.remote<suffix>.cacerts =
! 562: Comma separated list of CA certificates to accept for authentication.
! 563:
! 564: Comma separated list of CA certificates to accept for authentication.
! 565: The certificates may use a relative path from the **swanctl** _x509ca_
! 566: directory or an absolute path.
! 567:
! 568: connections.<conn>.remote<suffix>.cacert<suffix> =
! 569: Section for a CA certificate to accept for authentication.
! 570:
! 571: Section for a CA certificate to accept for authentication. Certificates
! 572: in _cacerts_ are transmitted as binary blobs, these sections offer more
! 573: flexibility.
! 574:
! 575: connections.<conn>.remote<suffix>.cacert<suffix>.file =
! 576: Absolute path to the certificate to load.
! 577:
! 578: Absolute path to the certificate to load. Passed as-is to the daemon, so it
! 579: must be readable by it.
! 580:
! 581: Configure either this or _handle_, but not both, in one section.
! 582:
! 583: connections.<conn>.remote<suffix>.cacert<suffix>.handle =
! 584: Hex-encoded CKA_ID of the CA certificate on a token.
! 585:
! 586: Hex-encoded CKA_ID of the CA certificate on a token.
! 587:
! 588: Configure either this or _file_, but not both, in one section.
! 589:
! 590: connections.<conn>.remote<suffix>.cacert<suffix>.slot =
! 591: Optional slot number of the token that stores the CA certificate.
! 592:
! 593: connections.<conn>.remote<suffix>.cacert<suffix>.module =
! 594: Optional PKCS#11 module name.
! 595:
! 596: connections.<conn>.remote<suffix>.ca_id =
! 597: Identity in CA certificate to accept for authentication.
! 598:
! 599: The specified identity must be contained in one (intermediate) CA
! 600: of the remote peer trustchain, either as subject or as subjectAltName.
! 601: This has the same effect as specifying _cacerts_ to force clients under
! 602: a CA to specific connections; it does not require the CA certificate to
! 603: be available locally, and can be received from the peer during the
! 604: IKE exchange.
! 605:
! 606: connections.<conn>.remote<suffix>.pubkeys =
! 607: Comma separated list of raw public keys to accept for authentication.
! 608:
! 609: Comma separated list of raw public keys to accept for authentication.
! 610: The public keys may use a relative path from the **swanctl** _pubkey_
! 611: directory or an absolute path.
! 612:
! 613: connections.<conn>.remote<suffix>.revocation = relaxed
! 614: Certificate revocation policy, (_strict_, _ifuri_ or _relaxed_).
! 615:
! 616: Certificate revocation policy for CRL or OCSP revocation.
! 617:
! 618: A _strict_ revocation policy fails if no revocation information is
! 619: available, i.e. the certificate is not known to be unrevoked.
! 620:
! 621: _ifuri_ fails only if a CRL/OCSP URI is available, but certificate
! 622: revocation checking fails, i.e. there should be revocation information
! 623: available, but it could not be obtained.
! 624:
! 625: The default revocation policy _relaxed_ fails only if a certificate
! 626: is revoked, i.e. it is explicitly known that it is bad.
! 627:
! 628: connections.<conn>.remote<suffix>.auth = pubkey
! 629: Authentication to expect from remote (_pubkey_, _psk_, _xauth[-backend]_ or
! 630: _eap[-method]_).
! 631:
! 632: Authentication to expect from remote. See the **local** section's **auth**
! 633: keyword description about the details of supported mechanisms.
! 634:
! 635: To require a trustchain public key strength for the remote side, specify the
! 636: key type followed by the minimum strength in bits (for example _ecdsa-384_
! 637: or _rsa-2048-ecdsa-256_). To limit the acceptable set of hashing algorithms
! 638: for trustchain validation, append hash algorithms to _pubkey_ or a key
! 639: strength definition (for example _pubkey-sha256-sha512_,
! 640: _rsa-2048-sha256-sha384-sha512_ or
! 641: _rsa-2048-sha256-ecdsa-256-sha256-sha384_).
! 642: Unless disabled in **strongswan.conf**(5), or explicit IKEv2 signature
! 643: constraints are configured (refer to the description of the **local**
! 644: section's **auth** keyword for details), such key types and hash algorithms
! 645: are also applied as constraints against IKEv2 signature authentication
! 646: schemes used by the remote side. To require RSASSA-PSS signatures use
! 647: _rsa/pss_ instead of _pubkey_ or _rsa_ as in e.g. _rsa/pss-sha256_. If
! 648: _pubkey_ or _rsa_ constraints are configured RSASSA-PSS signatures will only
! 649: be accepted if enabled in **strongswan.conf**(5).
! 650:
! 651: To specify trust chain constraints for EAP-(T)TLS, append a colon to the
! 652: EAP method, followed by the key type/size and hash algorithm as discussed
! 653: above (e.g. _eap-tls:ecdsa-384-sha384_).
! 654:
! 655: connections.<conn>.children.<child> {}
! 656: CHILD_SA configuration sub-section.
! 657:
! 658: CHILD_SA configuration sub-section. Each connection definition may have
! 659: one or more sections in its _children_ subsection. The section name
! 660: defines the name of the CHILD_SA configuration, which must be unique within
! 661: the connection.
! 662:
! 663: connections.<conn>.children.<child>.ah_proposals =
! 664: AH proposals to offer for the CHILD_SA.
! 665:
! 666: AH proposals to offer for the CHILD_SA. A proposal is a set of algorithms.
! 667: For AH, this includes an integrity algorithm and an optional Diffie-Hellman
! 668: group. If a DH group is specified, CHILD_SA/Quick Mode rekeying and initial
! 669: negotiation uses a separate Diffie-Hellman exchange using the specified
! 670: group (refer to _esp_proposals_ for details).
! 671:
! 672: In IKEv2, multiple algorithms of the same kind can be specified in a single
! 673: proposal, from which one gets selected. In IKEv1, only one algorithm per
! 674: kind is allowed per proposal, more algorithms get implicitly stripped. Use
! 675: multiple proposals to offer different algorithms combinations in IKEv1.
! 676:
! 677: Algorithm keywords get separated using dashes. Multiple proposals may be
! 678: separated by commas. The special value _default_ forms a default proposal
! 679: of supported algorithms considered safe, and is usually a good choice
! 680: for interoperability. By default no AH proposals are included, instead ESP
! 681: is proposed.
! 682:
! 683: connections.<conn>.children.<child>.esp_proposals = default
! 684: ESP proposals to offer for the CHILD_SA.
! 685:
! 686: ESP proposals to offer for the CHILD_SA. A proposal is a set of algorithms.
! 687: For ESP non-AEAD proposals, this includes an integrity algorithm, an
! 688: encryption algorithm, an optional Diffie-Hellman group and an optional
! 689: Extended Sequence Number Mode indicator. For AEAD proposals, a combined
! 690: mode algorithm is used instead of the separate encryption/integrity
! 691: algorithms.
! 692:
! 693: If a DH group is specified, CHILD_SA/Quick Mode rekeying and initial
! 694: negotiation use a separate Diffie-Hellman exchange using the specified
! 695: group. However, for IKEv2, the keys of the CHILD_SA created implicitly with
! 696: the IKE_SA will always be derived from the IKE_SA's key material. So any DH
! 697: group specified here will only apply when the CHILD_SA is later rekeyed or
! 698: is created with a separate CREATE_CHILD_SA exchange. A proposal mismatch
! 699: might, therefore, not immediately be noticed when the SA is established, but
! 700: may later cause rekeying to fail.
! 701:
! 702: Extended Sequence Number support may be indicated with the _esn_ and _noesn_
! 703: values, both may be included to indicate support for both modes. If omitted,
! 704: _noesn_ is assumed.
! 705:
! 706: In IKEv2, multiple algorithms of the same kind can be specified in a single
! 707: proposal, from which one gets selected. In IKEv1, only one algorithm per
! 708: kind is allowed per proposal, more algorithms get implicitly stripped. Use
! 709: multiple proposals to offer different algorithms combinations in IKEv1.
! 710:
! 711: Algorithm keywords get separated using dashes. Multiple proposals may be
! 712: separated by commas. The special value _default_ forms a default proposal
! 713: of supported algorithms considered safe, and is usually a good choice
! 714: for interoperability. If no algorithms are specified for AH nor ESP,
! 715: the _default_ set of algorithms for ESP is included.
! 716:
! 717: connections.<conn>.children.<child>.sha256_96 = no
! 718: Use incorrect 96-bit truncation for HMAC-SHA-256.
! 719:
! 720: HMAC-SHA-256 is used with 128-bit truncation with IPsec. For compatibility
! 721: with implementations that incorrectly use 96-bit truncation this option may
! 722: be enabled to configure the shorter truncation length in the kernel. This
! 723: is not negotiated, so this only works with peers that use the incorrect
! 724: truncation length (or have this option enabled).
! 725:
! 726: connections.<conn>.children.<child>.local_ts = dynamic
! 727: Local traffic selectors to include in CHILD_SA.
! 728:
! 729: Comma separated list of local traffic selectors to include in CHILD_SA.
! 730: Each selector is a CIDR subnet definition, followed by an optional
! 731: proto/port selector. The special value _dynamic_ may be used instead of a
! 732: subnet definition, which gets replaced by the tunnel outer address or the
! 733: virtual IP, if negotiated. This is the default.
! 734:
! 735: A protocol/port selector is surrounded by opening and closing square
! 736: brackets. Between these brackets, a numeric or **getservent**(3) protocol
! 737: name may be specified. After the optional protocol restriction, an optional
! 738: port restriction may be specified, separated by a slash. The port
! 739: restriction may be numeric, a **getservent**(3) service name, or the special
! 740: value _opaque_ for RFC 4301 OPAQUE selectors. Port ranges may be specified
! 741: as well, none of the kernel backends currently support port ranges, though.
! 742:
! 743: When IKEv1 is used only the first selector is interpreted, except if
! 744: the Cisco Unity extension plugin is used. This is due to a limitation of the
! 745: IKEv1 protocol, which only allows a single pair of selectors per CHILD_SA.
! 746: So to tunnel traffic matched by several pairs of selectors when using IKEv1
! 747: several children (CHILD_SAs) have to be defined that cover the selectors.
! 748:
! 749: The IKE daemon uses traffic selector narrowing for IKEv1, the same way it is
! 750: standardized and implemented for IKEv2. However, this may lead to problems
! 751: with other implementations. To avoid that, configure identical selectors in
! 752: such scenarios.
! 753:
! 754: connections.<conn>.children.<child>.remote_ts = dynamic
! 755: Remote selectors to include in CHILD_SA.
! 756:
! 757: Comma separated list of remote selectors to include in CHILD_SA. See
! 758: **local_ts** for a description of the selector syntax.
! 759:
! 760: connections.<conn>.children.<child>.rekey_time = 1h
! 761: Time to schedule CHILD_SA rekeying.
! 762:
! 763: Time to schedule CHILD_SA rekeying. CHILD_SA rekeying refreshes key
! 764: material, optionally using a Diffie-Hellman exchange if a group is
! 765: specified in the proposal.
! 766:
! 767: To avoid rekey collisions initiated by both ends simultaneously, a value
! 768: in the range of **rand_time** gets subtracted to form the effective soft
! 769: lifetime.
! 770:
! 771: By default CHILD_SA rekeying is scheduled every hour, minus **rand_time**.
! 772:
! 773: connections.<conn>.children.<child>.life_time = rekey_time + 10%
! 774: Maximum lifetime before CHILD_SA gets closed, as time.
! 775:
! 776: Maximum lifetime before CHILD_SA gets closed. Usually this hard lifetime
! 777: is never reached, because the CHILD_SA gets rekeyed before.
! 778: If that fails for whatever reason, this limit closes the CHILD_SA.
! 779:
! 780: The default is 10% more than the **rekey_time**.
! 781:
! 782: connections.<conn>.children.<child>.rand_time = life_time - rekey_time
! 783: Range of random time to subtract from **rekey_time**.
! 784:
! 785: Time range from which to choose a random value to subtract from
! 786: **rekey_time**. The default is the difference between **life_time** and
! 787: **rekey_time**.
! 788:
! 789: connections.<conn>.children.<child>.rekey_bytes = 0
! 790: Number of bytes processed before initiating CHILD_SA rekeying.
! 791:
! 792: Number of bytes processed before initiating CHILD_SA rekeying. CHILD_SA
! 793: rekeying refreshes key material, optionally using a Diffie-Hellman exchange
! 794: if a group is specified in the proposal.
! 795:
! 796: To avoid rekey collisions initiated by both ends simultaneously, a value
! 797: in the range of **rand_bytes** gets subtracted to form the effective soft
! 798: volume limit.
! 799:
! 800: Volume based CHILD_SA rekeying is disabled by default.
! 801:
! 802: connections.<conn>.children.<child>.life_bytes = rekey_bytes + 10%
! 803: Maximum bytes processed before CHILD_SA gets closed.
! 804:
! 805: Maximum bytes processed before CHILD_SA gets closed. Usually this hard
! 806: volume limit is never reached, because the CHILD_SA gets rekeyed before.
! 807: If that fails for whatever reason, this limit closes the CHILD_SA.
! 808:
! 809: The default is 10% more than **rekey_bytes**.
! 810:
! 811: connections.<conn>.children.<child>.rand_bytes = life_bytes - rekey_bytes
! 812: Range of random bytes to subtract from **rekey_bytes**.
! 813:
! 814: Byte range from which to choose a random value to subtract from
! 815: **rekey_bytes**. The default is the difference between **life_bytes** and
! 816: **rekey_bytes**.
! 817:
! 818: connections.<conn>.children.<child>.rekey_packets = 0
! 819: Number of packets processed before initiating CHILD_SA rekeying.
! 820:
! 821: Number of packets processed before initiating CHILD_SA rekeying. CHILD_SA
! 822: rekeying refreshes key material, optionally using a Diffie-Hellman exchange
! 823: if a group is specified in the proposal.
! 824:
! 825: To avoid rekey collisions initiated by both ends simultaneously, a value
! 826: in the range of **rand_packets** gets subtracted to form the effective soft
! 827: packet count limit.
! 828:
! 829: Packet count based CHILD_SA rekeying is disabled by default.
! 830:
! 831: connections.<conn>.children.<child>.life_packets = rekey_packets + 10%
! 832: Maximum number of packets processed before CHILD_SA gets closed.
! 833:
! 834: Maximum number of packets processed before CHILD_SA gets closed. Usually
! 835: this hard packets limit is never reached, because the CHILD_SA gets rekeyed
! 836: before. If that fails for whatever reason, this limit closes the CHILD_SA.
! 837:
! 838: The default is 10% more than **rekey_bytes**.
! 839:
! 840: connections.<conn>.children.<child>.rand_packets = life_packets - rekey_packets
! 841: Range of random packets to subtract from **packets_bytes**.
! 842:
! 843: Packet range from which to choose a random value to subtract from
! 844: **rekey_packets**. The default is the difference between **life_packets**
! 845: and **rekey_packets**.
! 846:
! 847: connections.<conn>.children.<child>.updown =
! 848: Updown script to invoke on CHILD_SA up and down events.
! 849:
! 850: connections.<conn>.children.<child>.hostaccess = no
! 851: Hostaccess variable to pass to **updown** script.
! 852:
! 853: connections.<conn>.children.<child>.mode = tunnel
! 854: IPsec Mode to establish (_tunnel_, _transport_, _transport_proxy_, _beet_,
! 855: _pass_ or _drop_).
! 856:
! 857: IPsec Mode to establish CHILD_SA with. _tunnel_ negotiates the CHILD_SA
! 858: in IPsec Tunnel Mode, whereas _transport_ uses IPsec Transport Mode.
! 859: _transport_proxy_ signifying the special Mobile IPv6 Transport Proxy Mode.
! 860: _beet_ is the Bound End to End Tunnel mixture mode, working with fixed inner
! 861: addresses without the need to include them in each packet.
! 862:
! 863: Both _transport_ and _beet_ modes are subject to mode negotiation; _tunnel_
! 864: mode is negotiated if the preferred mode is not available.
! 865:
! 866: _pass_ and _drop_ are used to install shunt policies which explicitly
! 867: bypass the defined traffic from IPsec processing or drop it, respectively.
! 868:
! 869: connections.<conn>.children.<child>.policies = yes
! 870: Whether to install IPsec policies or not.
! 871:
! 872: Whether to install IPsec policies or not. Disabling this can be useful in
! 873: some scenarios e.g. MIPv6, where policies are not managed by the IKE daemon.
! 874:
! 875: connections.<conn>.children.<child>.policies_fwd_out = no
! 876: Whether to install outbound FWD IPsec policies or not.
! 877:
! 878: Whether to install outbound FWD IPsec policies or not. Enabling this is
! 879: required in case there is a drop policy that would match and block forwarded
! 880: traffic for this CHILD_SA.
! 881:
! 882: connections.<conn>.children.<child>.dpd_action = clear
! 883: Action to perform on DPD timeout (_clear_, _trap_ or _restart_).
! 884:
! 885: Action to perform for this CHILD_SA on DPD timeout. The default _clear_
! 886: closes the CHILD_SA and does not take further action. _trap_ installs
! 887: a trap policy, which will catch matching traffic and tries to re-negotiate
! 888: the tunnel on-demand. _restart_ immediately tries to re-negotiate the
! 889: CHILD_SA under a fresh IKE_SA.
! 890:
! 891: connections.<conn>.children.<child>.ipcomp = no
! 892: Enable IPComp compression before encryption.
! 893:
! 894: Enable IPComp compression before encryption. If enabled, IKE tries to
! 895: negotiate IPComp compression to compress ESP payload data prior to
! 896: encryption.
! 897:
! 898: connections.<conn>.children.<child>.inactivity = 0s
! 899: Timeout before closing CHILD_SA after inactivity.
! 900:
! 901: Timeout before closing CHILD_SA after inactivity. If no traffic has
! 902: been processed in either direction for the configured timeout, the CHILD_SA
! 903: gets closed due to inactivity. The default value of _0_ disables inactivity
! 904: checks.
! 905:
! 906: connections.<conn>.children.<child>.reqid = 0
! 907: Fixed reqid to use for this CHILD_SA.
! 908:
! 909: Fixed reqid to use for this CHILD_SA. This might be helpful in some
! 910: scenarios, but works only if each CHILD_SA configuration is instantiated
! 911: not more than once. The default of _0_ uses dynamic reqids, allocated
! 912: incrementally.
! 913:
! 914: connections.<conn>.children.<child>.priority = 0
! 915: Optional fixed priority for IPsec policies.
! 916:
! 917: Optional fixed priority for IPsec policies. This could be useful to install
! 918: high-priority drop policies. The default of _0_ uses dynamically calculated
! 919: priorities based on the size of the traffic selectors.
! 920:
! 921: connections.<conn>.children.<child>.interface =
! 922: Optional interface name to restrict IPsec policies.
! 923:
! 924: connections.<conn>.children.<child>.mark_in = 0/0x00000000
! 925: Netfilter mark and mask for input traffic.
! 926:
! 927: Netfilter mark and mask for input traffic. On Linux, Netfilter may require
! 928: marks on each packet to match an SA/policy having that option set. This
! 929: allows installing duplicate policies and enables Netfilter rules to select
! 930: specific SAs/policies for incoming traffic. Note that inbound marks are
! 931: only set on policies, by default, unless *mark_in_sa* is enabled. The
! 932: special value _%unique_ sets a unique mark on each CHILD_SA instance, beyond
! 933: that the value _%unique-dir_ assigns a different unique mark for each
! 934: CHILD_SA direction (in/out).
! 935:
! 936: An additional mask may be appended to the mark, separated by _/_. The
! 937: default mask if omitted is 0xffffffff.
! 938:
! 939: connections.<conn>.children.<child>.mark_in_sa = no
! 940: Whether to set *mark_in* on the inbound SA.
! 941:
! 942: Whether to set *mark_in* on the inbound SA. By default, the inbound mark is
! 943: only set on the inbound policy. The tuple destination address, protocol and
! 944: SPI is unique and the mark is not required to find the correct SA, allowing
! 945: to mark traffic after decryption instead (where more specific selectors may
! 946: be used) to match different policies. Marking packets before decryption is
! 947: still possible, even if no mark is set on the SA.
! 948:
! 949: connections.<conn>.children.<child>.mark_out = 0/0x00000000
! 950: Netfilter mark and mask for output traffic.
! 951:
! 952: Netfilter mark and mask for output traffic. On Linux, Netfilter may require
! 953: marks on each packet to match a policy/SA having that option set. This
! 954: allows installing duplicate policies and enables Netfilter rules to select
! 955: specific policies/SAs for outgoing traffic. The special value _%unique_ sets
! 956: a unique mark on each CHILD_SA instance, beyond that the value _%unique-dir_
! 957: assigns a different unique mark for each CHILD_SA direction (in/out).
! 958:
! 959: An additional mask may be appended to the mark, separated by _/_. The
! 960: default mask if omitted is 0xffffffff.
! 961:
! 962: connections.<conn>.children.<child>.set_mark_in = 0/0x00000000
! 963: Netfilter mark applied to packets after the inbound IPsec SA processed them.
! 964:
! 965: Netfilter mark applied to packets after the inbound IPsec SA processed them.
! 966: This way it's not necessary to mark packets via Netfilter before decryption
! 967: or right afterwards to match policies or process them differently (e.g. via
! 968: policy routing).
! 969:
! 970: An additional mask may be appended to the mark, separated by _/_. The
! 971: default mask if omitted is 0xffffffff. The special value _%same_ uses
! 972: the value (but not the mask) from **mark_in** as mark value, which can be
! 973: fixed, _%unique_ or _%unique-dir_.
! 974:
! 975: Setting marks in XFRM input requires Linux 4.19 or higher.
! 976:
! 977: connections.<conn>.children.<child>.set_mark_out = 0/0x00000000
! 978: Netfilter mark applied to packets after the outbound IPsec SA processed
! 979: them.
! 980:
! 981: Netfilter mark applied to packets after the outbound IPsec SA processed
! 982: them. This allows processing ESP packets differently than the original
! 983: traffic (e.g. via policy routing).
! 984:
! 985: An additional mask may be appended to the mark, separated by _/_. The
! 986: default mask if omitted is 0xffffffff. The special value _%same_ uses
! 987: the value (but not the mask) from **mark_out** as mark value, which can be
! 988: fixed, _%unique_ or _%unique-dir_.
! 989:
! 990: Setting marks in XFRM output is supported since Linux 4.14. Setting a mask
! 991: requires at least Linux 4.19.
! 992:
! 993: connections.<conn>.children.<child>.if_id_in = 0
! 994: Inbound XFRM interface ID.
! 995:
! 996: XFRM interface ID set on inbound policies/SA. This allows installing
! 997: duplicate policies/SAs and associates them with an interface with the same
! 998: ID. The special value _%unique_ sets a unique interface ID on each CHILD_SA
! 999: instance, beyond that the value _%unique-dir_ assigns a different unique
! 1000: interface ID for each CHILD_SA direction (in/out).
! 1001:
! 1002: connections.<conn>.children.<child>.if_id_out = 0
! 1003: Outbound XFRM interface ID.
! 1004:
! 1005: XFRM interface ID set on outbound policies/SA. This allows installing
! 1006: duplicate policies/SAs and associates them with an interface with the same
! 1007: ID. The special value _%unique_ sets a unique interface ID on each CHILD_SA
! 1008: instance, beyond that the value _%unique-dir_ assigns a different unique
! 1009: interface ID for each CHILD_SA direction (in/out).
! 1010:
! 1011: The daemon will not install routes for CHILD_SAs that have this option set.
! 1012:
! 1013: connections.<conn>.children.<child>.tfc_padding = 0
! 1014: Traffic Flow Confidentiality padding.
! 1015:
! 1016: Pads ESP packets with additional data to have a consistent ESP packet size
! 1017: for improved Traffic Flow Confidentiality. The padding defines the minimum
! 1018: size of all ESP packets sent.
! 1019:
! 1020: The default value of 0 disables TFC padding, the special value _mtu_ adds
! 1021: TFC padding to create a packet size equal to the Path Maximum Transfer Unit.
! 1022:
! 1023: connections.<conn>.children.<child>.replay_window = 32
! 1024: IPsec replay window to configure for this CHILD_SA.
! 1025:
! 1026: IPsec replay window to configure for this CHILD_SA. Larger values than the
! 1027: default of 32 are supported using the Netlink backend only, a value of 0
! 1028: disables IPsec replay protection.
! 1029:
! 1030: connections.<conn>.children.<child>.hw_offload = no
! 1031: Enable hardware offload for this CHILD_SA, if supported by the IPsec
! 1032: implementation.
! 1033:
! 1034: Enable hardware offload for this CHILD_SA, if supported by the IPsec
! 1035: implementation. The value _yes_ enforces offloading and the installation
! 1036: will fail if it's not supported by either kernel or device. The value _auto_
! 1037: enables offloading, if it's supported, but the installation does not fail
! 1038: otherwise.
! 1039:
! 1040: connections.<conn>.children.<child>.copy_df = yes
! 1041: Whether to copy the DF bit to the outer IPv4 header in tunnel mode.
! 1042:
! 1043: Whether to copy the DF bit to the outer IPv4 header in tunnel mode. This
! 1044: effectively disables Path MTU discovery (PMTUD). Controlling this behavior
! 1045: is not supported by all kernel interfaces.
! 1046:
! 1047: connections.<conn>.children.<child>.copy_ecn = yes
! 1048: Whether to copy the ECN header field to/from the outer IP header in tunnel
! 1049: mode.
! 1050:
! 1051: Whether to copy the ECN (Explicit Congestion Notification) header field
! 1052: to/from the outer IP header in tunnel mode. Controlling this behavior is not
! 1053: supported by all kernel interfaces.
! 1054:
! 1055: connections.<conn>.children.<child>.copy_dscp = out
! 1056: Whether to copy the DSCP header field to/from the outer IP header in tunnel
! 1057: mode.
! 1058:
! 1059: Whether to copy the DSCP (Differentiated Services Field Codepoint) header
! 1060: field to/from the outer IP header in tunnel mode. The value _out_ only
! 1061: copies the field from the inner to the outer header, the value _in_ does the
! 1062: opposite and only copies the field from the outer to the inner header when
! 1063: decapsulating, the value _yes_ copies the field in both directions, and the
! 1064: value _no_ disables copying the field altogether. Setting this to _yes_ or
! 1065: _in_ could allow an attacker to adversely affect other traffic at the
! 1066: receiver, which is why the default is _out_. Controlling this behavior is
! 1067: not supported by all kernel interfaces.
! 1068:
! 1069: connections.<conn>.children.<child>.start_action = none
! 1070: Action to perform after loading the configuration (_none_, _trap_, _start_).
! 1071:
! 1072: Action to perform after loading the configuration. The default of _none_
! 1073: loads the connection only, which then can be manually initiated or used as
! 1074: a responder configuration.
! 1075:
! 1076: The value _trap_ installs a trap policy, which triggers the tunnel as soon
! 1077: as matching traffic has been detected. The value _start_ initiates
! 1078: the connection actively.
! 1079:
! 1080: When unloading or replacing a CHILD_SA configuration having a
! 1081: **start_action** different from _none_, the inverse action is performed.
! 1082: Configurations with _start_ get closed, while such with _trap_ get
! 1083: uninstalled.
! 1084:
! 1085: connections.<conn>.children.<child>.close_action = none
! 1086: Action to perform after a CHILD_SA gets closed (_none_, _trap_, _start_).
! 1087:
! 1088: Action to perform after a CHILD_SA gets closed by the peer. The default of
! 1089: _none_ does not take any action, _trap_ installs a trap policy for the
! 1090: CHILD_SA. _start_ tries to re-create the CHILD_SA.
! 1091:
! 1092: **close_action** does not provide any guarantee that the CHILD_SA is kept
! 1093: alive. It acts on explicit close messages only, but not on negotiation
! 1094: failures. Use trap policies to reliably re-create failed CHILD_SAs.
! 1095:
! 1096: secrets { # }
! 1097: Section defining secrets for IKE/EAP/XAuth authentication and private
! 1098: key decryption.
! 1099:
! 1100: Section defining secrets for IKE/EAP/XAuth authentication and private key
! 1101: decryption. The **secrets** section takes sub-sections having a specific
! 1102: prefix which defines the secret type.
! 1103:
! 1104: It is not recommended to define any private key decryption passphrases,
! 1105: as then there is no real security benefit in having encrypted keys. Either
! 1106: store the key unencrypted or enter the keys manually when loading
! 1107: credentials.
! 1108:
! 1109: secrets.eap<suffix> { # }
! 1110: EAP secret section for a specific secret.
! 1111:
! 1112: EAP secret section for a specific secret. Each EAP secret is defined in
! 1113: a unique section having the _eap_ prefix. EAP secrets are used for XAuth
! 1114: authentication as well.
! 1115:
! 1116: secrets.xauth<suffix> { # }
! 1117: XAuth secret section for a specific secret.
! 1118:
! 1119: XAuth secret section for a specific secret. **xauth** is just an alias
! 1120: for **eap**, secrets under both section prefixes are used for both EAP and
! 1121: XAuth authentication.
! 1122:
! 1123: secrets.eap<suffix>.secret =
! 1124: Value of the EAP/XAuth secret.
! 1125:
! 1126: Value of the EAP/XAuth secret. It may either be an ASCII string, a hex
! 1127: encoded string if it has a _0x_ prefix or a Base64 encoded string if it
! 1128: has a _0s_ prefix in its value.
! 1129:
! 1130: secrets.eap<suffix>.id<suffix> =
! 1131: Identity the EAP/XAuth secret belongs to.
! 1132:
! 1133: Identity the EAP/XAuth secret belongs to. Multiple unique identities may
! 1134: be specified, each having an _id_ prefix, if a secret is shared between
! 1135: multiple users.
! 1136:
! 1137: secrets.ntlm<suffix> { # }
! 1138: NTLM secret section for a specific secret.
! 1139:
! 1140: NTLM secret section for a specific secret. Each NTLM secret is defined in
! 1141: a unique section having the _ntlm_ prefix. NTLM secrets may only be used for
! 1142: EAP-MSCHAPv2 authentication.
! 1143:
! 1144: secrets.ntlm<suffix>.secret =
! 1145: Value of the NTLM secret.
! 1146:
! 1147: Value of the NTLM secret, which is the NT Hash of the actual secret, that
! 1148: is, MD4(UTF-16LE(secret)). The resulting 16-byte value may either be given
! 1149: as a hex encoded string with a _0x_ prefix or as a Base64 encoded string
! 1150: with a _0s_ prefix.
! 1151:
! 1152: secrets.ntlm<suffix>.id<suffix> =
! 1153: Identity the NTLM secret belongs to.
! 1154:
! 1155: Identity the NTLM secret belongs to. Multiple unique identities may
! 1156: be specified, each having an _id_ prefix, if a secret is shared between
! 1157: multiple users.
! 1158:
! 1159: secrets.ike<suffix> { # }
! 1160: IKE preshared secret section for a specific secret.
! 1161:
! 1162: IKE preshared secret section for a specific secret. Each IKE PSK is defined
! 1163: in a unique section having the _ike_ prefix.
! 1164:
! 1165: secrets.ike<suffix>.secret =
! 1166: Value of the IKE preshared secret.
! 1167:
! 1168: Value of the IKE preshared secret. It may either be an ASCII string,
! 1169: a hex encoded string if it has a _0x_ prefix or a Base64 encoded string if
! 1170: it has a _0s_ prefix in its value.
! 1171:
! 1172: secrets.ike<suffix>.id<suffix> =
! 1173: IKE identity the IKE preshared secret belongs to.
! 1174:
! 1175: IKE identity the IKE preshared secret belongs to. Multiple unique identities
! 1176: may be specified, each having an _id_ prefix, if a secret is shared between
! 1177: multiple peers.
! 1178:
! 1179: secrets.ppk<suffix> { # }
! 1180: Postquantum Preshared Key (PPK) section for a specific secret.
! 1181:
! 1182: Postquantum Preshared Key (PPK) section for a specific secret. Each PPK is
! 1183: defined in a unique section having the _ppk_ prefix.
! 1184:
! 1185: secrets.ppk<suffix>.secret =
! 1186: Value of the PPK.
! 1187:
! 1188: Value of the PPK. It may either be an ASCII string, a hex encoded string if
! 1189: it has a _0x_ prefix or a Base64 encoded string if it has a _0s_ prefix in
! 1190: its value. Should have at least 256 bits of entropy for 128-bit security.
! 1191:
! 1192: secrets.ppk<suffix>.id<suffix> =
! 1193: PPK identity the PPK belongs to.
! 1194:
! 1195: PPK identity the PPK belongs to. Multiple unique identities
! 1196: may be specified, each having an _id_ prefix, if a secret is shared between
! 1197: multiple peers.
! 1198:
! 1199: secrets.private<suffix> { # }
! 1200: Private key decryption passphrase for a key in the _private_ folder.
! 1201:
! 1202: secrets.private<suffix>.file =
! 1203: File name in the _private_ folder for which this passphrase should be used.
! 1204:
! 1205: secrets.private<suffix>.secret
! 1206: Value of decryption passphrase for private key.
! 1207:
! 1208: secrets.rsa<suffix> { # }
! 1209: Private key decryption passphrase for a key in the _rsa_ folder.
! 1210:
! 1211: secrets.rsa<suffix>.file =
! 1212: File name in the _rsa_ folder for which this passphrase should be used.
! 1213:
! 1214: secrets.rsa<suffix>.secret
! 1215: Value of decryption passphrase for RSA key.
! 1216:
! 1217: secrets.ecdsa<suffix> { # }
! 1218: Private key decryption passphrase for a key in the _ecdsa_ folder.
! 1219:
! 1220: secrets.ecdsa<suffix>.file =
! 1221: File name in the _ecdsa_ folder for which this passphrase should be used.
! 1222:
! 1223: secrets.ecdsa<suffix>.secret
! 1224: Value of decryption passphrase for ECDSA key.
! 1225:
! 1226: secrets.pkcs8<suffix> { # }
! 1227: Private key decryption passphrase for a key in the _pkcs8_ folder.
! 1228:
! 1229: secrets.pkcs8<suffix>.file =
! 1230: File name in the _pkcs8_ folder for which this passphrase should be used.
! 1231:
! 1232: secrets.pkcs8<suffix>.secret
! 1233: Value of decryption passphrase for PKCS#8 key.
! 1234:
! 1235: secrets.pkcs12<suffix> { # }
! 1236: PKCS#12 decryption passphrase for a container in the _pkcs12_ folder.
! 1237:
! 1238: secrets.pkcs12<suffix>.file =
! 1239: File name in the _pkcs12_ folder for which this passphrase should be used.
! 1240:
! 1241: secrets.pkcs12<suffix>.secret
! 1242: Value of decryption passphrase for PKCS#12 container.
! 1243:
! 1244: secrets.token<suffix> { # }
! 1245: Definition for a private key that's stored on a token/smartcard.
! 1246:
! 1247: secrets.token<suffix>.handle =
! 1248: Hex-encoded CKA_ID of the private key on the token.
! 1249:
! 1250: secrets.token<suffix>.slot =
! 1251: Optional slot number to access the token.
! 1252:
! 1253: secrets.token<suffix>.module =
! 1254: Optional PKCS#11 module name to access the token.
! 1255:
! 1256: secrets.token<suffix>.pin =
! 1257: Optional PIN required to access the key on the token. If none is provided
! 1258: the user is prompted during an interactive --load-creds call.
! 1259:
! 1260: pools { # }
! 1261: Section defining named pools.
! 1262:
! 1263: Section defining named pools. Named pools may be referenced by connections
! 1264: with the **pools** option to assign virtual IPs and other configuration
! 1265: attributes.
! 1266:
! 1267: pools.<name> { # }
! 1268: Section defining a single pool with a unique name.
! 1269:
! 1270: pools.<name>.addrs =
! 1271: Addresses allocated in pool.
! 1272:
! 1273: Subnet or range defining addresses allocated in pool. Accepts a single CIDR
! 1274: subnet defining the pool to allocate addresses from or an address range
! 1275: (<from>-<to>). Pools must be unique and non-overlapping.
! 1276:
! 1277: pools.<name>.<attr> =
! 1278: Comma separated list of additional attributes from type <attr>.
! 1279:
! 1280: Comma separated list of additional attributes of type **<attr>**. The
! 1281: attribute type may be one of _dns_, _nbns_, _dhcp_, _netmask_, _server_,
! 1282: _subnet_, _split_include_ and _split_exclude_ to define addresses or CIDR
! 1283: subnets for the corresponding attribute types. Alternatively, **<attr>** can
! 1284: be a numerical identifier, for which string attribute values are accepted
! 1285: as well.
! 1286:
! 1287: authorities { # }
! 1288: Section defining attributes of certification authorities.
! 1289:
! 1290: authorities.<name> { # }
! 1291: Section defining a certification authority with a unique name.
! 1292:
! 1293: authorities.<name>.cacert =
! 1294: CA certificate belonging to the certification authority.
! 1295:
! 1296: CA certificate belonging to the certification authority. The certificates
! 1297: may use a relative path from the **swanctl** _x509ca_ directory or an
! 1298: absolute path.
! 1299:
! 1300: Configure one of _cacert_, _file_, or _handle_ per section.
! 1301:
! 1302: authorities.<name>.file =
! 1303: Absolute path to the certificate to load.
! 1304:
! 1305: Absolute path to the certificate to load. Passed as-is to the daemon, so it
! 1306: must be readable by it.
! 1307:
! 1308: Configure one of _cacert_, _file_, or _handle_ per section.
! 1309:
! 1310: authorities.<name>.handle =
! 1311: Hex-encoded CKA_ID of the CA certificate on a token.
! 1312:
! 1313: Hex-encoded CKA_ID of the CA certificate on a token.
! 1314:
! 1315: Configure one of _cacert_, _file_, or _handle_ per section.
! 1316:
! 1317: authorities.<name>.slot =
! 1318: Optional slot number of the token that stores the CA certificate.
! 1319:
! 1320: authorities.<name>.module =
! 1321: Optional PKCS#11 module name.
! 1322:
! 1323: authorities.<name>.crl_uris =
! 1324: Comma-separated list of CRL distribution points.
! 1325:
! 1326: Comma-separated list of CRL distribution points (ldap, http, or file URI).
! 1327:
! 1328: authorities.<name>.ocsp_uris =
! 1329: Comma-separated list of OCSP URIs.
! 1330:
! 1331: authorities.<name>.cert_uri_base =
! 1332: Defines the base URI for the Hash and URL feature supported by IKEv2.
! 1333:
! 1334: Defines the base URI for the Hash and URL feature supported by IKEv2.
! 1335: Instead of exchanging complete certificates, IKEv2 allows one to send an
! 1336: URI that resolves to the DER encoded certificate. The certificate URIs are
! 1337: built by appending the SHA1 hash of the DER encoded certificates to this
! 1338: base URI.
! 1339:
! 1340: include conf.d/*.conf
! 1341: Include config snippets
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>