Project

General

Profile

ipsec » History » Version 32

Tobias Brunner, 04.09.2024 15:47

1 32 Tobias Brunner
{{swanctl}}
2 32 Tobias Brunner
3 12 Martin Willi
h1. ipsec
4 1 Martin Willi
5 24 Tobias Brunner
{{>toc}}
6 1 Martin Willi
7 30 Tobias Brunner
@ipsec@ is an umbrella command comprising a collection of individual sub commands that can be used to control and monitor IPsec connections as well as the IKE daemon.
8 1 Martin Willi
9 30 Tobias Brunner
> *Important:* The @ipsec@ command controls the legacy [[Ipsecstarter|starter]] daemon and [[Ipsecstroke|stroke]] plugin. A more modern and flexible interface is provided via [[vici]] plugin and [[swanctl]] command since version:5.2.0.
10 1 Martin Willi
11 1 Martin Willi
12 30 Tobias Brunner
h2. Synopsis
13 1 Martin Willi
14 30 Tobias Brunner
<pre>
15 30 Tobias Brunner
ipsec <command> [ <argument> ]  [ <options> ]
16 30 Tobias Brunner
</pre>
17 30 Tobias Brunner
18 30 Tobias Brunner
*Note*: Some distributions (e.g. Fedora and its offsprings) rename the @ipsec@ command to *@strongswan@*
19 30 Tobias Brunner
20 30 Tobias Brunner
21 12 Martin Willi
h2. Control Commands
22 1 Martin Willi
23 1 Martin Willi
24 1 Martin Willi
*ipsec start [ _<starter options>_ ]*
25 15 Daniel Mentz
26 19 Tobias Brunner
p((. calls [[IpsecStarter|ipsec starter]] [ _<starter options>_ ] which in turn parses [[IpsecConf|ipsec.conf]] and starts the IKE daemon charon.
27 12 Martin Willi
28 12 Martin Willi
*ipsec stop*
29 15 Daniel Mentz
30 19 Tobias Brunner
p((. terminates all IPsec connection and stops the IKE daemon charon by sending a _TERM_ signal to [[IpsecStarter|ipsec starter]].
31 1 Martin Willi
32 12 Martin Willi
*ipsec restart [ _<starter options>_ ]*
33 15 Daniel Mentz
34 13 Tobias Brunner
p((. is equivalent to *ipsec stop* followed by *ipsec start [ _<starter options>_ ]* after a guard period of 2 seconds.
35 1 Martin Willi
   
36 1 Martin Willi
*ipsec update*
37 15 Daniel Mentz
38 31 Tobias Brunner
p((. sends a _HUP_ signal to [[IpsecStarter|ipsec starter]] which in turn determines any changes in [[IpsecConf|ipsec.conf]] and updates the configuration on the running IKE daemon charon. This generally does not affect established connections, except those for which the configuration has changed (see #129). Such connections should be restarted manually.
39 1 Martin Willi
40 12 Martin Willi
*ipsec reload*
41 15 Daniel Mentz
42 31 Tobias Brunner
p((. sends a _USR1_ signal to [[IpsecStarter|ipsec starter]] which in turn reloads the whole configuration on the running IKE daemon charon based on the actual [[IpsecConf|ipsec.conf]]. All currently established connections could be affected by this (see #129), so using *ipsec update* is generally preferred.
43 1 Martin Willi
44 13 Tobias Brunner
*ipsec up  _<name>_*
45 15 Daniel Mentz
46 19 Tobias Brunner
p((. tells the IKE daemon to start up connection _<name>_. Implemented by calling the [[IpsecStroke|ipsec stroke]] up _<name>_ command.
47 12 Martin Willi
48 13 Tobias Brunner
*ipsec down  _<name>_*
49 15 Daniel Mentz
50 19 Tobias Brunner
p((.  tells the IKE daemon to terminate connection _<name>_. Implemented by calling the [[IpsecStroke|ipsec stroke]] down _<name>_ command.
51 12 Martin Willi
52 16 Daniel Mentz
*ipsec down  _<name>{n}_*
53 16 Daniel Mentz
54 22 Tobias Brunner
p((. terminates CHILD_SA instance n of connection <name>. Since _{n}_ uniquely identifis a CHILD_SA the name is optional.
55 16 Daniel Mentz
56 16 Daniel Mentz
*ipsec down  _<name>{<notextile>*</notextile>}_*
57 16 Daniel Mentz
58 19 Tobias Brunner
p((. terminates all CHILD_SA instances of connection <name>.
59 16 Daniel Mentz
60 16 Daniel Mentz
*ipsec down _<name>[n]_*
61 1 Martin Willi
62 22 Tobias Brunner
p((. terminates IKE_SA instance n of connection <name> plus dependent CHILD_SAs.  Since _[n]_ uniquely identifis an IKE_SA the name is optional.
63 22 Tobias Brunner
64 16 Daniel Mentz
65 16 Daniel Mentz
*ipsec down _<name>[<notextile>*</notextile>]_*
66 16 Daniel Mentz
67 19 Tobias Brunner
p((. terminates all IKE_SA instances of connection <name>.
68 16 Daniel Mentz
69 13 Tobias Brunner
*ipsec route  _<name>_*
70 15 Daniel Mentz
71 19 Tobias Brunner
p((. tells the IKE daemon to insert [[IpsecPolicy|IPsec policies]] in the kernel for connection _<name>_. The first payload packet matching the [[IpsecPolicy|IPsec policies]] will automatically trigger an IKE connection setup. Implemented by calling the [[IpsecStroke|ipsec stroke]] route _<name>_ command.
72 1 Martin Willi
73 13 Tobias Brunner
*ipsec unroute  _<name>_*
74 15 Daniel Mentz
75 19 Tobias Brunner
p((. remove the [[IpsecPolicy|IPsec policies]] in the kernel for connection _<name>_. Implemented by calling the [[IpsecStroke|ipsec stroke]] unroute _<name>_ command.
76 5 Martin Willi
 
77 13 Tobias Brunner
*ipsec status [ _<name>_ ]*
78 15 Daniel Mentz
79 19 Tobias Brunner
p((.  returns concise status information either on connection _<name>_ or if the argument is lacking, on all connections. Implemented by calling the [[IpsecStroke|ipsec stroke]] status [ _<name>_ ] command.
80 13 Tobias Brunner
81 12 Martin Willi
*ipsec statusall [ _<name>_ ]*
82 15 Daniel Mentz
83 19 Tobias Brunner
p((. returns detailed status information either on connection _<name>_ or if the argument is lacking, on all connections. Implemented by calling the [[IpsecStroke|ipsec stroke]] statusall [ _<name>_ ] command.
84 12 Martin Willi
85 1 Martin Willi
86 1 Martin Willi
h2. Info Commands
87 12 Martin Willi
88 1 Martin Willi
*ipsec version*
89 15 Daniel Mentz
90 1 Martin Willi
p((. returns the ipsec version in the form of *Linux strongSwan U<strongSwan userland version>/K<Linux kernel version>* if strongSwan uses the native NETKEY IPsec stack of the Linux kernel it is running on.
91 1 Martin Willi
92 1 Martin Willi
*ipsec copyright*
93 15 Daniel Mentz
94 13 Tobias Brunner
p((. returns the copyright information.
95 1 Martin Willi
96 12 Martin Willi
*ipsec --confdir*
97 15 Daniel Mentz
98 13 Tobias Brunner
p((. returns the _SYSCONFDIR_ directory as defined by the [[InstallationDocumentation|configure]] options.
99 1 Martin Willi
100 1 Martin Willi
*ipsec --directory*
101 15 Daniel Mentz
102 13 Tobias Brunner
p((. returns the _LIBEXECDIR_ directory as defined by the [[InstallationDocumentation|configure]] options.
103 1 Martin Willi
104 1 Martin Willi
*ipsec --help*
105 15 Daniel Mentz
106 13 Tobias Brunner
p((. returns the usage information for the ipsec command.
107 1 Martin Willi
108 1 Martin Willi
*ipsec --versioncode*
109 10 Martin Willi
110 12 Martin Willi
p((. returns the ipsec version number in the form of *U<strongSwan userland version>/K<Linux kernel version>* if strongSwan uses the native NETKEY IPsec stack of the Linux kernel it is running on.
111 1 Martin Willi
112 10 Martin Willi
h2. List Commands
113 1 Martin Willi
114 26 Tobias Brunner
*ipsec leases [ [ <poolname> [ <address> ] ]*
115 26 Tobias Brunner
116 26 Tobias Brunner
p((. returns the status of all or the selected IP address pools (or even a single virtual IP address).
117 26 Tobias Brunner
118 13 Tobias Brunner
*ipsec listaacerts [ --utc ]*
119 1 Martin Willi
120 19 Tobias Brunner
p((. returns a list of X.509 Authorization Authority (AA) certificates that were loaded locally by the IKE daemon from the [[IpsecDirectoryAacerts|/etc/ipsec.d/aacerts]] directory. Implemented by calling the [[IpsecStroke|ipsec stroke]] listaacerts command.
121 15 Daniel Mentz
122 13 Tobias Brunner
*ipsec listacerts [ --utc ]*
123 1 Martin Willi
124 21 Tobias Brunner
p((. returns a list of X.509 Attribute certificates that were loaded locally by the IKE daemon from the [[IpsecDirectoryAcerts|/etc/ipsec.d/acerts]] directory. Implemented by calling the [[IpsecStroke|ipsec stroke]] listacerts command.
125 1 Martin Willi
126 21 Tobias Brunner
*ipsec listalgs*
127 21 Tobias Brunner
128 21 Tobias Brunner
p((. returns a list of all supported IKE encryption and hash algorithms, and the available Diffie-Hellman groups. Implemented by calling the [[IpsecStroke|ipsec stroke]] listalgs command.
129 21 Tobias Brunner
130 13 Tobias Brunner
*ipsec listcacerts [ --utc ]*
131 1 Martin Willi
132 19 Tobias Brunner
p((. returns a list of X.509 Certification Authority (CA) certificates that were loaded locally by the IKE daemon from the [[IpsecDirectoryCacerts|/etc/ipsec.d/cacerts]] directory or received via the IKE protocol. Implemented by calling the [[IpsecStroke|ipsec stroke]] listcacerts command.
133 15 Daniel Mentz
134 13 Tobias Brunner
*ipsec listcainfos [ --utc ]*
135 1 Martin Willi
136 19 Tobias Brunner
p((. returns Certification Authority information (CRL distribution points, OCSP URIs, LDAP servers) that were defined by [[CaSection|ca sections]] in [[IpsecConf|ipsec.conf]]. Implemented by calling the [[IpsecStroke|ipsec stroke]] listcainfos command.
137 13 Tobias Brunner
138 1 Martin Willi
*ipsec listcerts [ --utc ]*
139 1 Martin Willi
140 1 Martin Willi
p((. returns a list of X.509 and/or OpenPGP certificates that were either loaded locally by the IKE daemon or received via the IKE protocol. Implemented by calling the [[IpsecStroke|ipsec stroke]] listcerts command.
141 1 Martin Willi
142 25 Tobias Brunner
*ipsec listcounters [ <name> ]*
143 25 Tobias Brunner
144 25 Tobias Brunner
p((. returns a list of global or connection specific counter values about received and sent IKE messages and rekeyings.  Connection specific ounters are available since [[5.0.3]]. Implemented by calling the [[IpsecStroke|ipsec stroke]] listcounters command.
145 25 Tobias Brunner
146 25 Tobias Brunner
*ipsec listcrls [ --utc ]*
147 25 Tobias Brunner
148 28 Lauri Võsandi
p((. returns a list of Certificate Revocation Lists (CRLs) that were either loaded by the IKE daemon from the [[IpsecDirectoryCrls|/etc/ipsec.d/crls]] directory or fetched from an HTTP- or LDAP-based CRL distribution point. Implemented by calling the [[IpsecStroke|ipsec stroke]] listcrls command. Note that X.509 Authority Key Identifier extension is used to associate CRL with a particular CA, otherwise CRL is listed but not applied.
149 25 Tobias Brunner
150 13 Tobias Brunner
*ipsec listgroups [ --utc ]*
151 1 Martin Willi
152 19 Tobias Brunner
p((. returns a list of all groups that are used to define user authorization profiles. Currently not supported.
153 15 Daniel Mentz
154 13 Tobias Brunner
*ipsec listocsp [ --utc ]*
155 1 Martin Willi
156 19 Tobias Brunner
p((. returns cached revocation information fetched from OCSP servers. Implemented by calling the [[IpsecStroke|ipsec stroke]] listocsp command.
157 15 Daniel Mentz
158 18 Tobias Brunner
*ipsec listocspcerts [ --utc ]*
159 1 Martin Willi
160 1 Martin Willi
p((. returns a list of X.509 OCSP Signer certificates that were either loaded locally by the IKE daemon from the [[IpsecDirectoryOcspcerts|/etc/ipsec.d/ocspcerts]] directory or were sent by an OCSP server. Implemented by calling the [[IpsecStroke|ipsec stroke]] listocspcerts command.
161 1 Martin Willi
162 21 Tobias Brunner
*ipsec listplugins*
163 21 Tobias Brunner
164 21 Tobias Brunner
p((. returns a list of all loaded plugin features. Implemented by calling the [[IpsecStroke|ipsec stroke]] listplugins command.
165 21 Tobias Brunner
166 13 Tobias Brunner
*ipsec listpubkeys [ --utc ]*
167 2 Martin Willi
168 25 Tobias Brunner
p((. returns a list of public keys that were loaded in raw key format. Implemented by calling the [[IpsecStroke|ipsec stroke]] listpubkeys command.
169 1 Martin Willi
170 12 Martin Willi
*ipsec listall [ --utc ]*
171 19 Tobias Brunner
172 18 Tobias Brunner
p((. returns  all information generated by the list commands above. Each list command can be called with the @--utc@ option which displays all dates in UTC instead of local time. Implemented by calling the [[IpsecStroke|ipsec stroke]] listall command.
173 1 Martin Willi
174 1 Martin Willi
h2. Reread Commands
175 12 Martin Willi
176 1 Martin Willi
*ipsec rereadaacerts*
177 1 Martin Willi
178 19 Tobias Brunner
p((. reads all certificate files contained in the [[IpsecDirectoryAacerts|/etc/ipsec.d/aacerts]] directory and adds them to the list of Authorization Authority (AA) certificates. Implemented by calling the [[IpsecStroke|ipsec stroke]] rereadaacerts command.
179 1 Martin Willi
180 13 Tobias Brunner
*ipsec rereadacerts*
181 1 Martin Willi
182 19 Tobias Brunner
p((. reads all certificate files contained in the [[IpsecDirectoryAcerts|/etc/ipsec.d/acerts]] directory and adds them to the list of attribute certificates. Implemented by calling the [[IpsecStroke|ipsec stroke]] rereadacerts command.
183 1 Martin Willi
184 1 Martin Willi
*ipsec rereadcacerts*
185 1 Martin Willi
186 19 Tobias Brunner
p((. reads all certificate files contained in  the [[IpsecDirectoryCacerts|/etc/ipsec.d/cacerts]] directory  and adds them to the list of Certification Authority (CA) certificates. Implemented by calling the [[IpsecStroke|ipsec stroke]] rereadcacerts command.
187 1 Martin Willi
188 1 Martin Willi
*ipsec rereadcrls*
189 1 Martin Willi
190 19 Tobias Brunner
p((. reads all Certificate Revocation Lists (CRLs) contained in the [[IpsecDirectoryCrls|/etc/ipsec.d/crls]] directory and adds them to the list of CRLs. Older CRLs are replaced by newer ones. Implemented by calling the [[IpsecStroke|ipsec stroke]] rereadcrls command.
191 1 Martin Willi
192 1 Martin Willi
*ipsec rereadocspcerts*
193 15 Daniel Mentz
194 19 Tobias Brunner
p((. reads all certificate files contained in the [[IpsecDirectoryOcspcerts|/etc/ipsec.d/ocspcerts]] directory and adds them to the list of OCSP signer certificates. Implemented by calling the [[IpsecStroke|ipsec stroke]] rereadocspcerts command.
195 1 Martin Willi
 
196 12 Martin Willi
*ipsec rereadsecrets*
197 15 Daniel Mentz
198 19 Tobias Brunner
p((. flushes and rereads all secrets defined in [[IpsecSecrets|ipsec.secrets]]. Implemented by calling the [[IpsecStroke|ipsec stroke]] rereadsecrets command.
199 1 Martin Willi
200 12 Martin Willi
*ipsec secrets*
201 15 Daniel Mentz
202 13 Tobias Brunner
p((. is equivalent to *ipsec rereadsecrets*.
203 1 Martin Willi
204 1 Martin Willi
*ipsec rereadall*
205 1 Martin Willi
206 1 Martin Willi
p((. executes all reread commands listed above. Implemented by calling the [[IpsecStroke|ipsec stroke]] rereadall command.
207 1 Martin Willi
208 24 Tobias Brunner
h2. Reset Commands
209 24 Tobias Brunner
210 24 Tobias Brunner
*ipsec resetcounters [ <name> ]*
211 24 Tobias Brunner
212 24 Tobias Brunner
p((. resets global or connection specific counters. Since [[5.0.3]]. Implemented by calling the [[IpsecStroke|ipsec stroke]] resetcounters command.
213 1 Martin Willi
214 15 Daniel Mentz
h2. Purge Commands
215 13 Tobias Brunner
216 20 Tobias Brunner
*ipsec purgecerts*
217 20 Tobias Brunner
218 20 Tobias Brunner
p((. purges all cached certificates. Implemented by calling the [[IpsecStroke|ipsec stroke]] purgecerts command.
219 20 Tobias Brunner
220 29 Tobias Brunner
*ipsec purgecrls*
221 20 Tobias Brunner
222 29 Tobias Brunner
p((. purges all cached CRLs. Implemented by calling the [[IpsecStroke|ipsec stroke]] purgecrls command.
223 20 Tobias Brunner
224 1 Martin Willi
*ipsec purgeike*
225 20 Tobias Brunner
226 13 Tobias Brunner
p((. purges IKE_SAs that don't have a CHILD_SA. Implemented by calling the [[IpsecStroke|ipsec stroke]] purgeike command.
227 1 Martin Willi
228 1 Martin Willi
*ipsec purgeocsp*
229 1 Martin Willi
230 19 Tobias Brunner
p((. purges all cached OCSP information records. Implemented by calling the [[IpsecStroke|ipsec stroke]] purgeocsp command.
231 19 Tobias Brunner
232 19 Tobias Brunner
h2. Before 5.0.0
233 19 Tobias Brunner
234 30 Tobias Brunner
In releases before [[5.0.0]] IKEv1 connections were handled by the separate [[pluto]] keying daemon. The ipsec command then used the [[IpsecWhack|ipsec whack]] command in addition to the [[IpsecStroke|ipsec stroke]] command to communicate with pluto.
235 19 Tobias Brunner
236 19 Tobias Brunner
h3. List Commands
237 19 Tobias Brunner
238 19 Tobias Brunner
*ipsec listcards [ --utc ]*
239 19 Tobias Brunner
240 19 Tobias Brunner
p((. lists all certificates found on attached smart cards. Supported by the IKEv1 pluto daemon only. Implemented by calling the [[IpsecWhack|ipsec whack]] --listcards command.
241 19 Tobias Brunner
242 19 Tobias Brunner
h3. PKCS11 Proxy Commands
243 1 Martin Willi
244 12 Martin Willi
*ipsec scencrypt _<value>_ [ --inbase _<base>_ ] [ --outbase _<base>_ ] [ --keyid _<id>_ ]*
245 15 Daniel Mentz
246 13 Tobias Brunner
p((. Supported by the IKEv1 pluto daemon only. Implemented by calling the [[IpsecWhack|ipsec whack]] --scencrypt command.
247 1 Martin Willi
248 12 Martin Willi
*ipsec scdecrypt _<value>_ [ --inbase <base> ] [ --outbase _<base>_ ] [ --keyid _<id>_ ]*
249 15 Daniel Mentz
250 13 Tobias Brunner
p((. Supported by the IKEv1 pluto daemon only. Implemented by calling the [[IpsecWhack|ipsec whack]] --scdecrypt command.