Return to swanctl.opt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / strongswan / src / swanctl |
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