chiark / gitweb /
server/tests.at: Add a retry loop in `COMMS_EPING'.
[tripe] / svc / connect.8.in
CommitLineData
a62f8e8a
MW
1.\" -*-nroff-*-
2.\".
3.\" Manual for the connect service
4.\"
5.\" (c) 2008 Straylight/Edgeware
6.\"
7.
8.\"----- Licensing notice ---------------------------------------------------
9.\"
10.\" This file is part of Trivial IP Encryption (TrIPE).
11.\"
12.\" TrIPE is free software; you can redistribute it and/or modify
13.\" it under the terms of the GNU General Public License as published by
14.\" the Free Software Foundation; either version 2 of the License, or
15.\" (at your option) any later version.
16.\"
17.\" TrIPE is distributed in the hope that it will be useful,
18.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
19.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20.\" GNU General Public License for more details.
21.\"
22.\" You should have received a copy of the GNU General Public License
23.\" along with TrIPE; if not, write to the Free Software Foundation,
24.\" Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25.
26.\"--------------------------------------------------------------------------
27.so ../defs.man.in \"@@@PRE@@@
28.
29.\"--------------------------------------------------------------------------
30.TH connect 8 "8 January 2007" "Straylight/Edgeware" "TrIPE: Trivial IP Encryption"
31.
32.\"--------------------------------------------------------------------------
33.SH "NAME"
34.
35connect \- tripe service to make connections to peers
36.
37.\"--------------------------------------------------------------------------
38.SH "SYNOPSIS"
39.
40.B connect
41.RB [ \-a
42.IR socket ]
43.RB [ \-d
44.IR dir ]
45.RB [ \-p
46.IR file ]
47.br
48\& \c
49.RB [ \-\-daemon ]
50.RB [ \-\-debug ]
51.RB [ \-\-startup ]
52.
53.\"--------------------------------------------------------------------------
54.SH "DESCRIPTION"
55.
56The
57.B connect
58service registers new peers with the
59.BR tripe (8)
60server.
61.PP
62A peer may participate
63.I actively
64or
65.I passively
66in a connection. A peer participating actively (an
67.IR "active peer" )
68must already know its peer's connection details \(en its server's IP
69address and port. Active connection is suitable when the peer is a
70well-known server with stable details.
71.PP
72A server participating passively (a
73.IR "passive peer" )
74waits to be contacted by its peer, and discovers the peer's IP address
75and port as a result of a simple protocol described below. Passive
76connection is suitable when the peer's IP address or port can vary over
77time \(en e.g., if its IP address is assigned dynamically by DHCP or
78PPP, or if it is hidden behind a NAT firewall.
79.PP
80If both peers are active, we say that they establish an
81.IR "static connection" ;
82if one is passive, we say that they establish a
83.IR "dynamic connection" .
84At least one of the peers must be active; it is not possible to
85establish a connection if both peers are passive.
86.SS "Command line"
87In addition to the standard options described in
88.BR tripe-service (7),
89the following command-line options are recognized.
90.TP
91.BI "\-p, \-\-peerdb=" file
92Use
93.I file
94as the (CDB format) peer database. In the absence of this option, the
95file named by the
96.B TRIPEPEERDB
97environment variable is used; if that's not set either, then the default
98default of
99.B peers.cdb
100in the current working directory is used instead.
101.SS "Dynamic connection protocol"
102Dynamic connections are used when the peer's address or port are
103unknown, e.g., when it is hidden behind a NAT firewall.
104.PP
105The protocol for passive connection works as follows.
106.hP 1.
107The active peer
108.BR ADD s
109its partner, typically using the
110.B \-cork
111option to suppress the key-exchange message which the server usually
112sends immediately, since otherwise the passive peer will warn about it.
113.hP 2.
114The active peer somehow issues the command
115.RS
116.IP
117.B SVCSUBMIT connect passive
118.I user
119.PP
120to the passive peer's server. (Here,
121.I user
122is a name identifying the active peer; see below.) This may be handled
123by the
124.BR watch (8)
125service.
126.RE
127.hP 3.
128The
129.B connect
130service on the passive peer responds with a
131.I challenge
132\(en a short Base64-encoded string. Somehow this challenge is sent back
133to the passive peer without being intercepted.
134.hP 4.
135The active peer sends a
136.BR GREET ing
137containing the challenge to its passive partner. The passive server
138announces the arrival of this message, and the originating address and
139port.
140.hP 5.
141The
142.B connect
143service running on the passive host receives the notification, matches
144it up with the
145.I user
146from the initial connection request, and
147.BR ADD s
148the appropriate peer, with the address from the
149.BR GREET ing.
150.PP
151The
152.BR watch (8)
153service is capable of performing the active-peer part of this protocol,
154sending the correct
155.B GREET
156command once the challenge has been obtained. The remaining difficulty
157is in collecting the challenge from the passive peer.
158.
159.\"--------------------------------------------------------------------------
160.SH "SERVICE COMMAND REFERENCE"
161.
162.\"* 10 Service commands
163The commands provided by the service are as follows.
164.SP
165.BI "active " peer
166Make an active connection to the named
167.IR peer .
168The service will submit the command
169.RS
170.IP
171.B ADD
172.RB [ \-cork ]
173.RB [ \-keepalive
174.IR time ]
48b84569
MW
175.RB [ \-key
176.IR tag ]
6411163d 177.RB [ \-mobile ]
a62f8e8a
MW
178.RB [ \-tunnel
179.IR driver ]
180.I address
181.PP
182Specifically:
183.hP \*o
184The option
185.B \-cork
186is provided if the peer's database record assigns the
187.B cork
188key one of the values
189.BR t ,
190.BR true ,
191.BR y ,
192.BR yes,
193or
194.BR on .
195.hP \*o
196The option
197.B \-keepalive
198.I time
199is provided if the database record assigns a value
200.I time
201to the
202.B keepalive
203key.
204.hP \*o
205The option
48b84569
MW
206.B \-key
207.I tag
208is provided if the database record assigns a value
209.I tag
210to the
211.B key
212key.
213.hP \*o
214The option
6411163d
MW
215.B \-mobile
216is provided if the peer's database record assigns the
217.B mobile
218key one of the values
219.BR t ,
220.BR true ,
221.BR y ,
222.BR yes,
223or
224.BR on .
225.hP \*o
226The option
a62f8e8a
MW
227.B \-tunnel
228.I driver
229is provided if the database record assigns a value
230.I driver
231to the
232.B tunnel
233key.
234.hP \*o
235The
236.I address
237is the value assigned to the
238.B peer
239key in the database record.
240.RE
241.SP
242.BI "info " peer
243Lists the database record for the named
244.IR peer .
245For each key/value pair, a line
246.RS
247.IP
248.B INFO
249.IB key = value
250.PP
251is output. The key/value pairs are output in an arbitrary order.
252.RE
253.TP
254.B "list"
255Output a list of peers in the database. For each peer name
256.IR peer ,
257a line
258.RS
259.IP
260.B INFO
261.I peer
262.PP
263is output.
264.RE
265.SP
266.BI "passive \fR[" options "\fR]\fP " user
267If the database contains a user record mapping
268.I user
269to some
270.I peer
271then an
272.B INFO
273line is written containing a freshly chosen challenge string. If the
274server receives a
275.BR GREET ing
276message quoting this challenge within 30 seconds, the
277.B connect
278service will issue an
279.B ADD
280request for the peer, as for the
281.B active
282command, except that the origin of the
283.BR GREET ing
284packet is used as the peer's address.
285.RS
286.\"+opts
287.PP
288The following option is recognized.
289.TP
290.BI "\-timeout " time
291Wait for
292.I time
293instead of 30 seconds. The
294.I time
295is expressed as a non-negative integer followed by
296.BR d ,
297.BR h ,
298.BR m ,
299or
300.B s
301for days, hours, minutes or seconds respectively; if no suffix is given,
302seconds are assumed.
303.\"-opts
304.RE
305.
306.\"--------------------------------------------------------------------------
307.SH "ERROR MESSAGES"
308.
309.\"* 20 Error messages (FAIL codes)
310The following error codes may be reported.
311.SP
312.B "connect-timeout"
313(For
314.BR passive .)
315No
316.BR GREET ing
317was received within the timeout period (default 30 seconds).
318.SP
319.BI "malformed-peer " peer " missing-key " key
320The database record for
321.I peer
322has no value for the
323.I key
324but one was expected.
325.SP
326.BI "passive-peer " peer
327(For
328.BR active .)
329An active connection to
330.I peer
331was requested, but the database record indicates that it is passive,
332i.e., its
333.B peer
334key has the value
335.BR PASSIVE .
336.SP
337.BI "unknown-peer " peer
338The
339.I peer
340has no record in the database.
341.SP
342.BI "unknown-user " user
343(For
344.BR passive .)
345There is no record of
346.I user
347in the database.
348.
349.\"--------------------------------------------------------------------------
350.SH "WARNINGS"
351.
352.\"* 40 Warning broadcasts (WARN codes)
353All warnings issued by
354.B connect
355begin with the tokens
356.BR "USER connect" .
357.SP
358.BI "USER connect auto-add-failed " name " " error\fR...
359The attempt to add the peer
360.I name
361automatically failed: the
362.B ADD
363command reported
364.B FAIL
365.IR error ...
366.
367.\"--------------------------------------------------------------------------
368.SH "SUMMARY"
369.
370.\"= summary
371.
372.\"--------------------------------------------------------------------------
373.SH "SEE ALSO"
374.
375.BR tripe-service (7),
376.BR peers.in (5),
377.BR watch (8),
378.BR tripe (8).
379.
380.\"--------------------------------------------------------------------------
381.SH "AUTHOR"
382.
383Mark Wooding, <mdw@distorted.org.uk>
384.
385.\"----- That's all, folks --------------------------------------------------