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