ipsec.conf: conn Reference » History » Version 47
Tobias Brunner, 03.08.2011 10:34
closeaction documented
1 | 21 | Andreas Steffen | h1. conn <name> |
---|---|---|---|
2 | 1 | Martin Willi | |
3 | 44 | Tobias Brunner | {{>toc}} |
4 | 1 | Martin Willi | |
5 | 44 | Tobias Brunner | h2. General Connection Parameters |
6 | 21 | Andreas Steffen | |
7 | 36 | Andreas Steffen | _aaa_identity = <id>_ |
8 | 36 | Andreas Steffen | |
9 | 36 | Andreas Steffen | p((. defines the identity of the AAA backend used during IKEv2 EAP authentication. This is required if |
10 | 36 | Andreas Steffen | the EAP client uses a method that verifies the server identity (such as EAP-TLS), but it does not |
11 | 36 | Andreas Steffen | match the IKEv2 gateway identity. |
12 | 36 | Andreas Steffen | |
13 | 23 | Tobias Brunner | _also = <section name>_ |
14 | 31 | Martin Willi | |
15 | 23 | Tobias Brunner | p((. includes conn section <name>. |
16 | 1 | Martin Willi | |
17 | 23 | Tobias Brunner | _auth = *esp* | ah_ |
18 | 31 | Martin Willi | |
19 | 23 | Tobias Brunner | p((. whether authentication should be done as part of ESP encryption, or separately using the AH protocol. |
20 | 1 | Martin Willi | The IKEv2 daemon currently supports ESP only. |
21 | 1 | Martin Willi | |
22 | 24 | Andreas Steffen | _authby = *pubkey* | rsasig | ecdsasig | psk | secret | xauthrsasig | xauthpsk | eap | never_ |
23 | 31 | Martin Willi | |
24 | 1 | Martin Willi | p((. how the two security gateways should authenticate each other; acceptable values are *secret* or *psk* |
25 | 25 | Andreas Steffen | for pre-shared secrets, *pubkey* for public key signatures as well as the synonyms *rsasig* for RSA digital |
26 | 24 | Andreas Steffen | signatures and *ecdsasig* for Elliptic Curve DSA signatures. *never* can be used if negotiation is never |
27 | 24 | Andreas Steffen | to be attempted or accepted (useful for shunt-only conns). Digital signatures are superior in every way to |
28 | 24 | Andreas Steffen | shared secrets. In IKEv2, the two ends must not agree on this parameter, it is relevant for the out-bound |
29 | 21 | Andreas Steffen | authentication method only. IKEv1 additionally supports the values *xauthpsk* and *xauthrsasig* that |
30 | 21 | Andreas Steffen | will enable _eXtended AUTHentication (XAUTH)_ in addition to IKEv1 main mode based on shared secrets |
31 | 21 | Andreas Steffen | or digital RSA signatures, respectively. IKEv2 additionally supports the value *eap*, which indicates |
32 | 21 | Andreas Steffen | an initiator to request EAP authentication. The EAP method to use is selected by the server (see _eap_). |
33 | 20 | Andreas Steffen | This parameter is deprecated for IKEv2 connections, as two peers do ot need to agree on an authentication |
34 | 21 | Andreas Steffen | method. Use the _left|rightauth_ parameter to define authentication methods in IKEv2. |
35 | 20 | Andreas Steffen | |
36 | 23 | Tobias Brunner | _auto = *ignore* | add | route | start_ |
37 | 31 | Martin Willi | |
38 | 23 | Tobias Brunner | p((. what operation, if any, should be done automatically at IPsec startup. *add* loads a connection without |
39 | 21 | Andreas Steffen | starting it. *route* loads a connection and installs kernel traps. If traffic is detected between |
40 | 21 | Andreas Steffen | _leftsubnet_ and _rightsubnet_, a connection is established. *start* loads a connection and brings |
41 | 21 | Andreas Steffen | it up immediatly. *ignore* ignores the connection. This is equal to delete a connection from the config |
42 | 1 | Martin Willi | file. Relevant only locally, other end need not agree on it (but in general, for an intended-to-be-permanent |
43 | 23 | Tobias Brunner | connection, both ends should use _auto = *start*_ to ensure that any reboot causes immediate renegotiation). |
44 | 1 | Martin Willi | |
45 | 47 | Tobias Brunner | _closeaction = *none* | clear | hold | restart_ |
46 | 47 | Tobias Brunner | |
47 | 47 | Tobias Brunner | p((. defines the action to take if the remote peer unexpectedly closes a CHILD_SA (IKEv2 only, see _dpdaction_ for |
48 | 47 | Tobias Brunner | meaning of values). A _closeaction_ should not be used if the peer uses reauthentication or uniqueids checking, |
49 | 47 | Tobias Brunner | as these events might trigger a closeaction when not desired. |
50 | 47 | Tobias Brunner | |
51 | 23 | Tobias Brunner | _compress = yes | *no*_ |
52 | 31 | Martin Willi | |
53 | 23 | Tobias Brunner | p((. whether IPComp compression of content is proposed on the connection (link-level compression does not work on |
54 | 21 | Andreas Steffen | encrypted data, so to be effective, compression must be done before encryption). A value of *yes* causes IPsec |
55 | 4 | Martin Willi | to propose both compressed and uncompressed, and prefer compressed. A value of no prevents IPsec from proposing |
56 | 33 | Tobias Brunner | compression; a proposal to compress will still be accepted. |
57 | 1 | Martin Willi | |
58 | 23 | Tobias Brunner | _dpdaction = *none* | clear | hold | restart_ |
59 | 31 | Martin Willi | |
60 | 23 | Tobias Brunner | p((. controls the use of the Dead Peer Detection protocol (DPD, RFC 3706) where R_U_THERE notification messages |
61 | 1 | Martin Willi | (IKEv1) or empty INFORMATIONAL messages (IKEv2) are periodically sent in order to check the liveliness of the |
62 | 21 | Andreas Steffen | IPsec peer. The values *clear*, *hold*, and *restart* all activate DPD. If no activity is detected, |
63 | 21 | Andreas Steffen | all connections with a dead peer are stopped and unrouted (*clear*), put in the hold state (*hold*) |
64 | 21 | Andreas Steffen | or restarted (*restart*). For IKEv1, the default is *none* which disables the active sending of |
65 | 1 | Martin Willi | R_U_THERE notifications. Nevertheless Pluto will always send the DPD Vendor ID during connection set up |
66 | 1 | Martin Willi | in order to signal the readiness to act passively as a responder if the peer wants to use DPD. For IKEv2, |
67 | 1 | Martin Willi | *none* does't make sense, since all messages are used to detect dead peers. If specified, it has the |
68 | 21 | Andreas Steffen | same meaning as the default (*clear*). |
69 | 21 | Andreas Steffen | |
70 | 41 | Tobias Brunner | _dpddelay = *30s* | <time>_ |
71 | 1 | Martin Willi | |
72 | 31 | Martin Willi | p((. defines the period time interval with which R_U_THERE messages/INFORMATIONAL exchanges are sent to the peer. |
73 | 23 | Tobias Brunner | These are only sent if no other traffic is received. In IKEv2, a value of 0 sends no additional INFORMATIONAL |
74 | 1 | Martin Willi | messages and uses only standard messages (such as those to rekey) to detect dead peers. |
75 | 1 | Martin Willi | |
76 | 41 | Tobias Brunner | _dpdtimeout = *150s* | <time>_ |
77 | 31 | Martin Willi | |
78 | 23 | Tobias Brunner | p((. defines the timeout interval, after which all connections to a peer are deleted in case of inactivity. |
79 | 41 | Tobias Brunner | This only applies to IKEv1, in IKEv2 the default [[Retransmission|retransmission timeout]] applies, as every exchange is used to |
80 | 1 | Martin Willi | detect dead peers. |
81 | 20 | Andreas Steffen | |
82 | 1 | Martin Willi | _inactivity = <time>_ |
83 | 30 | Martin Willi | |
84 | 31 | Martin Willi | p((. defines the timeout interval, after which a CHILD_SA is closed if it did not send or receive any traffic. |
85 | 30 | Martin Willi | Currently supported in IKEv2 connections only. |
86 | 30 | Martin Willi | |
87 | 1 | Martin Willi | _eap = aka | gtc | md5 | mschapv2 | radius | sim | <type> | <type>-<vendor>_ |
88 | 23 | Tobias Brunner | |
89 | 41 | Tobias Brunner | p((. defines the EAP type to propose as server if the client requests EAP authentication. Currently supported values are *aka* |
90 | 23 | Tobias Brunner | for EAP-AKA, *gtc* for EAP-GTC, *md5* for EAP-MD5, *mschapv2* for EAP-MS-CHAPv2, *radius* for the |
91 | 21 | Andreas Steffen | EAP-RADIUS proxy and *sim* for EAP-SIM. |
92 | 21 | Andreas Steffen | Additionally, IANA assigned EAP method numbers are accepted, or a definition in the form *eap=type-vendor* |
93 | 21 | Andreas Steffen | (e.g. eap=7-12345 ) can be used to specify vendor specific EAP types. For IKEv2 this parameter is deprecated |
94 | 1 | Martin Willi | in favour of _left|rightauth_. |
95 | 41 | Tobias Brunner | To forward EAP authentication to a RADIUS server using the [[EapRadius|EAP-RADIUS plugin]], set *eap=radius*. |
96 | 5 | Martin Willi | |
97 | 23 | Tobias Brunner | _eap_identity = <id>_ |
98 | 1 | Martin Willi | |
99 | 31 | Martin Willi | p((. defines the identity the client uses to reply to an EAP Identity request. If defined on the EAP server, the defined |
100 | 23 | Tobias Brunner | identity will be used as peer identity during EAP authentication. The special value _%identity_ uses the EAP Identity method |
101 | 14 | Martin Willi | to ask the client for a EAP identity. If not defined, the IKEv2 identity will be used as EAP identity. |
102 | 1 | Martin Willi | |
103 | 1 | Martin Willi | _esp = <cipher suites>_ |
104 | 23 | Tobias Brunner | |
105 | 23 | Tobias Brunner | p((. comma-separated list of ESP encryption/authentication algorithms to be used for the connection, e.g. |
106 | 43 | Tobias Brunner | _aes128-sha256_. The notation is _encryption-integrity[-dhgroup]_. If _dh-group_ is specified, |
107 | 1 | Martin Willi | CHILD_SA setup and rekeying include a separate Diffe-Hellman exchange (IKEv2 only). |
108 | 43 | Tobias Brunner | Refer to [[IKEv1CipherSuites]] and [[IKEv2CipherSuites]] for a list of valid keywords. |
109 | 1 | Martin Willi | |
110 | 23 | Tobias Brunner | _forceencaps = yes | *no*_ |
111 | 31 | Martin Willi | |
112 | 41 | Tobias Brunner | p((. force UDP encapsulation for ESP packets even if no NAT situation is detected. |
113 | 1 | Martin Willi | This may help to surmount restrictive firewalls. In order to force the peer to |
114 | 1 | Martin Willi | encapsulate packets, NAT detection payloads are faked (IKEv2 only). |
115 | 1 | Martin Willi | |
116 | 23 | Tobias Brunner | _ike = <cipher suites>_ |
117 | 31 | Martin Willi | |
118 | 23 | Tobias Brunner | p((. comma-separated list of IKE/ISAKMP SA encryption/authentication algorithms to be used, e.g. |
119 | 21 | Andreas Steffen | _aes128-sha1-modp2048_. The notation is _encryption-integrity-dhgroup_. In IKEv2, multiple algorithms |
120 | 1 | Martin Willi | and proposals may be included, such as _aes128-aes256-sha1-modp1536-modp2048,3des-sha1-md5-modp1024_. |
121 | 43 | Tobias Brunner | Refer to [[IKEv1CipherSuites]] and [[IKEv2CipherSuites]] for a list of valid keywords. |
122 | 20 | Andreas Steffen | |
123 | 23 | Tobias Brunner | _ikelifetime = *3h* | <time>_ |
124 | 31 | Martin Willi | |
125 | 40 | Tobias Brunner | p((. how long the keying channel of a connection (_ISAKMP or IKE SA_) should last before being renegotiated. Also see [[ExpiryRekey|Expiry and Rekey]]. |
126 | 1 | Martin Willi | |
127 | 23 | Tobias Brunner | _installpolicy = *yes* | no_ |
128 | 31 | Martin Willi | |
129 | 23 | Tobias Brunner | p((. decides whether IPsec policies are installed in the kernel by the IKEv2 charon daemon for a given connection. |
130 | 21 | Andreas Steffen | Allows peaceful cooperation e.g. with the Mobile IPv6 _mip6d_ daemon who wants to control the kernel policies. |
131 | 1 | Martin Willi | |
132 | 23 | Tobias Brunner | _keyexchange = *ike* | ikev1 | ikev2_ |
133 | 31 | Martin Willi | |
134 | 23 | Tobias Brunner | p((. method of key exchange; which protocol should be used to initialize the connection. Connections marked with |
135 | 21 | Andreas Steffen | *ikev1* are initiated with Pluto, those marked with *ikev2* with Charon. An incoming request from |
136 | 38 | Andreas Steffen | the remote peer is handled by the correct daemon, unaffected from the _keyexchange_ setting. Starting with |
137 | 38 | Andreas Steffen | strongSwan 4.5 the default value *ike* is a synonym for *ikev2*, whereas in older strongSwan releases *ikev1* |
138 | 38 | Andreas Steffen | was assumed. |
139 | 20 | Andreas Steffen | |
140 | 45 | Tobias Brunner | _keyingtries = *3* | <number> | %forever_ |
141 | 31 | Martin Willi | |
142 | 46 | Daniel Mentz | p((. how many attempts (a positive integer or _%forever_) should be made to negotiate a connection, or a replacement |
143 | 45 | Tobias Brunner | for one, before giving up (default 3). The value _%forever_ means 'never give up'. Relevant only locally, other end need |
144 | 1 | Martin Willi | not agree on it. |
145 | 5 | Martin Willi | |
146 | 26 | Tobias Brunner | _keylife_ |
147 | 31 | Martin Willi | |
148 | 26 | Tobias Brunner | p((. synonym for _lifetime_. |
149 | 26 | Tobias Brunner | |
150 | 26 | Tobias Brunner | _lifebytes = <number>_ |
151 | 31 | Martin Willi | |
152 | 26 | Tobias Brunner | p((. the number of bytes transmitted over an IPsec SA before it expires (IKEv2 only). |
153 | 26 | Tobias Brunner | |
154 | 26 | Tobias Brunner | _lifepackets = <number>_ |
155 | 31 | Martin Willi | |
156 | 26 | Tobias Brunner | p((. the number of packets transmitted over an IPsec SA before it expires (IKEv2 only). |
157 | 26 | Tobias Brunner | |
158 | 26 | Tobias Brunner | _lifetime = *1h* | <time>_ |
159 | 31 | Martin Willi | |
160 | 1 | Martin Willi | p((. how long a particular instance of a connection (a set of encryption/authentication keys for user packets) |
161 | 21 | Andreas Steffen | should last, from successful negotiation to expiry; acceptable values are an integer optionally followed by |
162 | 1 | Martin Willi | _s_ (a time in seconds) or a decimal number followed by _m_, _h_, or _d_ (a time in minutes, hours, |
163 | 21 | Andreas Steffen | or days respectively) (default _1h_, maximum _24h_). Normally, the connection is renegotiated (via the |
164 | 26 | Tobias Brunner | keying channel) before it expires (see _margintime_). The two ends need not exactly agree on _lifetime_, although if they |
165 | 1 | Martin Willi | do not, there will be some clutter of superseded connections on the end which thinks the lifetime is longer. |
166 | 40 | Tobias Brunner | Also see [[ExpiryRekey|Expiry and Rekey]]. |
167 | 1 | Martin Willi | |
168 | 26 | Tobias Brunner | _marginbytes = <number>_ |
169 | 31 | Martin Willi | |
170 | 26 | Tobias Brunner | p((. how many bytes before IPsec SA expiry (see _lifebytes_) should attempts to negotiate a replacement begin (IKEv2 only). |
171 | 26 | Tobias Brunner | |
172 | 26 | Tobias Brunner | _marginpackets = <number>_ |
173 | 31 | Martin Willi | |
174 | 26 | Tobias Brunner | p((. how many packets before IPsec SA expiry (see _lifepackets_) should attempts to negotiate a replacement begin (IKEv2 only). |
175 | 26 | Tobias Brunner | |
176 | 26 | Tobias Brunner | _margintime = *9m* | <time>_ |
177 | 1 | Martin Willi | |
178 | 26 | Tobias Brunner | p((. how long before connection expiry or keying-channel expiry should attempts to negotiate a replacement begin; acceptable values |
179 | 40 | Tobias Brunner | as for _lifetime_ (default _9m_). Relevant only locally, other end need not agree on it. Also see [[ExpiryRekey|Expiry and Rekey]]. |
180 | 26 | Tobias Brunner | |
181 | 35 | Andreas Steffen | _mark = <value>[/<mask>]_ |
182 | 35 | Andreas Steffen | |
183 | 37 | Tobias Brunner | p((. sets an XFRM mark in the inbound and outbound IPsec SAs and policies. If the mask is missing then |
184 | 35 | Andreas Steffen | a default mask of *0xffffffff* is assumed. |
185 | 39 | Gerd v. Egidy | If using not the default mask make sure that the mark <value> given is the first <value> value valid |
186 | 39 | Gerd v. Egidy | in this mark (Bits which are zero in the <mask> must be zero in the <value> too). |
187 | 35 | Andreas Steffen | |
188 | 35 | Andreas Steffen | _mark_in = <value>[/<mask>]_ |
189 | 35 | Andreas Steffen | |
190 | 37 | Tobias Brunner | p((. sets an XFRM mark in the inbound IPsec SA and policy. If the mask is missing then |
191 | 35 | Andreas Steffen | a default mask of *0xffffffff* is assumed. |
192 | 39 | Gerd v. Egidy | If using not the default mask make sure that the mark <value> given is the first <value> value valid |
193 | 39 | Gerd v. Egidy | in this mark (Bits which are zero in the <mask> must be zero in the <value> too). |
194 | 35 | Andreas Steffen | |
195 | 35 | Andreas Steffen | _mark_out = <value>[/<mask>]_ |
196 | 35 | Andreas Steffen | |
197 | 37 | Tobias Brunner | p((. sets an XFRM mark in the outbound IPsec SA and policy. If the mask is missing then |
198 | 35 | Andreas Steffen | a default mask of *0xffffffff* is assumed. |
199 | 39 | Gerd v. Egidy | If using not the default mask make sure that the mark <value> given is the first <value> value valid |
200 | 39 | Gerd v. Egidy | in this mark (Bits which are zero in the <mask> must be zero in the <value> too). |
201 | 35 | Andreas Steffen | |
202 | 23 | Tobias Brunner | _mobike = *yes* | no_ |
203 | 31 | Martin Willi | |
204 | 23 | Tobias Brunner | p((. enables the IKEv2 [[MobIke|MOBIKE]] protocol defined by RFC 4555. If set to *no*, the IKEv2 charon |
205 | 21 | Andreas Steffen | daemon will not actively propose [[MobIke|MOBIKE]] but will still accept and support the mobility protocol |
206 | 1 | Martin Willi | as a responder. |
207 | 1 | Martin Willi | |
208 | 23 | Tobias Brunner | _modeconfig = push | *pull*_ |
209 | 31 | Martin Willi | |
210 | 23 | Tobias Brunner | p((. defines which mode is used to assign a virtual IP. Currently relevant for IKEv1 only since IKEv2 always uses |
211 | 21 | Andreas Steffen | the configuration payload in *pull* mode. Cisco VPN gateways usually operate in *push* mode. |
212 | 1 | Martin Willi | |
213 | 21 | Andreas Steffen | _pfs = *yes* | no_ |
214 | 31 | Martin Willi | |
215 | 1 | Martin Willi | p((. whether _Perfect Forward Secrecy_ of keys is desired on the connection's keying channel (with PFS, |
216 | 1 | Martin Willi | penetration of the key-exchange protocol does not compromise keys negotiated earlier). IKEv2 always uses |
217 | 23 | Tobias Brunner | PFS for IKE_SA rekeying whereas for CHILD_SA rekeying PFS is enforced by defining a Diffie-Hellman dhgroup |
218 | 23 | Tobias Brunner | in the _esp_ parameter. |
219 | 21 | Andreas Steffen | |
220 | 20 | Andreas Steffen | _pfsgroup = <modp group>_ |
221 | 31 | Martin Willi | |
222 | 20 | Andreas Steffen | p((. defines a Diffie-Hellman group for _perfect forward secrecy_ in IKEv1 Quick Mode differing from the DH group |
223 | 23 | Tobias Brunner | used for IKEv1 Main Mode (IKEv1 pluto daemon only). |
224 | 23 | Tobias Brunner | |
225 | 1 | Martin Willi | _reauth = *yes* | no_ |
226 | 31 | Martin Willi | |
227 | 1 | Martin Willi | p((. whether rekeying of an IKE_SA should also reauthenticate the peer. In IKEv1, reauthentication is always done. |
228 | 4 | Martin Willi | In IKEv2, a value of *no* rekeys without uninstalling the IPsec SAs, a value of *yes* (the default) |
229 | 23 | Tobias Brunner | creates a new IKE_SA from scratch and tries to recreate all IPsec SAs. |
230 | 23 | Tobias Brunner | |
231 | 1 | Martin Willi | _rekey = *yes* | no_ |
232 | 31 | Martin Willi | |
233 | 1 | Martin Willi | p((. whether a connection should be renegotiated when it is about to expire. The two ends need not agree, but |
234 | 1 | Martin Willi | while a value of no prevents Pluto/Charon from requesting renegotiation, it does not prevent responding |
235 | 1 | Martin Willi | to renegotiation requested from the other end, so no will be largely ineffective unless both ends agree on it. |
236 | 1 | Martin Willi | |
237 | 1 | Martin Willi | _rekeyfuzz = *100%* | <percentage>_ |
238 | 31 | Martin Willi | |
239 | 26 | Tobias Brunner | p((. maximum percentage by which _marginbytes_, _marginpackets_ and _margintime_ should be randomly increased to randomize |
240 | 1 | Martin Willi | rekeying intervals (important for hosts with many connections); acceptable values are an integer, which may exceed 100, |
241 | 26 | Tobias Brunner | followed by a '%' . |
242 | 26 | Tobias Brunner | The value of _marginTYPE_, after this random increase, must not exceed _lifeTYPE_ (where TYPE is one of bytes, packets or type). |
243 | 26 | Tobias Brunner | The value _0%_ will suppress randomization. Relevant only locally, other end need not agree on it. |
244 | 40 | Tobias Brunner | Also see [[ExpiryRekey|Expiry and Rekey]]. |
245 | 16 | Andreas Steffen | |
246 | 26 | Tobias Brunner | _rekeymargin_ |
247 | 31 | Martin Willi | |
248 | 26 | Tobias Brunner | p((. synonym for _margintime_. |
249 | 23 | Tobias Brunner | |
250 | 41 | Tobias Brunner | _reqid = <number>_ |
251 | 34 | Tobias Brunner | |
252 | 34 | Tobias Brunner | p((. sets the reqid for a given connection to a pre-configured fixed value (IKEv2 only). |
253 | 34 | Tobias Brunner | |
254 | 21 | Andreas Steffen | _type = *tunnel* | transport | transport_proxy | passthrough | drop | reject_ |
255 | 31 | Martin Willi | |
256 | 21 | Andreas Steffen | p((. the type of the connection; currently the accepted values are *tunnel*, signifying a host-to-host, |
257 | 21 | Andreas Steffen | host-to-subnet, or subnet-to-subnet tunnel; *transport*, signifying host-to-host transport mode; |
258 | 21 | Andreas Steffen | *transport_proxy*, signifying the special Mobile IPv6 transport proxy mode; |
259 | 23 | Tobias Brunner | *passthrough*, signifying that no IPsec processing should be done at all; *drop*, signifying that packets |
260 | 20 | Andreas Steffen | should be discarded; and *reject*, signifying that packets should be discarded and a diagnostic ICMP |
261 | 23 | Tobias Brunner | returned. Charon currently supports only *tunnel*, transport, and transport_proxy connection types. |
262 | 23 | Tobias Brunner | |
263 | 20 | Andreas Steffen | _xauth = *client* | server_ |
264 | 31 | Martin Willi | |
265 | 1 | Martin Willi | p((. specifies the role in the XAUTH protocol if activated by _authby=xauthpsk_ or _authby=xauthrsasig_. |
266 | 20 | Andreas Steffen | |
267 | 44 | Tobias Brunner | h2. left|right End Parameters |
268 | 23 | Tobias Brunner | |
269 | 27 | Daniel Mentz | Connection descriptions are defined in terms of a left endpoint and a right endpoint. For example, the |
270 | 27 | Daniel Mentz | two parameters leftid and rightid specify the identity of the left and the right endpoint. For every |
271 | 27 | Daniel Mentz | connection description an attempt is made to figure out whether the local endpoint should act as the left or |
272 | 27 | Daniel Mentz | the right endpoint. This is done by matching the IP addresses defined for both endpoints with the |
273 | 27 | Daniel Mentz | IP addresses assigned to local network interfaces. If a match is found then the role (left or right) that |
274 | 27 | Daniel Mentz | matches is going to be considered "local". If no match is found during startup, "left" is considered "local". |
275 | 27 | Daniel Mentz | |
276 | 1 | Martin Willi | _left|right = <ip address> | <fqdn> | %defaultroute | %any_ |
277 | 31 | Martin Willi | |
278 | 33 | Tobias Brunner | p((. (required) the IP address of the participant's public-network interface or one of several magic values. |
279 | 33 | Tobias Brunner | If it is _%%defaultroute_, the value will be filled in automatically with the local address of |
280 | 33 | Tobias Brunner | the default-route interface (as determined at IPsec startup time and during configuration |
281 | 33 | Tobias Brunner | update). Either left or right may be _%%defaultroute_, but not both. The prefix % in front of a |
282 | 29 | Daniel Mentz | fully-qualified domain name or an IP address will implicitly set _leftallowany=yes_. If the domain name |
283 | 29 | Daniel Mentz | cannot be resolved into an IP address at IPsec startup or update time then _left=%any_ and _leftallowany=no_ |
284 | 29 | Daniel Mentz | will be assumed. |
285 | 1 | Martin Willi | |
286 | 32 | Daniel Mentz | p((. In case of an IKEv2 connection, the value _%any_ for the local endpoint signifies an address to be filled in |
287 | 32 | Daniel Mentz | (by automatic keying) during negotiation. If the local peer initiates the connection setup the routing table |
288 | 32 | Daniel Mentz | will be queried to determine the correct local IP address. In case the local peer is responding to a connection |
289 | 33 | Tobias Brunner | setup then any IP address that is assigned to a local interface will be accepted. Note that specifying _%any_ |
290 | 33 | Tobias Brunner | for the local endpoint is not supported by the IKEv1 pluto daemon. |
291 | 27 | Daniel Mentz | |
292 | 33 | Tobias Brunner | p((. If _%any_ is used for the remote endpoint it literally means any IP address. |
293 | 27 | Daniel Mentz | |
294 | 33 | Tobias Brunner | p((. Please note that with the usage of wildcards multiple connection descriptions might match a given incoming |
295 | 29 | Daniel Mentz | connection attempt. The most specific description is used in that case. |
296 | 21 | Andreas Steffen | |
297 | 21 | Andreas Steffen | _left|rightallowany = yes | *no*_ |
298 | 31 | Martin Willi | |
299 | 21 | Andreas Steffen | p((. a modifier for _left|right_, making it behave as _%any_ although a concrete IP address has been |
300 | 21 | Andreas Steffen | assigned. Recommended for dynamic IP addresses that can be resolved by DynDNS at IPsec startup or update time. |
301 | 21 | Andreas Steffen | |
302 | 7 | Martin Willi | _left|rightauth = <auth method>_ |
303 | 31 | Martin Willi | |
304 | 23 | Tobias Brunner | p((. Authentication method to use locally (left) or require from the remote (right) side. This parameter is |
305 | 23 | Tobias Brunner | supported in IKEv2 only. Acceptable values are *pubkey* for public key encryption (RSA/ECDSA), *psk* |
306 | 21 | Andreas Steffen | for pre-shared key authentication, and *eap* to [require the] use of the Extensible Authentication Protocol. |
307 | 20 | Andreas Steffen | In the case of *eap*, an optional EAP method can be appended. Currently defined methods are *eap-aka*, |
308 | 20 | Andreas Steffen | *eap-sim*, *eap-gtc*, *eap-md5*, and *eap-mschapv2*. Alternatively, IANA assigned EAP method |
309 | 7 | Martin Willi | numbers are accepted. Vendor specific EAP methods are defined in the form *eap-type-vendor* (e.g. |
310 | 23 | Tobias Brunner | *eap-7-12345*). |
311 | 23 | Tobias Brunner | |
312 | 21 | Andreas Steffen | _left|rightauth2 = <auth method>_ |
313 | 31 | Martin Willi | |
314 | 1 | Martin Willi | p((. Same as _left|rightauth_, but defines a second authentication exchange. IKEv2 supports multiple authentication |
315 | 23 | Tobias Brunner | rounds using _Multiple Authentication Exchanges_ defined in "RFC 4739":http://tools.ietf.org/html/rfc4739. |
316 | 23 | Tobias Brunner | This allows e.g. a separate authentication of host and user (IKEv2 only). |
317 | 1 | Martin Willi | |
318 | 31 | Martin Willi | |
319 | 23 | Tobias Brunner | _left|rightca = <issuer dn> | %same_ |
320 | 23 | Tobias Brunner | |
321 | 23 | Tobias Brunner | p((. the distinguished name of a certificate authority which is required to lie in the trust path going from the |
322 | 23 | Tobias Brunner | _left|right_ participant's certificate up to the root certification authority. |
323 | 31 | Martin Willi | |
324 | 21 | Andreas Steffen | _left|rightca2 = <issuer dn> | %same_ |
325 | 1 | Martin Willi | |
326 | 33 | Tobias Brunner | p((. Same as _left|rightca_ but for the second authentication (IKev2 only). |
327 | 7 | Martin Willi | |
328 | 23 | Tobias Brunner | _left|rightcert = <path>_ |
329 | 31 | Martin Willi | |
330 | 23 | Tobias Brunner | p((. the path to the left|right participant's X.509 certificate. The file can be coded either in PEM or DER format. |
331 | 1 | Martin Willi | OpenPGP certificates are supported as well (IKEv1 only). Both absolute paths or paths relative to |
332 | 23 | Tobias Brunner | [[IpsecDirectoryCerts|/etc/ipsec.d/certs]] are accepted. By default _left|rightcert_ sets _left|rightid_ |
333 | 23 | Tobias Brunner | to the distinguished name of the certificate's subject and _left|rightca_ to the distinguished name of |
334 | 21 | Andreas Steffen | the certificate's issuer. The _left|right_ participant's ID can be overridden by specifying a _left|rightid_ |
335 | 7 | Martin Willi | value which must be certified by the certificate, though. |
336 | 21 | Andreas Steffen | |
337 | 33 | Tobias Brunner | _left|rightcert2 = <path>_ |
338 | 31 | Martin Willi | |
339 | 1 | Martin Willi | p((. Same as _left|rightcert_ but for the second authentication round (IKEv2 only). |
340 | 23 | Tobias Brunner | |
341 | 7 | Martin Willi | _left|rightfirewall = yes | *no*_ |
342 | 31 | Martin Willi | |
343 | 7 | Martin Willi | p((. whether the _left|right_ participant is doing forwarding-firewalling (including masquerading) |
344 | 1 | Martin Willi | using iptables for traffic from _left|rightsubnet_, which should be turned off for traffic to the |
345 | 21 | Andreas Steffen | other subnet) once the connection is established. May not be used in the same connection description with |
346 | 20 | Andreas Steffen | _left|rightupdown_. Implemented as a parameter to the default _ipsec _updown_ script. Relevant only |
347 | 23 | Tobias Brunner | locally, other end need not agree on it. |
348 | 20 | Andreas Steffen | |
349 | 20 | Andreas Steffen | p((. If one or both security gateways are doing forwarding firewalling (possibly including masquerading), |
350 | 23 | Tobias Brunner | and this is specified using the firewall parameters, tunnels established with IPsec are exempted from |
351 | 23 | Tobias Brunner | it so that packets can flow unchanged through the tunnels. (This means that all subnets connected in this |
352 | 7 | Martin Willi | manner must have distinct, non-overlapping subnet address blocks.) This is done by the default |
353 | 23 | Tobias Brunner | _ipsec _updown_ script (see pluto(8)). |
354 | 23 | Tobias Brunner | |
355 | 1 | Martin Willi | p((. In situations calling for more control, it may be preferable for the user to supply his own updown script, |
356 | 7 | Martin Willi | which makes the appropriate adjustments for his system. |
357 | 23 | Tobias Brunner | |
358 | 23 | Tobias Brunner | _left|rightgroups = <group list>_ |
359 | 31 | Martin Willi | |
360 | 1 | Martin Willi | p((. a comma-separated list of group names. If the _left|rightgroups_ parameter is present then the peer must |
361 | 7 | Martin Willi | be a member of at least one of the groups defined by the parameter. Group membership must be certified by a |
362 | 1 | Martin Willi | valid attribute certificate stored in [[IpsecDirectoryAcerts|/etc/ipsec.d/acerts]] that has been issued |
363 | 7 | Martin Willi | to the peer by a trusted Authorization Authority stored in [[IpsecDirectoryAacerts|/etc/ipsec.d/aacerts]]. |
364 | 23 | Tobias Brunner | Attribute certificates are not supported in IKEv2 yet. |
365 | 1 | Martin Willi | |
366 | 12 | Martin Willi | _left|righthostaccess = yes | *no*_ |
367 | 1 | Martin Willi | |
368 | 1 | Martin Willi | p((. inserts a pair of INPUT and OUTPUT iptables rules using the default _ipsec _updown_ script, |
369 | 1 | Martin Willi | thus allowing access to the host itself in the case where the host's internal interface is part |
370 | 1 | Martin Willi | of the negotiated client subnet. |
371 | 1 | Martin Willi | |
372 | 1 | Martin Willi | _left|rightid = <id>_ |
373 | 31 | Martin Willi | |
374 | 1 | Martin Willi | p((. how the _left|right_ participant should be identified for authentication; defaults to _left|right_. |
375 | 33 | Tobias Brunner | Can be an IP address or a fully-qualified domain name preceded by @ (which is used as a literal string and not resolved). |
376 | 23 | Tobias Brunner | |
377 | 21 | Andreas Steffen | _left|rightid2 = <id>_ |
378 | 8 | Martin Willi | |
379 | 31 | Martin Willi | p((. Identity to use for the second authentication of the left participant (IKEv2 only). |
380 | 33 | Tobias Brunner | Defaults to _left|rightid_. |
381 | 23 | Tobias Brunner | |
382 | 33 | Tobias Brunner | _leftikeport = <port>_ |
383 | 33 | Tobias Brunner | |
384 | 33 | Tobias Brunner | p((. UDP port the left participant uses for IKE communication. Currently supported in IKEv2 connections only. |
385 | 33 | Tobias Brunner | If unspecified, port 500 is used with the port floating to 4500 if a NAT is detected or MOBIKE is enabled. |
386 | 33 | Tobias Brunner | Specifying a local IKE port different from the default additionally requires a socket implementation that |
387 | 33 | Tobias Brunner | listens to this port. |
388 | 33 | Tobias Brunner | |
389 | 7 | Martin Willi | _left|rightnexthop = %direct | %defaultroute | <ip address> | <fqdn>_ |
390 | 23 | Tobias Brunner | |
391 | 23 | Tobias Brunner | p((. this parameter is usually not needed any more because the NETKEY IPsec stack does not require |
392 | 21 | Andreas Steffen | explicit routing entries for the traffic to be tunneled. If _left|sourceip_ is used with IKEv1 |
393 | 1 | Martin Willi | then _left|rightnexthop_ must still be set in order for the source routes to work properly. |
394 | 1 | Martin Willi | |
395 | 23 | Tobias Brunner | _left|rightprotoport = <protocol>/<port>_ |
396 | 31 | Martin Willi | |
397 | 23 | Tobias Brunner | p((. restrict the traffic selector to a single protocol and/or port. Examples: _leftprotoport=tcp/http_ |
398 | 1 | Martin Willi | or _leftprotoport=6/80_ or _rightprotoport=udp_ |
399 | 7 | Martin Willi | |
400 | 23 | Tobias Brunner | _left|rightrsasigkey = *%cert* | <raw rsa public key>_ |
401 | 31 | Martin Willi | |
402 | 23 | Tobias Brunner | p((. the left participant's public key for RSA signature authentication, in RFC 2537 format using ttodata(3) |
403 | 1 | Martin Willi | encoding. The default value _%cert_ means that the key is extracted from a certificate. |
404 | 1 | Martin Willi | |
405 | 1 | Martin Willi | _left|rightsendcert = never | no | *ifasked* | always | yes_ |
406 | 1 | Martin Willi | |
407 | 1 | Martin Willi | p((. Accepted values are *never* or *no*, *always* or *yes*, and *ifasked*, the latter meaning that |
408 | 1 | Martin Willi | the peer must send a certificate request (CR) payload in order to get a certificate in return. |
409 | 1 | Martin Willi | |
410 | 33 | Tobias Brunner | _leftsourceip = %config | %cfg | %modeconfig | %modecfg | <ip address>_ |
411 | 7 | Martin Willi | |
412 | 1 | Martin Willi | p((. The internal source IP to use in a tunnel, also known as [[VirtualIp|virtual IP]]. |
413 | 31 | Martin Willi | If the value is one of the synonyms _%modeconfig, %modecfg, %config_, or _%cfg_, an address is |
414 | 1 | Martin Willi | requested from the peer. In IKEv2, a statically defined address is also requested, since the server |
415 | 23 | Tobias Brunner | may change it. |
416 | 21 | Andreas Steffen | |
417 | 1 | Martin Willi | p((. If _leftsourceip=%config_ is set to request a [[VirtualIp|virtual IP]] from the peer then the |
418 | 31 | Martin Willi | responder must define the address-to-be-assigned using a separate conn section with a _rightsourceip_ |
419 | 1 | Martin Willi | statement for each client. |
420 | 33 | Tobias Brunner | |
421 | 33 | Tobias Brunner | _rightsourceip = %config | <network>/<netmask> | %poolname_ |
422 | 33 | Tobias Brunner | |
423 | 33 | Tobias Brunner | p((. The internal source IP to use in a tunnel for the remote peer. If the value is %config on the responder |
424 | 33 | Tobias Brunner | side, the initiator must propose an address which is then echoed back. Also supported are address pools |
425 | 33 | Tobias Brunner | expressed as _<network>/<netmask>_ or the use of an external IP address pool using _%%poolname_ where |
426 | 33 | Tobias Brunner | _poolname_ is the name of the IP address pool used for the lookup (see [[VirtualIp|virtual IP]] for details). |
427 | 23 | Tobias Brunner | |
428 | 23 | Tobias Brunner | _left|rightsubnet = <ip subnet>_ |
429 | 31 | Martin Willi | |
430 | 21 | Andreas Steffen | p((. private subnet behind the left participant, expressed as network/netmask (actually, any form acceptable to |
431 | 1 | Martin Willi | ttosubnet(3)); if omitted, essentially assumed to be left/32, signifying that the _left|right_ end of the |
432 | 23 | Tobias Brunner | connection goes to the _left|right_ participant only. When using IKEv2, the configured subnet of the peers |
433 | 23 | Tobias Brunner | may differ, the protocol narrows it to the greatest common subnet. Further, IKEv2 supports multiple |
434 | 21 | Andreas Steffen | subnets separated by commas. IKEv1 only interprets the first subnet of such a definition. |
435 | 21 | Andreas Steffen | |
436 | 1 | Martin Willi | _left|rightsubnetwithin = <ip subnet>_ |
437 | 31 | Martin Willi | |
438 | 1 | Martin Willi | p((. the peer can propose any subnet or single IP address that fits within the range defined by |
439 | 1 | Martin Willi | _left|rightsubnetwithin_. Not relevant for IKEv2, as subnets are narrowed. |
440 | 1 | Martin Willi | |
441 | 1 | Martin Willi | _left|rightupdown = <path>_ |
442 | 31 | Martin Willi | |
443 | 1 | Martin Willi | p((. what _updown_ script to run to adjust routing and/or firewalling when the status of the connection |
444 | 1 | Martin Willi | changes (default _ipsec _updown_). Relevant only locally, other end need not agree on it. |
445 | 1 | Martin Willi | IKEv2 uses the _updown_ script to insert firewall rules only, since routing has been implemented directly |
446 | 1 | Martin Willi | into Charon. |
447 | 42 | Tobias Brunner | |
448 | 44 | Tobias Brunner | h2. IKEv2 Mediation Extension Parameters |
449 | 42 | Tobias Brunner | |
450 | 42 | Tobias Brunner | The following parameters are relevant to IKEv2 Mediation Extension operation only. |
451 | 42 | Tobias Brunner | |
452 | 42 | Tobias Brunner | _mediation = yes | *no*_ |
453 | 42 | Tobias Brunner | |
454 | 42 | Tobias Brunner | p((. whether this connection is a mediation connection, ie. whether this connection is used to mediate other |
455 | 42 | Tobias Brunner | connections. Mediation connections create no child SA. Acceptable values are no (the default) and yes. |
456 | 42 | Tobias Brunner | |
457 | 42 | Tobias Brunner | _mediated_by = <name>_ |
458 | 42 | Tobias Brunner | |
459 | 42 | Tobias Brunner | p((. the name of the connection to mediate this connection through. If given, the connection will be mediated |
460 | 42 | Tobias Brunner | through the named mediation connection. The mediation connection must set *mediation=yes*. |
461 | 42 | Tobias Brunner | |
462 | 42 | Tobias Brunner | _me_peerid = <id>_ |
463 | 42 | Tobias Brunner | |
464 | 42 | Tobias Brunner | p((. ID as which the peer is known to the mediation server, ie. which the other end of this connection uses as |
465 | 42 | Tobias Brunner | its leftid on its connection to the mediation server. This is the ID we request the mediation server to |
466 | 42 | Tobias Brunner | mediate us with. If me_peerid is not given, the rightid of this connection will be used as peer ID. |