OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / freeswan / doc / manpage.d / ipsec_whack.8.html
1 Content-type: text/html
2
3 <HTML><HEAD><TITLE>Manpage of IPSEC_PLUTO</TITLE>
4 </HEAD><BODY>
5 <H1>IPSEC_PLUTO</H1>
6 Section: Maintenance Commands (8)<BR>Updated: 28 March 1999<BR><A HREF="#index">Index</A>
7 <A HREF="http://localhost/cgi-bin/man/man2html">Return to Main Contents</A><HR>
8
9 <A NAME="lbAB">&nbsp;</A>
10 <H2>NAME</H2>
11
12 ipsec pluto - IPsec IKE keying daemon
13 <BR>
14
15 ipsec whack - control interface for IPSEC keying daemon
16 <A NAME="lbAC">&nbsp;</A>
17 <H2>SYNOPSIS</H2>
18
19
20
21 <DL COMPACT>
22 <DT>
23 <B>
24 <DD>ipsec pluto
25 [--help]
26 [--version]
27 [--optionsfrom&nbsp;</B><I>filename</I>]
28 [--nofork]
29 [--stderrlog]
30 [--noklips]
31 [--uniqueids]
32 [--ikeport&nbsp;<I>portnumber</I>]
33 [--ctlbase&nbsp;<I>path</I>]
34 [--secretsfile&nbsp;<I>secrets-file</I>]
35 [--debug-none]
36 [--debug-all]
37 [--debug-raw]
38 [--debug-crypt]
39 [--debug-parsing]
40 [--debug-emitting]
41 [--debug-control]
42 [--debug-klips]
43 [--debug-private]
44 <DT>
45 <B>
46 <DD>ipsec whack
47 [--help]
48 [--version]
49 <DT>
50
51 <DD>ipsec whack
52 --name&nbsp;</B><I>connection-name</I>
53 <BR>
54
55 [--id&nbsp;<I>id</I>] [--host&nbsp;<I>ip-address</I>]
56 [--ikeport&nbsp;<I>port-number</I>]
57 [--nexthop&nbsp;<I>ip-address</I>]
58 [--client&nbsp;<I>subnet</I>]
59 [--updown&nbsp;<I>updown</I>]
60 <BR>
61
62 --to
63 <BR>
64
65 [--id&nbsp;<I>id</I>]
66 [--host&nbsp;<I>ip-address</I>]
67 [--ikeport&nbsp;<I>port-number</I>]
68 [--nexthop&nbsp;<I>ip-address</I>]
69 [--client&nbsp;<I>subnet</I>]
70 [--updown&nbsp;<I>updown</I>]
71 <BR>
72
73 [--psk]
74 [--rsasig]
75 [--encrypt]
76 [--authenticate]
77 [--compress]
78 [--tunnel]
79 [--pfs]
80 [--ipv4]
81 [--ipv6]
82 [--tunnelipv4]
83 [--tunnelipv6]
84 [--ikelifetime&nbsp;<I>seconds</I>]
85 [--ipseclifetime&nbsp;<I>seconds</I>]
86 [--rekeymargin&nbsp;<I>seconds</I>]
87 [--rekeyfuzz&nbsp;<I>percentage</I>]
88 [--keyingtries&nbsp;<I>count</I>]
89 [--delete]
90 [--ctlbase&nbsp;<I>path</I>]
91 [--optionsfrom&nbsp;<I>filename</I>]
92 [--label&nbsp;<I>string</I>]
93 <DT>
94 <B>
95 <DD>ipsec whack
96 --keyid&nbsp;</B><I>id</I>
97 [--pubkeyrsa&nbsp;<I>key</I>]
98 [--ctlbase&nbsp;<I>path</I>]
99 [--optionsfrom&nbsp;<I>filename</I>]
100 [--label&nbsp;<I>string</I>]
101 <DT>
102 <B>
103 <DD>ipsec whack
104 --listen|--unlisten
105 [--ctlbase&nbsp;</B><I>path</I>]
106 [--optionsfrom&nbsp;<I>filename</I>]
107 [--label&nbsp;<I>string</I>]
108 <DT>
109 <B>
110 <DD>ipsec whack
111 --route|--unroute
112 --name&nbsp;</B><I>connection-name</I>
113 [--ctlbase&nbsp;<I>path</I>]
114 [--optionsfrom&nbsp;<I>filename</I>]
115 [--label&nbsp;<I>string</I>]
116 <DT>
117 <B>
118 <DD>ipsec whack
119 --initiate|--terminate
120 --name&nbsp;</B><I>connection-name</I>
121 [--asynchronous]
122 [--ctlbase&nbsp;<I>path</I>]
123 [--optionsfrom&nbsp;<I>filename</I>]
124 [--label&nbsp;<I>string</I>]
125 <DT>
126 <B>
127 <DD>ipsec whack
128 --delete
129 --name&nbsp;</B><I>connection-name</I>
130 [--ctlbase&nbsp;<I>path</I>]
131 [--optionsfrom&nbsp;<I>filename</I>]
132 [--label&nbsp;<I>string</I>]
133 <DT>
134 <B>
135 <DD>ipsec whack
136 [--name&nbsp;</B><I>connection-name</I>]
137 [--debug-none]
138 [--debug-all]
139 [--debug-raw]
140 [--debug-crypt]
141 [--debug-parsing]
142 [--debug-emitting]
143 [--debug-control]
144 [--debug-klips]
145 [--debug-private]
146 [--ctlbase&nbsp;<I>path</I>]
147 [--optionsfrom&nbsp;<I>filename</I>]
148 [--label&nbsp;<I>string</I>]
149 <DT>
150 <B>
151 <DD>ipsec whack
152 --status
153 [--ctlbase&nbsp;</B><I>path</I>]
154 [--optionsfrom&nbsp;<I>filename</I>]
155 [--label&nbsp;<I>string</I>]
156 <DT>
157 <B>
158 <DD>ipsec whack
159 --shutdown
160 [--ctlbase&nbsp;</B><I>path</I>]
161 [--optionsfrom&nbsp;<I>filename</I>]
162 [--label&nbsp;<I>string</I>]
163
164
165
166 </DL>
167 <A NAME="lbAD">&nbsp;</A>
168 <H2>DESCRIPTION</H2>
169
170 <B>pluto</B>
171
172 is an IKE (``IPsec Key Exchange'') daemon.
173 <B>whack</B>
174
175 is an auxiliary program to allow requests to be made to a running
176 <B>pluto</B>.
177
178 <P>
179
180 <B>pluto</B>
181
182 is used to automatically build shared ``security associations'' on a
183 system that has IPsec, the secure IP protocol.
184 In other words,
185 <B>pluto</B>
186
187 can eliminate much of the work of manual keying.
188 The actual
189 secure transmission of packets is the responsibility of other parts of
190 the system (see
191 <B>KLIPS</B>,
192
193 the companion implementation of IPsec).
194 <I><A HREF="ipsec_auto.8.html">ipsec_auto</A></I>(8) provides a more convenient interface to
195 <B>pluto</B> and <B>whack</B>.
196 <A NAME="lbAE">&nbsp;</A>
197 <H3>IKE's Job</H3>
198
199 <P>
200
201 A <I>Security Association</I> (<I>SA</I>) is an agreement between two network nodes on
202 how to process certain traffic between them.  This processing involves
203 encapsulation, authentication, encryption, or compression.
204 <P>
205
206 IKE can be deployed on a network node to negotiate Security
207 Associations for that node.  These IKE implementations can only
208 negotiate with other IKE implementations, so IKE must be on each node
209 that is to be an endpoint of an IKE-negotiated Security Association.
210 No other nodes need to be running IKE.
211 <P>
212
213 An IKE instance (i.e. an IKE implementation on a particular network
214 node) communicates with another IKE instance using UDP IP packets, so
215 there must be a route between the nodes in each direction.
216 <P>
217
218 The negotiation of Security Associations requires a number of choices
219 that involve tradeoffs between security, convenience, trust, and
220 efficiency.  These are policy issues and are normally specified to the
221 IKE instance by the system administrator.
222 <P>
223
224 IKE deals with two kinds of Security Associations.  The first part of
225 a negotiation between IKE instances is to build an ISAKMP SA.  An
226 ISAKMP SA is used to protect communication between the two IKEs.
227 IPsec SAs can then be built by the IKEs - these are used to carry
228 protected IP traffic between the systems.
229 <P>
230
231 The negotiation of the ISAKMP SA is known as Phase 1.  In theory,
232 Phase 1 can be accomplished by a couple of different exchange types,
233 but we only implement one called Main Mode (we don't implement
234 Aggressive Mode).
235 <P>
236
237 Any negotiation under the protection of an ISAKMP SA, including the
238 negotiation of IPsec SAs, is part of Phase 2.  The exchange type
239 that we use to negotiate an IPsec SA is called Quick Mode.
240 <P>
241
242 IKE instances must be able to authenticate each other as part of their
243 negotiation of an ISAKMP SA.  This can be done by several mechanisms
244 described in the draft standards.
245 <P>
246
247 IKE negotiation can be initiated by any instance with any other.  If
248 both can find an agreeable set of characteristics for a Security
249 Association, and both recognize each others authenticity, they can set
250 up a Security Association.  The standards do not specify what causes
251 an IKE instance to initiate a negotiation.
252 <P>
253
254 In summary, an IKE instance is prepared to automate the management of
255 Security Associations in an IPsec environment, but a number of issues
256 are considered policy and are left in the system administrator's hands.
257 <A NAME="lbAF">&nbsp;</A>
258 <H3>Pluto</H3>
259
260 <P>
261
262 <B>pluto</B> is an implementation of IKE.  It runs as a daemon on a network
263 node.  Currently, this network node must be a LINUX system running the
264 <B>KLIPS</B> implementation of IPsec.
265 <P>
266
267 <B>pluto</B> only implements a subset of IKE.  This is enough for it to
268 interoperate with other instances of <B>pluto</B>, and many other IKE
269 implementations.  We are working on implementing more of IKE.
270 <P>
271
272 The policy for acceptable characteristics for Security Associations is
273 mostly hardwired into the code of <B>pluto</B> (spdb.c).  Eventually
274 this will be moved into a security policy database with reasonable
275 expressive power and more convenience.
276 <P>
277
278 <B>pluto</B> uses shared secrets or RSA signatures to authenticate
279 peers with whom it is negotiating.  In future other techniques will be
280 supported.
281 <P>
282
283 <B>pluto</B> initiates negotiation of a Security Association when it is
284 manually prodded: the program <B>whack</B> is run to trigger this.
285 Eventually, more convenient and useful mechanisms will be implemented.
286 <P>
287
288 <B>pluto</B> implements ISAKMP SAs itself.  After it has negotiated the
289 characteristics of an IPsec SA, it directs <B>KLIPS</B> to implement it.
290 It also issues <I><A HREF="route.8.html">route</A></I>(8) commands to direct messages through <B>KLIPS</B>.
291 <P>
292
293 When <B>pluto</B> shuts down, it closes all Security Associations.
294 <A NAME="lbAG">&nbsp;</A>
295 <H3>Before Running Pluto</H3>
296
297 <P>
298
299 <B>pluto</B> runs as a daemon with userid root.  Before running it, a few
300 things must be set up.
301 <P>
302
303 <B>pluto</B> requires <B>KLIPS</B>, the FreeS/WAN implementation of IPsec.
304 All of the components of <B>KLIPS</B> and <B>pluto</B> should be installed.
305 <P>
306
307 <B>pluto</B> supports multiple public networks (that is, networks
308 that are considered insecure and thus need to have their traffic
309 encrypted or authenticated).  It discovers the
310 public interfaces to use by looking at all interfaces that are
311 configured.  It does this only when <B>whack</B> tells it to --listen,
312 so the interfaces must be configured by then.  Each interface with a name of the form
313 <B>ipsec</B>[<B>0</B>-<B>9</B>] is taken as a <B>KLIPS</B> virtual public interface.
314 Another network interface with the same IP address (there should be only
315 one) is taken as the corresponding real public
316 interface.  <I><A HREF="ifconfig.8.html">ifconfig</A></I>(8) with the <B>-a</B> flag will show
317 the name and status of each network interface.
318 <P>
319
320 <B>pluto</B> requires a database of preshared secrets and RSA private keys.
321 This is described in the
322 <I><A HREF="ipsec.secrets.5.html">ipsec.secrets</A></I>(5).
323
324 <B>pluto</B> is told of RSA public keys via <B>whack</B> commands.
325 <A NAME="lbAH">&nbsp;</A>
326 <H3>Setting up <B>KLIPS</B> for <B>pluto</B></H3>
327
328 <P>
329
330 The most basic network topology that <B>pluto</B> supports has two security
331 gateways negotiating on behalf of client subnets.  The diagram of RGB's
332 testbed is a good example (see <I>klips/doc/rgb_setup.txt</I>).
333 <P>
334
335 The file <I>INSTALL</I> in the base directory of this distribution
336 explains how to start setting up the whole system, including <B>KLIPS</B>.
337 <P>
338
339 Make sure that the security gateways have routes to each other.  This
340 is usually covered by the default route, but may require issuing
341 <I><A HREF="route.8.html">route</A></I>(8)
342
343 commands.  The route must go through a particular ethernet
344 interface (we will assume it is <I>eth0</I>, but it need not be).  The
345 interface that connects the security gateway to its client must be a
346 different one.
347 <P>
348
349 It is necessary to issue a
350 <I><A HREF="ipsec_tncfg.8.html">ipsec_tncfg</A></I>(8)
351
352 command on each gateway.  The required command is:
353 <P>
354 &nbsp;&nbsp;&nbsp;ipsec tncfg --attach&nbsp;--virtual&nbsp;ipsec0 --physical&nbsp;eth0
355 <P>
356 A command to set up the ipsec0 virtual interface will also need to be
357 run.  It will have the same parameters as the command used to set up
358 the physical interface to which it has just been connected using
359 <I><A HREF="ipsec_tncfg.8.html">ipsec_tncfg</A></I>(8).
360
361 <A NAME="lbAI">&nbsp;</A>
362 <H3>ipsec.secrets file</H3>
363
364 <P>
365
366 A <B>pluto</B> daemon and another IKE daemon (for example, another instance
367 of <B>pluto</B>) must convince each other that they are who they are supposed
368 to be before any negotiation can succeed.  This authentication is
369 accomplished by using either secrets that have been shared beforehand
370 (manually) or by using RSA signatures.  There are other techniques,
371 but they have not been implemented in <B>pluto</B>.
372 <P>
373
374 The file <I>/etc/ipsec.secrets</I> is used to keep preshared secret keys
375 and RSA private keys for
376 authentication with other IKE daemons.  For debugging, there is an
377 argument to the <B>pluto</B> command to use a different file.
378 This file is described in
379 <I><A HREF="ipsec.secrets.5.html">ipsec.secrets</A></I>(5).
380
381 <A NAME="lbAJ">&nbsp;</A>
382 <H3>Running Pluto</H3>
383
384 <P>
385
386 To fire up the daemon, just type <B>pluto</B> (be sure to be running as
387 the superuser).
388 The default IKE port number is 500, the UDP port assigned by IANA for IKE Daemons.
389 <B>pluto</B> must be run by the superuser to be able to use the UDP 500 port.
390 <P>
391
392 <B>pluto</B> attempts to create a lockfile with the name
393 <I>/var/run/pluto.pid</I>.  If the lockfile cannot be created,
394 <B>pluto</B> exits - this prevents multiple <B>pluto</B>s from
395 competing  Any ``leftover'' lockfile must be removed before
396 <B>pluto</B> will run.  <B>pluto</B> writes its pid into this file so
397 that scripts can find it.  This lock will not function properly if it
398 is on an NFS volume (but sharing locks on multiple machines doesn't
399 make sense anyway).
400 <P>
401
402 <B>pluto</B> then forks and the parent exits.  This is the conventional
403 ``daemon fork''.  It can make debugging awkward, so there is an option
404 to suppress this fork.
405 <P>
406
407 All logging, including diagnostics, is sent to
408 <I><A HREF="syslog.3.html">syslog</A></I>(3);
409
410 it decides where to put these messages (possibly in /var/log/secure).
411 Since this too can make debugging awkward, there is an option to
412 steer logging to stderr.
413 <P>
414
415 Once <B>pluto</B> is started, it waits for requests from <B>whack</B>.
416 <A NAME="lbAK">&nbsp;</A>
417 <H3>Pluto's Internal State</H3>
418
419 <P>
420
421 To understand how to use <B>pluto</B>, it is helpful to understand a little
422 about its internal state.  Furthermore, the terminology is needed to decipher
423 some of the diagnostic messages.
424 <P>
425
426 The <I>(potential) connection</I> database describes attributes of a
427 connection.  These include the IP addresses of the hosts and client
428 subnets and the security characteristics desired.  <B>pluto</B>
429 requires this information (simply called a connection) before it can
430 respond to a request to build an SA.  Each connection is given a name
431 when it is created, and all references are made using this name.
432 <P>
433
434 During the IKE exchange to build an SA, the information about the
435 negotiation is represented in a <I>state object</I>.  Each state object
436 reflects how far the negotiation has reached.  Once the negotiation is
437 complete and the SA established, the state object remains to represent
438 the SA.  When the SA is terminated, the state object is discarded.
439 Each State object is given a serial number and this is used to refer
440 to the state objects in logged messages.
441 <P>
442
443 Each state object corresponds to a connection and can be thought of
444 as an instantiation of that connection.
445 At any particular time, there may be any number of state objects
446 corresponding to a particular connection.
447 Often there is one representing an ISAKMP SA and another representing
448 an IPsec SA.
449 <P>
450
451 <B>KLIPS</B> hooks into the routing code in a LINUX kernel.
452 Traffic to be processed by an IPsec SA must be directed through
453 <B>KLIPS</B> by routing commands.  Furthermore, the processing to be
454 done is specified by <I>ipsec <A HREF="eroute.8.html">eroute</A>(8)</I> commands.
455 <B>pluto</B> takes the responsibility of managing both of these special
456 kinds of routes.
457 <P>
458
459 Each connection may be routed, and must be while it has an IPsec SA.
460 The connection specifies the characteristics of the route: the
461 interface on this machine, the ``gateway'' (the nexthop),
462 and the peer's client subnet.  Two
463 connections may not be simultaneously routed if they are for the same
464 peer's client subnet but use different interfaces or gateways
465 (<B>pluto</B>'s logic does not reflect any advanced routing capabilities).
466 <P>
467
468 Each eroute is associated with the state object for an IPsec SA
469 because it has the particular characteristics of the SA.
470 Two eroutes conflict if they specify the identical local
471 and remote clients (unlike for routes, the local clients are
472 taken into account).
473 <P>
474
475 When <B>pluto</B> needs to install a route for a connection,
476 it must make sure that no conflicting route is in use.  If another
477 connection has a conflicting route, that route will be taken down, as long
478 as there is no IPsec SA instantiating that connection.
479 If there is such an IPsec SA, the attempt to install a route will fail.
480 <P>
481
482 There is an exception.  If <B>pluto</B>, as Responder, needs to install
483 a route to a fixed client subnet for a connection, and there is
484 already a conflicting route, then the SAs using the route are deleted
485 to make room for the new SAs.  The rationale is that the new
486 connection is probably more current.  The need for this usually is a
487 product of Road Warrior connections (these are explained later; they
488 cannot be used to initiate).
489 <P>
490
491 When <B>pluto</B> needs to install an eroute for an IPsec SA (for a
492 state object), first the state object's connection must be routed (if
493 this cannot be done, the eroute and SA will not be installed).
494 If a conflicting eroute is already in place for another connection,
495 the eroute and SA will not be installed (but note that the routing
496 exception mentioned above may have already deleted potentially conflicting SAs).
497 If another IPsec
498 SA for the same connection already has an eroute, all its outgoing traffic
499 is taken over by the new eroute.  The incoming traffic will still be
500 processed.  This characteristic is exploited during rekeying.
501 <P>
502
503 All of these routing characteristics are expected change when
504 <B>KLIPS</B> is modified to use the firewall hooks in the LINUX 2.4.x
505 kernel.
506 <A NAME="lbAL">&nbsp;</A>
507 <H3>Using Whack</H3>
508
509 <P>
510
511 <B>whack</B> is used to command a running <B>pluto</B>.
512 <B>whack</B> uses a UNIX domain socket to speak to <B>pluto</B>
513 (by default, <I>/var/pluto.ctl</I>).
514 <P>
515
516 <B>whack</B> has an intricate argument syntax.
517 This syntax allows many different functions to be specified.
518 The help form shows the usage or version information.
519 The connection form gives <B>pluto</B> a description of a potential connection.
520 The public key form informs <B>pluto</B> of the RSA public key for a potential peer.
521 The delete form deletes a connection description and all SAs corresponding
522 to it.
523 The listen form tells <B>pluto</B> to start or stop listening on the public interfaces
524 for IKE requests from peers.
525 The route form tells <B>pluto</B> to set up routing for a connection;
526 the unroute form undoes this.
527 The initiate form tells <B>pluto</B> to negotiate an SA corresponding to a connection.
528 The terminate form tells <B>pluto</B> to remove all SAs corresponding to a connection,
529 including those being negotiated.
530 The status form displays the <B>pluto</B>'s internal state.
531 The debug form tells <B>pluto</B> to change the selection of debugging output
532 ``on the fly''.  The shutdown form tells
533 <B>pluto</B> to shut down, deleting all SAs.
534 <P>
535
536 Most options are specific to one of the forms, and will be described
537 with that form.  There are three options that apply to all forms.
538 <DL COMPACT>
539 <DT><B>--ctlbase</B>&nbsp;<I>path</I><DD>
540 <I>path</I>.ctl is used as the UNIX domain socket for talking
541 to <B>pluto</B>.
542 This option facilitates debugging.
543 <DT><B>--optionsfrom</B>&nbsp;<I>filename</I><DD>
544 adds the contents of the file to the argument list.
545 <DT><B>--label</B>&nbsp;<I>string</I><DD>
546 adds the string to all error messages generated by <B>whack</B>.
547 </DL>
548 <P>
549
550 The help form of <B>whack</B> is self-explanatory.
551 <DL COMPACT>
552 <DT><B>--help</B><DD>
553 display the usage message.
554 <DT><B>--version</B><DD>
555 display the version of <B>whack</B>.
556 </DL>
557 <P>
558
559 The connection form describes a potential connection to <B>pluto</B>.
560 <B>pluto</B> needs to know what connections can and should be negotiated.
561 When <B>pluto</B> is the initiator, it needs to know what to propose.
562 When <B>pluto</B> is the responder, it needs to know enough to decide whether
563 is is willing to set up the proposed connection.
564 <P>
565
566 The description of a potential connection can specify a large number
567 of details.  Each connection has a unique name.  This name will appear
568 in a updown shell command, so it should not contain punctuation
569 that would make the command ill-formed.
570 <DL COMPACT>
571 <DT><B>--name</B>&nbsp;<I>connection-name</I><DD>
572 </DL>
573 <P>
574
575 The topology of
576 circuit is symmetric, so to save space here is half a picture:
577 <P>
578 &nbsp;&nbsp;&nbsp;client_subnet&lt;--&gt;host:ikeport&lt;--&gt;nexthop&lt;---
579 <P>
580 A similar trick is used in the flags.  The same flag names are used for
581 both ends.  Those before the <B>--to</B> flag describe the left side
582 and those afterwards describe the right side.  When <B>pluto</B> attempts
583 to use the connection, it decides whether it is the left side or the right
584 side of the connection, based on the IP numbers of its interfaces.
585 <DL COMPACT>
586 <DT><B>--id</B>&nbsp;<I>id</I><DD>
587 the identity of the end.  Currently, this can be an IP address (specified
588 as dotted quad or as a Fully Qualified Domain Name, which will be resolved
589 immediately) or as a Fully Qualified Domain Name itself (prefixed by ``@''
590 to signify that it should not be resolved), or as <A HREF="mailto:user@FQDN">user@FQDN</A>.
591 <B>pluto</B> only authenticates the identity, and does not use it for
592 addressing, so, for example, an IP address need not be the one to which
593 packets are to be sent.  If the option is absent, the
594 identity defaults to the IP address specified by <B>--host</B>.
595
596 <DT><B>--host</B>&nbsp;<I>ip-address</I><DD>
597 <DT><B>--host</B>&nbsp;<B>%any</B><DD>
598 <DT><B>--host</B>&nbsp;<B>%opportunistic</B><DD>
599 the IP address of the end (generally the public interface).
600 If <B>pluto</B> is to act as a responder
601 for IKE negotiations initiated from unknown IP addresses (the
602 ``Road Warrior'' case), the
603 IP address should be specified as <B>%any</B> (currently,
604 the obsolete notation <B>0.0.0.0</B> is also accepted for this).
605 If <B>pluto</B> is to opportunistically initiate the connection,
606 use <B>%opportunistic</B>
607 <DT><B>--ikeport</B>&nbsp;<I>port-number</I><DD>
608 the UDP port that IKE listens to on that host.  The default is 500.
609 (<B>pluto</B> on this machine uses the port specified by its own command
610 line argument, so this only affects where <B>pluto</B> sends messages.)
611 <DT><B>--nexthop</B>&nbsp;<I>ip-address</I><DD>
612 where to route packets for the peer's client (presumably for the peer too,
613 but it will not be used for this).
614 When <B>pluto</B> installs an IPsec SA, it issues a route command.
615 It uses the nexthop as the gateway.
616 The default is the peer's IP address (this can be explicitly written as
617 <B>%direct</B>; the obsolete notation <B>0.0.0.0</B> is accepted).
618 This option is necessary if <B>pluto</B>'s host's interface used for sending
619 packets to the peer is neither point-to-point nor directly connected to the
620 peer.
621 <DT><B>--client</B>&nbsp;<I>subnet</I><DD>
622 the subnet for which the IPsec traffic will be destined.  If not specified,
623 the host will be the client.
624 The subnet can be specified in any of the forms supported by <I><A HREF="ipsec_atosubnet.3.html">ipsec_atosubnet</A></I>(3).
625 The general form is <I>address</I>/<I>mask</I>.  The <I>address</I> can be either
626 a domain name or four decimal numbers (specifying octets) separated by dots.
627 The most convenient form of the <I>mask</I> is a decimal integer, specifying
628 the number of leading one bits in the mask.  So, for example, 10.0.0.0/8
629 would specify the class A network ``Net 10''.
630 <DT><B>--updown</B>&nbsp;<I>updown</I><DD>
631 specifies an external shell command to be run whenever <B>pluto</B>
632 brings up or down a connection.
633 The script is used to build a shell command, so it may contain positional
634 parameters, but ought not to have punctuation that would cause the
635 resulting command to be ill-formed.
636 The default is <I>ipsec _updown</I>.
637 <DT><B>--to</B><DD>
638 separates the specification of the left and right ends of the connection.
639 </DL>
640 <P>
641
642 The potential connection description also specifies characteristics of
643 rekeying and security.
644 <DL COMPACT>
645 <DT><B>--psk</B><DD>
646 Propose and allow preshared secret authentication for IKE peers.  This authentication
647 requires that each side use the same secret.  May be combined with <B>--rsasig</B>.
648 <B>pluto</B> supported for a long time.
649 <DT><B>--rsasig</B><DD>
650 Propose and allow RSA signatures for authentication of IKE peers.  This authentication
651 requires that each side have have a private key of its own and know the
652 public key of its peer.  May be combined with <B>--psk</B>.
653 </DL>
654 <P>
655
656 If neither <B>--rsasig</B> nor <B>--psk</B> is specified, the
657 initiator will default to proposing those for which it has the required
658 keying material.  The responder defaults similarly, but does not know
659 the identity of the initiator (except for its IP address), so it is
660 willing to accept RSA Sig if it is proposed (PSK cannot use the Identity
661 payload, so the responder does know if it can handle PSK).
662 <DL COMPACT>
663 <DT><B>--encrypt</B><DD>
664 All proposed or accepted IPsec SAs will include non-null ESP.
665 The actual choices of transforms are wired into <B>pluto</B>.
666 <DT><B>--authenticate</B><DD>
667 All proposed IPsec SAs will include AH.
668 All accepted IPsec SAs will include AH or ESP with authentication.
669 The actual choices of transforms are wired into <B>pluto</B>.
670 Note that this has nothing to do with IKE authentication.
671 <DT><B>--compress</B><DD>
672 All proposed IPsec SAs will include IPCOMP (compression).
673 This will be ignored if KLIPS is not configured with IPCOMP support.
674 <DT><B>--tunnel</B><DD>
675 the IPsec SA should use tunneling.  Implicit if the SA is for clients.
676 Must only be used with <B>--authenticate</B> or <B>--encrypt</B>.
677 <DT><B>--ipv4</B><DD>
678 The host addresses will be interpreted as IPv4 addresses.  This is the
679 default.  Note that for a connection, all host addresses must be of
680 the same Address Family (IPv4 and IPv6 use different Address Families).
681 <DT><B>--ipv6</B><DD>
682 The host addresses (including nexthop) will be interpreted as IPv6 addresses.
683 Note that for a connection, all host addresses must be of
684 the same Address Family (IPv4 and IPv6 use different Address Families).
685 <DT><B>--tunnelipv4</B><DD>
686 The client addresses will be interpreted as IPv4 addresses.  The default is
687 to match what the host will be.  This does not imply <B>--tunnel</B> so the
688 flag can be safely used when no tunnel is actually specified.
689 Note that for a connection, all tunnel addresses must be of the same
690 Address Family.
691 <DT><B>--tunnelipv6</B><DD>
692 The client addresses will be interpreted as IPv6 addresses.  The default is
693 to match what the host will be.  This does not imply <B>--tunnel</B> so the
694 flag can be safely used when no tunnel is actually specified.
695 Note that for a connection, all tunnel addresses must be of the same
696 Address Family.
697 <DT><B>--pfs</B><DD>
698 There should be Perfect Forward Secrecy - new keying material will
699 be generated for each IPsec SA rather than being derived from the ISAKMP
700 SA keying material.
701 Since the group to be used cannot be negotiated (a dubious feature of the
702 standard), <B>pluto</B> will propose the same group that was used during Phase 1.
703 We don't implement a stronger form of PFS which would require that the
704 ISAKMP SA be deleted after the IPSEC SA is negotiated.
705 </DL>
706 <P>
707
708 If none of the <B>--encrypt</B>, <B>--authenticate</B>, <B>--compress</B>,
709 or <B>--pfs</B> flags is given, the initiating the connection will
710 only build an ISAKMP SA.  For such a connection, client subnets have
711 no meaning and must not be specified.
712 <P>
713
714 More work is needed to allow for flexible policies.  Currently
715 policy is hardwired in the source file spdb.c.  The ISAKMP SAs may use
716 Oakley groups MODP1024 and MODP1536; 3DES encryption; SHA1-96
717 and MD5-96 authentication.  The IPsec SAs may use 3DES and
718 MD5-96 or SHA1-96 for ESP, or just MD5-96 or SHA1-96 for AH.
719 IPCOMP Compression is always Deflate.
720 <DL COMPACT>
721 <DT><B>--ikelifetime</B>&nbsp;<I>seconds</I><DD>
722 how long <B>pluto</B> will propose that an ISAKMP SA be allowed to live.
723 The default is 3600 (one hour) and the maximum is 28800 (8 hours).
724 This option will not affect what is accepted.
725 <B>pluto</B> will reject proposals that exceed the maximum.
726 <DT><B>--ipseclifetime</B>&nbsp;<I>seconds</I><DD>
727 how long <B>pluto</B> will propose that an IPsec SA be allowed to live.
728 The default is 28800 (eight hours) and the maximum is 86400 (one day).
729 This option will not affect what is accepted.
730 <B>pluto</B> will reject proposals that exceed the maximum.
731 <DT><B>--rekeymargin</B>&nbsp;<I>seconds</I><DD>
732 how long before an SA's expiration should <B>pluto</B> try to negotiate
733 a replacement SA.  This will only happen if <B>pluto</B> was the initiator.
734 The default is 540 (nine minutes).
735 <DT><B>--rekeyfuzz</B>&nbsp;<I>percentage</I><DD>
736 maximum size of random component to add to rekeymargin, expressed as
737 a percentage of rekeymargin.  <B>pluto</B> will select a delay uniformly
738 distributed within this range.  By default, the percentage will be 100.
739 If greater determinism is desired, specify 0.  It may be appropriate
740 for the percentage to be much larger than 100.
741 <DT><B>--keyingtries</B>&nbsp;<I>count</I><DD>
742 how many times <B>pluto</B> should try to negotiate an SA,
743 either for the first time or for rekeying.
744 A value of 0 is interpreted as a very large number: never give up.
745 The default is three.
746 <DT><B>--delete</B><DD>
747 when used in the connection form, it causes any previous connection
748 with this name to be deleted before this one is added.  Unlike a
749 normal delete, no diagnostic is produced if there was no previous
750 connection to delete.  Any routing in place for the connection is undone.
751 </DL>
752 <P>
753
754 The delete form deletes a named connection description and any
755 SAs established or negotiations initiated using this connection.
756 Any routing in place for the connection is undone.
757 <DL COMPACT>
758 <DT><B>--delete</B><DD>
759 <DT><B>--name</B>&nbsp;<I>connection-name</I><DD>
760 </DL>
761 <P>
762
763 The route form of the <B>whack</B> command tells <B>pluto</B> to set up
764 routing for a connection.
765 Although like a traditional route, it uses an ipsec device as a
766 virtual interface.
767 Once routing is set up, no packets will be
768 sent ``in the clear'' to the peer's client specified in the connection.
769 A TRAP shunt eroute will be installed; if outbound traffic is caught,
770 Pluto will initiate the connection.
771 An explicit <B>whack</B> route is not always needed: if it hasn't been
772 done when an IPsec SA is being installed, one will be automatically attempted.
773 <P>
774
775 When a routing is attempted for a connection, there must not already
776 be a routing for a different connection with the same subnet but different
777 interface or destination, or if
778 there is, it must not be being used by an IPsec SA.  Otherwise the
779 attempt will fail.
780 <DL COMPACT>
781 <DT><B>--route</B><DD>
782 <DT><B>--name</B>&nbsp;<I>connection-name</I><DD>
783 </DL>
784 <P>
785
786 The unroute form of the <B>whack</B> command tells <B>pluto</B> to undo
787 a routing.  <B>pluto</B> will refuse if an IPsec SA is using the connection.
788 If another connection is sharing the same routing, it will be left in place.
789 Without a routing, packets will be sent without encryption or authentication.
790 <DL COMPACT>
791 <DT><B>--unroute</B><DD>
792 <DT><B>--name</B>&nbsp;<I>connection-name</I><DD>
793 </DL>
794 <P>
795
796 The initiate form tells <B>pluto</B> to initiate a negotiation with another
797 <B>pluto</B> (or other IKE daemon) according to the named connection.
798 Initiation requires a route that <B>--route</B> would provide;
799 if none is in place at the time an IPsec SA is being installed,
800 <B>pluto</B> attempts to set one up.
801 <DL COMPACT>
802 <DT><B>--initiate</B><DD>
803 <DT><B>--name</B>&nbsp;<I>connection-name</I><DD>
804 <DT><B>--asynchronous<DD>
805 </DL>
806 <P>
807
808 The initiate form of the whack</B> command will relay back from
809 <B>pluto</B> status information via the UNIX domain socket (unless
810 --asynchronous is specified).  The status information is meant to
811 look a bit like that from <B>FTP</B>.  Currently <B>whack</B> simply
812 copies this to stderr.  When the request is finished (eg. the SAs are
813 established or <B>pluto</B> gives up), <B>pluto</B> closes the channel,
814 causing <B>whack</B> to terminate.
815 <P>
816
817 The terminate form tells <B>pluto</B> to delete any SAs that use the specified
818 connection and to stop any negotiations in process.
819 It does not prevent new negotiations from starting (the delete form
820 has this effect).
821 <DL COMPACT>
822 <DT><B>--terminate</B><DD>
823 <DT><B>--name</B>&nbsp;<I>connection-name</I><DD>
824 </DL>
825 <P>
826
827 The public key for informs <B>pluto</B> of the RSA public key for a potential peer.
828 Private keys must be kept secret, so they are kept in
829 <I><A HREF="ipsec.secrets.5.html">ipsec.secrets</A></I>(5).
830
831 <DL COMPACT>
832 <DT><B>--keyid&nbsp;</B><I>id</I><DD>
833 specififies the identity of the peer for which a public key should be used.
834 Its form is identical to the identity in the connection.
835 If no public key is specified, <B>pluto</B> attempts to find a KEY record
836 from DNS for the id (if a FQDN) or through reverse lookup (if an IP address).
837 Note that there several interesting ways in which this is not secure.
838 <DT><B>--pubkeyrsa&nbsp;</B><I>key</I><DD>
839 specifies the value of the RSA public key.  It is a sequence of bytes
840 as described in RFC 2537 ``RSA/MD5 KEYs and SIGs in the Domain Name System (DNS)''.
841 It is denoted in a way suitable for <I><A HREF="ipsec_atodata.3.html">ipsec_atodata</A></I>(3).
842 For example, a base 64 numeral starts with 0s.
843 </DL>
844 <P>
845
846 The listen form tells <B>pluto</B> to start listening for IKE requests
847 on its public interfaces.  To avoid race conditions, it is normal to
848 load the appropriate connections into <B>pluto</B> before allowing it
849 to listen.  If <B>pluto</B> isn't listening, it is pointless to
850 initiate negotiations, so it will refuse requests to do so.  Whenever
851 the listen form is used, <B>pluto</B> looks for public interfaces and
852 will notice when new ones have been added and when old ones have been
853 removed.  This is also the trigger for <B>pluto</B> to read the
854 <I>ipsec.secrets</I> file.  So listen may useful more than once.
855 <DL COMPACT>
856 <DT><B>--listen</B><DD>
857 start listening for IKE traffic on public interfaces.
858 <DT><B>--unlisten</B><DD>
859 stop listening for IKE traffic on public interfaces.
860 </DL>
861 <P>
862
863 The status form will display information about the internal state of
864 <B>pluto</B>: information about each potential connection and about
865 each state object.
866 <DL COMPACT>
867 <DT><B>--status</B><DD>
868 </DL>
869 <P>
870
871 The shutdown form is the proper way to shut down <B>pluto</B>.
872 It will tear down the SAs on this machine that <B>pluto</B> has negotiated.
873 It does not inform its peers, so the SAs on their machines remain.
874 <DL COMPACT>
875 <DT><B>--shutdown</B><DD>
876 </DL>
877 <A NAME="lbAM">&nbsp;</A>
878 <H3>Examples</H3>
879
880 <P>
881
882 It would be normal to start <B>pluto</B> in one of the system initialization
883 scripts.  It needs to be run by the superuser.  Generally, no arguments are needed.
884 To run in manually, the superuser can simply type
885 <P>
886 &nbsp;&nbsp;&nbsp;ipsec pluto
887 <P>
888 The command will immediately return, but a <B>pluto</B> process will be left
889 running, waiting for requests from <B>whack</B> or a peer.
890 <P>
891
892 Using <B>whack</B>, several potential connections would be described:
893 <DL COMPACT>
894 <DT>
895
896 &nbsp;&nbsp;&nbsp;ipsec whack --name&nbsp;silly
897 --host&nbsp;127.0.0.1 --to --host&nbsp;127.0.0.2
898 --ikelifetime&nbsp;900 --ipseclifetime&nbsp;800 --keyingtries&nbsp;3
899
900 </DL>
901 <P>
902
903 <DD>Since this silly connection description specifies neither encryption,
904 authentication, nor tunneling, it could only be used to establish
905 an ISAKMP SA.
906 <DL COMPACT>
907 <DT>
908
909 &nbsp;&nbsp;&nbsp;ipsec whack --name&nbsp;secret --host&nbsp;10.0.0.1 --client&nbsp;10.0.1.0/24
910 --to --host&nbsp;10.0.0.2 --client&nbsp;10.0.2.0/24
911 --encrypt
912
913 </DL>
914 <P>
915
916 <DD>This is something that must be done on both sides.  If the other
917 side is <B>pluto</B>, the same <B>whack</B> command could be used on it
918 (the command syntax is designed to not distinguish which end is ours).
919 <P>
920
921 Now that the connections are specified, <B>pluto</B> is ready to handle
922 requests and replies via the public interfaces.  We must tell it to discover
923 those interfaces and start accepting messages from peers:
924 <P>
925 &nbsp;&nbsp;&nbsp;ipsec whack --listen
926 <P>
927
928 If we don't immediately wish to bring up a secure connection between
929 the two clients, we might wish to prevent insecure traffic.
930 The routing form asks <B>pluto</B> to cause the packets sent from
931 our client to the peer's client to be routed through the ipsec0
932 device; if there is no SA, they will be discarded:
933 <P>
934 &nbsp;&nbsp;&nbsp;ipsec whack --route secret
935 <P>
936
937 Finally, we are ready to get <B>pluto</B> to initiate negotiation
938 for an IPsec SA (and implicitly, an ISAKMP SA):
939 <P>
940 &nbsp;&nbsp;&nbsp;ipsec whack --initiate&nbsp;--name&nbsp;secret
941 <P>
942 A small log of interesting events will appear on standard output
943 (other logging is sent to syslog).
944 <P>
945
946 <B>whack</B> can also be used to terminate <B>pluto</B> cleanly, tearing down
947 all SAs that it has negotiated.
948 <P>
949 &nbsp;&nbsp;&nbsp;ipsec whack --shutdown
950 <P>
951 At this time, the tearing down is all local:
952 no notification is given to the peers.
953 <A NAME="lbAN">&nbsp;</A>
954 <H3>The updown command</H3>
955
956 <P>
957
958 Whenever <B>pluto</B> brings a connection up or down, it invokes
959 the updown command.  This command is specified using the <B>--updown</B>
960 option.  This allows for customized control over routing and firewall manipulation.
961 <P>
962
963 The updown is invoked for five different operations.  Each of
964 these operations can be for our client subnet or for our host itself.
965 <DL COMPACT>
966 <DT><B>prepare-host</B> or <B>prepare-client</B><DD>
967 is run before bringing up a new connection if no other connection
968 with the same clients is up.  Generally, this is useful for deleting a
969 route that might have been set up before <B>pluto</B> was run or
970 perhaps by some agent not known to <B>pluto</B>.
971 <DT><B>route-host</B> or <B>route-client</B><DD>
972 is run when bringing up a connection for a new peer client subnet
973 (even if <B>prepare-host</B> or <B>prepare-client</B> was run).  The
974 command should install a suitable route.  Routing decisions are based
975 only on the destination (peer's client) subnet address, unlike eroutes
976 which discriminate based on source too.
977 <DT><B>unroute-host</B> or <B>unroute-client</B><DD>
978 is run when bringing down the last connection for a particular peer
979 client subnet.  It should undo what the <B>route-host</B> or <B>route-client</B>
980 did.
981 <DT><B>up-host</B> or <B>up-client</B><DD>
982 is run when bringing up an eroute with a new pair of client subnets
983 (technically: when an eroute is being added (not replaced)).
984 This command should install firewall rules as appropriate.
985 It is generally a good idea to allow IKE messages (UDP port 500)
986 travel between the hosts.
987 <DT><B>down-host</B> or <B>down-client</B><DD>
988 is run when bringing down the eroute for a pair of client subnets.
989 This command should delete firewall rules as appropriate.  Note that
990 there may remain some inbound IPsec SAs with these client subnets.
991 </DL>
992 <P>
993
994 The script is passed a large number of environment variables to specify
995 what needs to be done.
996 <DL COMPACT>
997 <DT><B>PLUTO_VERSION</B><DD>
998 indicates what version of this interface is being used.  This document
999 describes version 1.1.  This is upwardly compatible with version 1.0.
1000 <DT><B>PLUTO_VERB</B><DD>
1001 specifies the name of the operation to be performed
1002 (<B>prepare-host</B>,r <B>prepare-client</B>,
1003 <B>up-host</B>, <B>up-client</B>,
1004 <B>down-host</B>, or <B>down-client</B>).  If the address family for
1005 security gateway to security gateway communications is IPv6, then
1006 a suffix of -v6 is added to the verb.
1007 <DT><B>PLUTO_CONNECTION</B><DD>
1008 is the name of the connection for which we are routing.
1009 <DT><B>PLUTO_NEXT_HOP</B><DD>
1010 is the next hop to which packets bound for the peer must be sent.
1011 <DT><B>PLUTO_INTERFACE</B><DD>
1012 is the name of the ipsec interface to be used.
1013 <DT><B>PLUTO_ME</B><DD>
1014 is the IP address of our host.
1015 <DT><B>PLUTO_MY_CLIENT</B><DD>
1016 is the IP address / count of our client subnet.
1017 If the client is just the host, this will be the host's own IP address / max
1018 (where max is 32 for IPv4 and 128 for IPv6).
1019 <DT><B>PLUTO_MY_CLIENT_NET</B><DD>
1020 is the IP address of our client net.
1021 If the client is just the host, this will be the host's own IP address.
1022 <DT><B>PLUTO_MY_CLIENT_MASK</B><DD>
1023 is the mask for our client net.
1024 If the client is just the host, this will be 255.255.255.255.
1025 <DT><B>PLUTO_PEER</B><DD>
1026 is the IP address of our peer.
1027 <DT><B>PLUTO_PEER_CLIENT</B><DD>
1028 is the IP address / count of the peer's client subnet.
1029 If the client is just the peer, this will be the peer's own IP address / max
1030 (where max is 32 for IPv4 and 128 for IPv6).
1031 <DT><B>PLUTO_PEER_CLIENT_NET</B><DD>
1032 is the IP address of the peer's client net.
1033 If the client is just the peer, this will be the peer's own IP address.
1034 <DT><B>PLUTO_PEER_CLIENT_MASK</B><DD>
1035 is the mask for the peer's client net.
1036 If the client is just the peer, this will be 255.255.255.255.
1037 </DL>
1038 <P>
1039
1040 All output sent by the script to stderr or stdout is logged.  The
1041 script should return an exit status of 0 if and only if it succeeds.
1042 <A NAME="lbAO">&nbsp;</A>
1043 <H3>Rekeying</H3>
1044
1045 <P>
1046
1047 When an SA that was initiated by <B>pluto</B> has only a bit of
1048 lifetime left,
1049 <B>pluto</B> will initiate the creation of a new SA.  This applies to
1050 ISAKMP and IPsec SAs.
1051 The rekeying will be initiated when the SA's remaining lifetime is
1052 less than the rekeymargin plus a random percentage, between 0 and
1053 rekeyfuzz, of the rekeymargin.
1054 <P>
1055
1056 Similarly, when an SA that was initiated by the peer has only a bit of
1057 lifetime left, <B>pluto</B> will try to initiate the creation of a
1058 replacement.
1059 To give preference to the initiator, this rekeying will only be initiated
1060 when the SA's remaining lifetime is half of rekeymargin.
1061 If rekeying is done by the responder, the roles will be reversed: the
1062 responder for the old SA will be the initiator for the replacement.
1063 The former initiator might also initiate rekeying, so there may
1064 be redundant SAs created.
1065 To avoid these complications, make sure that rekeymargin is generous.
1066 <P>
1067
1068 One risk of having the former responder initiate is that perhaps
1069 none of its proposals is acceptable to the former initiator
1070 (they have not been used in a successful negotiation).
1071 To reduce the chances of this happening, and to prevent loss of security,
1072 the policy settings are taken from the old SA (this is the case even if
1073 the former initiator is initiating).
1074 These may be stricter than those of the connection.
1075 <P>
1076
1077 <B>pluto</B> will not rekey an SA if that SA is not the most recent of its
1078 type (IPsec or ISAKMP) for its potential connection.
1079 This avoids creating redundant SAs.
1080 <P>
1081
1082 The random component in the rekeying time (rekeyfuzz) is intended to
1083 make certain pathological patterns of rekeying unstable.  If both
1084 sides decide to rekey at the same time, twice as many SAs as necessary
1085 are created.  This could become a stable pattern without the
1086 randomness.
1087 <P>
1088
1089 Another more important case occurs when a security gateway has SAs
1090 with many other security gateways.  Each of these connections might
1091 need to be rekeyed at the same time.  This would cause a high peek
1092 requirement for resources (network bandwidth, CPU time, entropy for
1093 random numbers).  The rekeyfuzz can be used to stagger the rekeying
1094 times.
1095 <P>
1096
1097 Once a new set of SAs has been negotiated, <B>pluto</B> will never send
1098 traffic on a superseded one.  Traffic will be accepted on an old SA
1099 until it expires.
1100 <A NAME="lbAP">&nbsp;</A>
1101 <H3>Selecting a Connection When Responding: Road Warrior Support</H3>
1102
1103 <P>
1104
1105 When <B>pluto</B> receives an initial Main Mode message, it needs to
1106 decide which connection this message is for.  It picks based solely on
1107 the source and destination IP addresses of the message.  There might
1108 be several connections with suitable IP addresses, in which case one
1109 of them is arbitrarily chosen.  (The ISAKMP SA proposal contained in
1110 the message could be taken into account, but it is not.)
1111 <P>
1112
1113 The ISAKMP SA is negotiated before the parties pass further
1114 identifying information, so all ISAKMP SA characteristics specified in
1115 the connection description should be the same for every connection
1116 with the same two host IP addresses.  At the moment, the only
1117 characteristic that might differ is authentication method.
1118 <P>
1119
1120 Up to this point,
1121 all configuring has presumed that the IP addresses
1122 are known to all parties ahead of time.  This will not work
1123 when either end is mobile (or assigned a dynamic IP address for other
1124 reasons).  We call this situation ``Road Warrior''.  It is fairly tricky
1125 and has some important limitations, most of which are features of
1126 the IKE protocol.
1127 <P>
1128
1129 Only the initiator may be mobile:
1130 the initiator may have an IP number unknown to the responder.  When
1131 the responder doesn't recognize the IP address on the first Main Mode
1132 packet, it looks for a connection with itself as one end and <B>%any</B>
1133 as the other.
1134 If it cannot find one, it refuses to negotiate.  If it
1135 does find one, it creates a temporary connection that is a duplicate
1136 except with the <B>%any</B> replaced by the source IP address from the
1137 packet; if there was no identity specified for the peer, the new IP
1138 address will be used.
1139 <P>
1140
1141 When <B>pluto</B> is using one of these temporary connections and
1142 needs to find the preshared secret or RSA private key in <I>ipsec.secrets</I>,
1143 and and the connection specified no identity for the peer, <B>%any</B>
1144 is used as its identity.  After all, the real IP address was apparently
1145 unknown to the configuration, so it is unreasonable to require that
1146 it be used in this table.
1147 <P>
1148
1149 Part way into the Phase 1 (Main Mode) negotiation using one of these
1150 temporary connection descriptions, <B>pluto</B> will be receive an
1151 Identity Payload.  At this point, <B>pluto</B> checks for a more
1152 appropriate connection, one with an identity for the peer that matches
1153 the payload but which would use the same keys so-far used for
1154 authentication.  If it finds one, it will switch to using this better
1155 connection (or a temporary derived from this, if it has <B>%any</B>
1156 for the peer's IP address).  It may even turn out that no connection
1157 matches the newly discovered identity, including the current connection;
1158 if so, <B>pluto</B> terminates negotiation.
1159 <P>
1160
1161 Unfortunately, if preshared secret authentication is being used, the
1162 Identity Payload is encrypted using this secret, so the secret must be
1163 selected by the responder without knowing this payload.  This
1164 limits there to being at most one preshared secret for all Road Warrior
1165 systems connecting to a host.  RSA Signature authentications does not
1166 require that the responder know how to select the initiator's public key
1167 until after the initiator's Identity Payload is decoded (using the
1168 responder's private key, so that must be preselected).
1169 <P>
1170
1171 When <B>pluto</B> is responding to a Quick Mode negotiation via one of these
1172 temporary connection descriptions, it may well find that the subnets
1173 specified by the initiator don't match those in the temporary
1174 connection description.  If so, it will look for a connection with
1175 matching subnets, its own host address, a peer address of <B>%any</B>
1176 and matching identities.
1177 If it finds one, a new temporary connection is derived from this one
1178 and used for the Quick Mode negotiation of IPsec SAs.  If it does not
1179 find one, <B>pluto</B> terminates negotiation.
1180 <P>
1181
1182 Be sure to specify an appropriate nexthop for the responder
1183 to send a message to the initiator: <B>pluto</B> has no way of guessing
1184 it (if forwarding isn't required, use an explicit <B>%direct</B> as the nexthop
1185 and the IP address of the initiator will be filled in; the obsolete
1186 notation <B>0.0.0.0</B> is still accepted).
1187 <P>
1188
1189 <B>pluto</B> has no special provision for the initiator side.  The current
1190 (possibly dynamic) IP address and nexthop must be used in defining
1191 connections.  These must be
1192 properly configured each time the initiator's IP address changes.
1193 <B>pluto</B> has no mechanism to do this automatically.
1194 <P>
1195
1196 Although we call this Road Warrior Support, it could also be used to
1197 support encrypted connections with anonymous initiators.  The
1198 responder's organization could announce the preshared secret that would be used
1199 with unrecognized initiators and let anyone connect.  Of course the initiator's
1200 identity would not be authenticated.
1201 <P>
1202
1203 If any Road Warrior connections are supported, <B>pluto</B> cannot
1204 reject an exchange initiated by an unknown host until it has
1205 determined that the secret is not shared or the signature is invalid.
1206 This must await the
1207 third Main Mode message from the initiator.  If no Road Warrior
1208 connection is supported, the first message from an unknown source
1209 would be rejected.  This has implications for ease of debugging
1210 configurations and for denial of service attacks.
1211 <P>
1212
1213 Although a Road Warrior connection must be initiated by the mobile
1214 side, the other side can and will rekey using the temporary connection
1215 it has created.  If the Road Warrior wishes to be able to disconnect,
1216 it is probably wise to set <B>--keyingtries</B> to 1 in the
1217 connection on the non-mobile side to prevent it trying to rekey the
1218 connection.  Unfortunately, there is no mechanism to unroute the
1219 connection automatically.
1220 <A NAME="lbAQ">&nbsp;</A>
1221 <H3>Debugging</H3>
1222
1223 <P>
1224
1225 <B>pluto</B> accepts several optional arguments, useful mostly for debugging.
1226 <DL COMPACT>
1227 <DT><B>--ikeport</B> <I>port-number</I><DD>
1228 changes the UDP port that <B>pluto</B> will use
1229 (default, specified by IANA: 500)
1230 <DT><B>--ctlbase</B> <I>path</I><DD>
1231 basename for control files.
1232 <I>path</I>.ctl is the socket through which <B>whack</B> communicates with
1233 <B>pluto</B>.
1234 <I>path</I>.pid is the lockfile to prevent multiple pluto instances.
1235 The default is <I>/var/run/pluto</I>).
1236 <DT><B>--secretsfile</B> <I>file</I><DD>
1237 specifies the file for authentication secrets
1238 (default: <I>/etc/ipsec.secrets</I>).
1239 This name is subject to ``globbing'' as in <I><A HREF="sh.1.html">sh</A></I>(1),
1240 so every file with a matching name is processed.
1241 Quoting is generally needed to prevent the shell from doing the globbing.
1242 <DT><B>--nofork</B><DD>
1243 disable ``daemon fork'' (default is to fork).  In addition, after the
1244 lock file and control socket are created, print the line ``Pluto
1245 initialized'' to standard out.
1246 <DT><B>--noklips</B><DD>
1247 don't actually implement negotiated IPsec SAs
1248 <DT><B>--uniqueids</B><DD>
1249 if this option has been selected, whenever a new ISAKMP SA is
1250 established, any connection with the same Peer ID but a different
1251 Peer IP address is unoriented (causing all its SAs to be deleted).
1252 This helps clean up dangling SAs when a connection is lost and
1253 then regained at another IP address.
1254 <DT><B>--stderrlog</B><DD>
1255 log goes to standard out {default is to use <I><A HREF="syslogd.8.html">syslogd</A></I>(8))
1256 </DL>
1257 <P>
1258
1259 For example
1260 <DL COMPACT>
1261 <DT>pluto --secretsfile&nbsp;ipsec.secrets --ctlbase&nbsp;pluto.base --ikeport&nbsp;8500 --nofork --noklips --stderrlog<DD>
1262 </DL>
1263 <P>
1264
1265 lets one test <B>pluto</B> without using the superuser account.
1266 <P>
1267
1268 <B>pluto</B> is willing to produce a prodigious amount of debugging
1269 information.  To do so, it must be compiled with -DDEBUG.  There are
1270 several classes of debugging output, and <B>pluto</B> may be directed to
1271 produce a selection of them.  All lines of
1272 debugging output are prefixed with ``|&nbsp;'' to distinguish them from error
1273 messages.
1274 <P>
1275
1276 When <B>pluto</B> is invoked, it may be given arguments to specify
1277 which classes to output.  The current options are:
1278 <DL COMPACT>
1279 <DT><B>--debug-raw</B><DD>
1280 show the raw bytes of messages
1281 <DT><B>--debug-crypt</B><DD>
1282 show the encryption and decryption of messages
1283 <DT><B>--debug-parsing</B><DD>
1284 show the structure of input messages
1285 <DT><B>--debug-emitting</B><DD>
1286 show the structure of output messages
1287 <DT><B>--debug-control</B><DD>
1288 show <B>pluto</B>'s decision making
1289 <DT><B>--debug-klips</B><DD>
1290 show <B>pluto</B>'s interaction with <B>KLIPS</B>
1291 <DT><B>--debug-all</B><DD>
1292 all of the above
1293 <DT><B>--debug-private</B><DD>
1294 allow debugging output with private keys.
1295 <DT><B>--debug-none</B><DD>
1296 none of the above
1297 </DL>
1298 <P>
1299
1300 The debug form of the
1301 <B>whack</B> command will change the selection in a running
1302 <B>pluto</B>.
1303 If a connection name is specified, the flags are added whenever
1304 <B>pluto</B> has identified that it is dealing with that connection.
1305 Unfortunately, this is often part way into the operation being observed.
1306 <P>
1307
1308 For example, to start a <B>pluto</B> with a display of the structure of input
1309 and output:
1310 <DL COMPACT>
1311 <DT><DD>
1312 pluto --debug-emitting --debug-parsing
1313 </DL>
1314 <P>
1315
1316 To later change this <B>pluto</B> to only display raw bytes:
1317 <DL COMPACT>
1318 <DT><DD>
1319 whack --debug-raw
1320 </DL>
1321 <P>
1322
1323 For testing, SSH's IKE test page is quite useful:
1324 <DL COMPACT>
1325 <DT><DD>
1326 <I><A HREF="http://isakmp-test.ssh.fi/">http://isakmp-test.ssh.fi/</A></I>
1327 </DL>
1328 <P>
1329
1330 Hint: ISAKMP SAs are often kept alive by IKEs even after the IPsec SA
1331 is established.  This allows future IPsec SA's to be negotiated
1332 directly.  If one of the IKEs is restarted, the other may try to use
1333 the ISAKMP SA but the new IKE won't know about it.  This can lead to
1334 much confusion.  <B>pluto</B> is not yet smart enough to get out of such a
1335 mess.
1336 <A NAME="lbAR">&nbsp;</A>
1337 <H3>Pluto's Behaviour When Things Go Wrong</H3>
1338
1339 <P>
1340
1341 When <B>pluto</B> doesn't understand or accept a message, it just
1342 ignores the message.  It is not yet capable of communicating the
1343 problem to the other IKE daemon (in the future it will use
1344 Notifications to accomplish this in many cases).  It does log a diagnostic.
1345 <P>
1346
1347 When <B>pluto</B> gets no response from a message, it resends the same
1348 message (a message will be sent at most three times).  This is
1349 appropriate: UDP is unreliable.
1350 <P>
1351
1352 When pluto gets a message that it has already seen, there are many
1353 cases when it notices and discards it.  This too is appropriate for UDP.
1354 <P>
1355
1356 Combine these three rules, and you can explain many apparently
1357 mysterious behaviours.  In a <B>pluto</B> log, retrying isn't usually the
1358 interesting event.  The critical thing is either earlier (<B>pluto</B>
1359 got a message which it didn't like and so ignored, so it was still
1360 awaiting an acceptable message and got impatient) or on the other
1361 system (<B>pluto</B> didn't send a reply because it wasn't happy with
1362 the previous message).
1363 <A NAME="lbAS">&nbsp;</A>
1364 <H3>Notes</H3>
1365
1366 <P>
1367
1368 If <B>pluto</B> is compiled without -DKLIPS, it negotiates Security
1369 Associations but never ask the kernel to put them in place and never
1370 makes routing changes.  This allows <B>pluto</B> to be tested on systems
1371 without <B>KLIPS</B>, but makes it rather useless.
1372 <P>
1373
1374 Each IPsec SA is assigned an SPI, a 32-bit number used to refer to the SA.
1375 The IKE protocol lets the destination of the SA choose the SPI.
1376 The range 0 to 0xFF is reserved for IANA.
1377 <B>Pluto</B> also avoids choosing an SPI in the range 0x100 to 0xFFF,
1378 leaving these SPIs free for manual keying.
1379 Remember that the peer, if not <B>pluto</B>, may well chose
1380 SPIs in this range.
1381 <A NAME="lbAT">&nbsp;</A>
1382 <H3>Policies</H3>
1383
1384 <P>
1385
1386 This catalogue of policies may be of use when trying to configure
1387 <B>Pluto</B> and another IKE implementation to interoperate.
1388 <P>
1389
1390 In Phase 1, only Main Mode is supported.  We are not sure that
1391 Aggressive Mode is secure.  For one thing, it does not support
1392 identity protection.  It may allow more severe Denial Of Service
1393 attacks.
1394 <P>
1395
1396 No Informational Exchanges are supported.  These are optional and
1397 since their delivery is not assured, they must not matter.
1398 It is the case that some IKE implementations won't interoperate
1399 without Informational Exchanges, but we feel they are broken.
1400 <P>
1401
1402 No Informational Payloads are supported.  These are optional, but
1403 useful.  It is of concern that these payloads are not authenticated in
1404 Phase 1, nor in those Phase 2 messages authenticated with <A HREF="HASH.3.html">HASH</A>(3).
1405 <DL COMPACT>
1406 <DT>*<DD>
1407 Diffie Hellman Groups MODP 1024 and MODP 1536 (2 and 5)
1408 are supported.
1409 Group MODP768 (1) is not supported because it is too weak.
1410 <DT>*<DD>
1411 Host authetication can be done by RSA Signatures or Pre-Shared
1412 Secrets.
1413 <DT>*<DD>
1414 3DES CBC (Cypher Block Chaining mode) is the only encryption
1415 supported, both for ISAKMP SAs and IPSEC SAs.
1416 <DT>*<DD>
1417 MD5 and SHA1 hashing are supported for packet authentication in both
1418 kinds of SAs.
1419 <DT>*<DD>
1420 The ESP, AH, or AH plus ESP are supported.  If, and only if, AH and
1421 ESP are combined, the ESP need not have its own authentication
1422 component.  The selection is controlled by the --encrypt and
1423 --authenticate flags.
1424 <DT>*<DD>
1425 Each of these may be combined with IPCOMP Deflate compression,
1426 but only if the potential connection specifies compression and only
1427 if KLIPS is configured with IPCOMP support.
1428 <DT>*<DD>
1429 The IPSEC SAs may be tunnel or transport mode, where appropriate.
1430 The --tunnel flag controls this when <B>pluto</B> is initiating.
1431 <DT>*<DD>
1432 When responding to an ISAKMP SA proposal, the maximum acceptable
1433 lifetime is eight hours.  The default is one hour.  There is no
1434 minimum.  The --ikelifetime flag controls this when <B>pluto</B>
1435 is initiating.
1436 <DT>*<DD>
1437 When responding to an IPSEC SA proposal, the maximum acceptable
1438 lifetime is one day.  The default is eight hours.  There is no
1439 minimum.  The --ipseclifetime flag controls this when <B>pluto</B>
1440 is initiating.
1441 <DT>*<DD>
1442 PFS is acceptable, and will be proposed if the --pfs flag was
1443 specified.  The DH group proposed will be the same as negotiated for
1444 Phase 1.
1445 </DL>
1446 <A NAME="lbAU">&nbsp;</A>
1447 <H2>SIGNALS</H2>
1448
1449 <P>
1450
1451 <B>Pluto</B> responds to <B>SIGHUP</B> by issuing a suggestion that ``<B>whack</B>
1452 --listen'' might have been intended.
1453 <P>
1454
1455 <B>Pluto</B> exits when it recieves <B>SIGTERM</B>.
1456 <A NAME="lbAV">&nbsp;</A>
1457 <H2>EXIT STATUS</H2>
1458
1459 <P>
1460
1461 <B>pluto</B> normally forks a daemon process, so the exit status is
1462 normally a very preliminary result.
1463 <DL COMPACT>
1464 <DT>0<DD>
1465 means that all is OK so far.
1466 <DT>1<DD>
1467 means that something was wrong.
1468 <DT>10<DD>
1469 means that the lock file already exists.
1470 </DL>
1471 <P>
1472
1473 If <B>whack</B> detects a problem, it will return an exit status of 1.
1474 If it received progress messages from <B>pluto</B>, it returns as status
1475 the value of the numeric prefix from the last such message
1476 that was not a message sent to syslog or a comment
1477 (but the prefix for success is treated as 0).
1478 Otherwise, the exit status is 0.
1479 <A NAME="lbAW">&nbsp;</A>
1480 <H2>FILES</H2>
1481
1482 <I>/var/run/pluto.pid</I>
1483 <BR>
1484
1485 <I>/var/run/pluto.ctl</I>
1486 <BR>
1487
1488 <I>/etc/ipsec.secrets</I>
1489 <BR>
1490
1491 <I>/dev/urandom</I>
1492 <A NAME="lbAX">&nbsp;</A>
1493 <H2>SEE ALSO</H2>
1494
1495 <P>
1496
1497 The rest of the FreeS/WAN distribution, in particular <I><A HREF="ipsec.8.html">ipsec</A></I>(8).
1498 <P>
1499
1500 <I><A HREF="ipsec_auto.8.html">ipsec_auto</A></I>(8) is designed to make using <B>pluto</B> more pleasant.
1501 Use it!
1502 <P>
1503
1504 <I><A HREF="ipsec.secrets.5.html">ipsec.secrets</A></I>(5)
1505
1506 describes the format of the secrets file.
1507 <P>
1508
1509 <I><A HREF="ipsec_atoaddr.3.html">ipsec_atoaddr</A></I>(3), part of the FreeS/WAN distribution, describes the
1510 forms that IP addresses may take.
1511 <I><A HREF="ipsec_atosubnet.3.html">ipsec_atosubnet</A></I>(3), part of the FreeS/WAN distribution, describes the
1512 forms that subnet specifications.
1513 <P>
1514
1515 For more information on IPsec, the mailing list, and the relevant
1516 documents, see:
1517 <DL COMPACT>
1518 <DT><DD>
1519
1520 <I><A HREF="http://www.ietf.cnri.reston.va.us/html.charters/ipsec-charter.html">http://www.ietf.cnri.reston.va.us/html.charters/ipsec-charter.html</A></I>
1521
1522 </DL>
1523 <P>
1524
1525 At the time of writing, the most relevant IETF RFCs are:
1526 <DL COMPACT>
1527 <DT><DD>
1528 RFC2409 The Internet Key Exchange (IKE)
1529 <DT><DD>
1530 RFC2408 Internet Security Association and Key Management Protocol (ISAKMP)
1531 <DT><DD>
1532 RFC2407 The Internet IP Security Domain of Interpretation for ISAKMP
1533 </DL>
1534 <P>
1535
1536 The <A HREF="mailto:linux-ipsec@clinet.fi">linux-ipsec@clinet.fi</A> mailing list.
1537 <A NAME="lbAY">&nbsp;</A>
1538 <H2>HISTORY</H2>
1539
1540 This code is released under the GPL terms.
1541 See the accompanying file COPYING-2.0 for more details.
1542 The GPL does NOT apply to those pieces of code written by others
1543 which are included in this distribution, except as noted by the
1544 individual authors.
1545 <P>
1546
1547 This software was originally written
1548 for the FreeS/WAN project
1549 &lt;<A HREF="http://www.xs4all.nl/~freeswan/">http://www.xs4all.nl/~freeswan/</A>&gt;
1550 by Angelos D. Keromytis
1551 (<A HREF="mailto:angelos@dsl.cis.upenn.edu">angelos@dsl.cis.upenn.edu</A>), in May/June 1997, in Athens, Greece.
1552 Thanks go to John Ioannidis for his help.
1553 <P>
1554
1555 It is currently (2000)
1556 being developed and maintained by D. Hugh Redelmeier
1557 (<A HREF="mailto:hugh@mimosa.com">hugh@mimosa.com</A>), in Canada.  The regulations of Greece and Canada
1558 allow us to make the code freely redistributable.
1559 <P>
1560
1561 Kai Martius (<A HREF="mailto:admin@imib.med.tu-dresden.de">admin@imib.med.tu-dresden.de</A>) contributed the initial
1562 version of the code supporting PFS.
1563 <P>
1564
1565 Richard Guy Briggs &lt;<A HREF="mailto:rgb@conscoop.ottawa.on.ca">rgb@conscoop.ottawa.on.ca</A>&gt; and Peter Onion
1566 &lt;<A HREF="mailto:ponion@srd.bt.co.uk">ponion@srd.bt.co.uk</A>&gt; added the PFKEY2 support.
1567 <P>
1568
1569 We gratefully acknowledge that we use parts of Eric Young's <I>libdes</I>
1570 package; see <I>../libdes/COPYRIGHT</I>.
1571 <A NAME="lbAZ">&nbsp;</A>
1572 <H2>BUGS</H2>
1573
1574 <B>pluto</B>
1575
1576 is a work-in-progress.  It currently has many limitations.
1577 For example, it ignores notification messages that it receives, and
1578 it generates none.
1579 <P>
1580
1581 <B>pluto</B> does not check that the SA returned by the Responder
1582 is actually one that was proposed.  It only checks that the SA is
1583 acceptable.  The difference is not large, but can show up in attributes
1584 such as SA lifetime.
1585 <P>
1586
1587 There is no provision for unrouting a Road Warrior connection that has
1588 expired.  In fact, there is no good way for a Road Warrior to indicate
1589 that the connection should be torn down.  The expiry of SAs is the
1590 closest approximation.
1591 If, however, a Road Warrior has a client subnet with a fixed IP
1592 address, a negotiation with that subnet will cause any other
1593 connection instantiations with that same subnet to be unoriented
1594 (deleted, in effect).
1595 See also the --uniqueids option.
1596 <P>
1597
1598 When <B>pluto</B> sends a message to a peer that has disappeared,
1599 <B>pluto</B> receives incomplete information from the kernel, so it
1600 logs the unsatisfactory message ``some IKE message we sent has been
1601 rejected with ECONNREFUSED (kernel supplied no details)''.  John
1602 Denker suggests that this command is useful for tracking down the
1603 source of these problems:
1604 <BR>
1605
1606 <TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT>tcpdump -i eth0 icmp[0] != 8 and icmp[0] != 0<BR>
1607 <BR>
1608
1609 Substitute your public interface for eth0 if it is different.
1610 <P>
1611
1612 Sometimes (rarely) <B>pluto</B> hangs trying to receive an IKE message
1613 that isn't there.  While this is happening, it responds to nothing
1614 else.  We haven't yet located the cause of the problem and even
1615 suspect a kernel bug.  Sending SIGHUP to <B>pluto</B> should wake it
1616 up.  Any assistance nailing this bug would be welcome.
1617 <P>
1618
1619 The word ``authenticate'' is used for two different features.  We must
1620 authenticate each IKE peer to the other.  This is an important task of
1621 Phase 1.  Each packet must be authenticated, both in IKE and in IPsec,
1622 and the method for IPsec is negotiated as an AH SA or part of an ESP SA.
1623 Unfortunately, the protocol has no mechanism for authenticating the Phase 2
1624 identities.
1625 <P>
1626
1627 Bugs should be reported to the <A HREF="mailto:linux-ipsec@clinet.fi">linux-ipsec@clinet.fi</A> mailing list.
1628 Caution: we cannot accept
1629 actual code from US residents, or even US citizens living outside the
1630 US, because that would bring FreeS/WAN under US export law.  Some
1631 other countries cause similar problems.  In general, we would prefer
1632 that you send detailed problem reports rather than code:  we want
1633 FreeS/WAN to be unquestionably freely exportable, which means being
1634 very careful about where the code comes from, and for a small bug fix,
1635 that is often more time-consuming than just reinventing the fix
1636 ourselves.
1637 <P>
1638
1639 <HR>
1640 <A NAME="index">&nbsp;</A><H2>Index</H2>
1641 <DL>
1642 <DT><A HREF="#lbAB">NAME</A><DD>
1643 <DT><A HREF="#lbAC">SYNOPSIS</A><DD>
1644 <DT><A HREF="#lbAD">DESCRIPTION</A><DD>
1645 <DL>
1646 <DT><A HREF="#lbAE">IKE's Job</A><DD>
1647 <DT><A HREF="#lbAF">Pluto</A><DD>
1648 <DT><A HREF="#lbAG">Before Running Pluto</A><DD>
1649 <DT><A HREF="#lbAH">Setting up <B>KLIPS</B> for <B>pluto</B></A><DD>
1650 <DT><A HREF="#lbAI">ipsec.secrets file</A><DD>
1651 <DT><A HREF="#lbAJ">Running Pluto</A><DD>
1652 <DT><A HREF="#lbAK">Pluto's Internal State</A><DD>
1653 <DT><A HREF="#lbAL">Using Whack</A><DD>
1654 <DT><A HREF="#lbAM">Examples</A><DD>
1655 <DT><A HREF="#lbAN">The updown command</A><DD>
1656 <DT><A HREF="#lbAO">Rekeying</A><DD>
1657 <DT><A HREF="#lbAP">Selecting a Connection When Responding: Road Warrior Support</A><DD>
1658 <DT><A HREF="#lbAQ">Debugging</A><DD>
1659 <DT><A HREF="#lbAR">Pluto's Behaviour When Things Go Wrong</A><DD>
1660 <DT><A HREF="#lbAS">Notes</A><DD>
1661 <DT><A HREF="#lbAT">Policies</A><DD>
1662 </DL>
1663 <DT><A HREF="#lbAU">SIGNALS</A><DD>
1664 <DT><A HREF="#lbAV">EXIT STATUS</A><DD>
1665 <DT><A HREF="#lbAW">FILES</A><DD>
1666 <DT><A HREF="#lbAX">SEE ALSO</A><DD>
1667 <DT><A HREF="#lbAY">HISTORY</A><DD>
1668 <DT><A HREF="#lbAZ">BUGS</A><DD>
1669 </DL>
1670 <HR>
1671 This document was created by
1672 <A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>,
1673 using the manual pages.<BR>
1674 Time: 05:09:34 GMT, June 19, 2001
1675 </BODY>
1676 </HTML>