Imported Upstream version 0.3.3
[debian/uanytun.git] / doc / uanytun.8
1 '\" t
2 .\"     Title: uanytun
3 .\"    Author: [see the "AUTHORS" section]
4 .\" Generator: DocBook XSL Stylesheets v1.75.1 <http://docbook.sf.net/>
5 .\"      Date: 02/17/2010
6 .\"    Manual: uanytun user manual
7 .\"    Source: uanytun 0.3.3
8 .\"  Language: English
9 .\"
10 .TH "UANYTUN" "8" "02/17/2010" "uanytun 0.3.3" "uanytun user manual"
11 .\" -----------------------------------------------------------------
12 .\" * set default formatting
13 .\" -----------------------------------------------------------------
14 .\" disable hyphenation
15 .nh
16 .\" disable justification (adjust text to left margin only)
17 .ad l
18 .\" -----------------------------------------------------------------
19 .\" * MAIN CONTENT STARTS HERE *
20 .\" -----------------------------------------------------------------
21 .SH "NAME"
22 uanytun \- micro anycast tunneling daemon
23 .SH "SYNOPSIS"
24 .sp
25 .nf
26 \fBuanytun\fR
27   [ \fB\-h|\-\-help\fR ]
28   [ \fB\-D|\-\-nodaemonize\fR ]
29   [ \fB\-u|\-\-username\fR <username> ]
30   [ \fB\-g|\-\-groupname\fR <groupname> ]
31   [ \fB\-C|\-\-chroot\fR <path> ]
32   [ \fB\-P|\-\-write\-pid\fR <filename> ]
33   [ \fB\-L|\-\-log\fR <target>:<level>[,<param1>[,<param2>[\&.\&.]]] ]
34   [ \fB\-U|\-\-debug\fR ]
35   [ \fB\-i|\-\-interface\fR <ip\-address> ]
36   [ \fB\-p|\-\-port\fR <port> ]
37   [ \fB\-r|\-\-remote\-host\fR <hostname|ip> ]
38   [ \fB\-o|\-\-remote\-port\fR <port> ]
39   [ \fB\-4|\-\-ipv4\-only\fR ]
40   [ \fB\-6|\-\-ipv6\-only\fR ]
41   [ \fB\-d|\-\-dev\fR <name> ]
42   [ \fB\-t|\-\-type\fR <tun|tap> ]
43   [ \fB\-n|\-\-ifconfig\fR <local>/<prefix> ]
44   [ \fB\-x|\-\-post\-up\-script\fR <script> ]
45   [ \fB\-m|\-\-mux\fR <mux\-id> ]
46   [ \fB\-s|\-\-sender\-id\fR <sender id> ]
47   [ \fB\-w|\-\-window\-size\fR <window size> ]
48   [ \fB\-k|\-\-kd\-prf\fR <kd\-prf type> ]
49   [ \fB\-e|\-\-role\fR <role> ]
50   [ \fB\-E|\-\-passphrase\fR <pass phrase> ]
51   [ \fB\-K|\-\-key\fR <master key> ]
52   [ \fB\-A|\-\-salt\fR <master salt> ]
53   [ \fB\-c|\-\-cipher\fR <cipher type> ]
54   [ \fB\-a|\-\-auth\-algo\fR <algo type> ]
55   [ \fB\-b|\-\-auth\-tag\-length\fR <length> ]
56 .fi
57 .SH "DESCRIPTION"
58 .sp
59 \fBuAnytun\fR is a tiny implementation of the Secure Anycast Tunneling Protocol (SATP)\&. It provides a complete VPN solution similar to OpenVPN or IPsec in tunnel mode\&. The main difference is that anycast enables the setup of tunnels between an arbitrary combination of anycast, unicast and multicast hosts\&. Unlike Anytun which is a full featured implementation uAnytun has no support for multiple connections or synchronisation\&. It is a small single threaded implementation intended to act as a client on small platforms\&.
60 .SH "OPTIONS"
61 .sp
62 \fBuAnytun\fR has been designed as a peer to peer application, so there is no difference between client and server\&. The following options can be passed to the daemon:
63 .PP
64 \fB\-D, \-\-nodaemonize\fR
65 .RS 4
66 This option instructs
67 \fBuAnytun\fR
68 to run in foreground instead of becoming a daemon which is the default\&.
69 .RE
70 .PP
71 \fB\-u, \-\-username \fR\fB\fI<username>\fR\fR
72 .RS 4
73 run as this user\&. If no group is specified (\fB\-g\fR) the default group of the user is used\&. The default is to not drop privileges\&.
74 .RE
75 .PP
76 \fB\-g, \-\-groupname \fR\fB\fI<groupname>\fR\fR
77 .RS 4
78 run as this group\&. If no username is specified (\fB\-u\fR) this gets ignored\&. The default is to not drop privileges\&.
79 .RE
80 .PP
81 \fB\-C, \-\-chroot \fR\fB\fI<path>\fR\fR
82 .RS 4
83 Instruct
84 \fBuAnytun\fR
85 to run in a chroot jail\&. The default is to not run in chroot\&.
86 .RE
87 .PP
88 \fB\-P, \-\-write\-pid <filename>\fR
89 .RS 4
90 Instruct
91 \fBuAnytun\fR
92 to write it\(cqs pid to this file\&. The default is to not create a pid file\&.
93 .RE
94 .PP
95 \fB\-L, \-\-log \fR\fB\fI<target>:<level>[,<param1>[,<param2>[\&.\&.]]]\fR\fR
96 .RS 4
97 add log target to logging system\&. This can be invoked several times in order to log to different targets at the same time\&. Every target hast its own log level which is a number between 0 and 5\&. Where 0 means disabling log and 5 means debug messages are enabled\&.
98
99 The file target can be used more the once with different levels\&. If no target is provided at the command line a single target with the config
100 \fIsyslog:3,uanytun,daemon\fR
101 is added\&.
102
103 The following targets are supported:
104 .PP
105 \fIsyslog\fR
106 .RS 4
107 log to syslog daemon, parameters <level>[,<logname>[,<facility>]]
108 .RE
109 .PP
110 \fIfile\fR
111 .RS 4
112 log to file, parameters <level>[,<path>]
113 .RE
114 .PP
115 \fIstdout\fR
116 .RS 4
117 log to standard output, parameters <level>
118 .RE
119 .PP
120 \fIstderr\fR
121 .RS 4
122 log to standard error, parameters <level>
123 .RE
124 .RE
125 .PP
126 \fB\-U, \-\-debug\fR
127 .RS 4
128 This option instructs
129 \fBuAnytun\fR
130 to run in debug mode\&. It implicits
131 \fB\-D\fR
132 (don\(cqt daemonize) and adds a log target with the configuration
133 \fIstdout:5\fR
134 (logging with maximum level)\&. In future releases there might be additional output when this option is supplied\&.
135 .RE
136 .PP
137 \fB\-i, \-\-interface \fR\fB\fI<ip address>\fR\fR
138 .RS 4
139 This IP address is used as the sender address for outgoing packets\&. The default is to not use a special inteface and just bind on all interfaces\&.
140 .RE
141 .PP
142 \fB\-p, \-\-port \fR\fB\fI<port>\fR\fR
143 .RS 4
144 The local UDP port that is used to send and receive the payload data\&. The two tunnel endpoints can use different ports\&. default: 4444
145 .RE
146 .PP
147 \fB\-r, \-\-remote\-host \fR\fB\fI<hostname|ip>\fR\fR
148 .RS 4
149 This option can be used to specify the remote tunnel endpoint\&. In case of anycast tunnel endpoints, the anycast IP address has to be used\&. If you do not specify an address, it is automatically determined after receiving the first data packet\&.
150 .RE
151 .PP
152 \fB\-o, \-\-remote\-port \fR\fB\fI<port>\fR\fR
153 .RS 4
154 The UDP port used for payload data by the remote host (specified with \-p on the remote host)\&. If you do not specify a port, it is automatically determined after receiving the first data packet\&.
155 .RE
156 .PP
157 \fB\-4, \-\-ipv4\-only\fR
158 .RS 4
159 Resolv to IPv4 addresses only\&. The default is to resolv both IPv4 and IPv6 addresses\&.
160 .RE
161 .PP
162 \fB\-6, \-\-ipv6\-only\fR
163 .RS 4
164 Resolv to IPv6 addresses only\&. The default is to resolv both IPv4 and IPv6 addresses\&.
165 .RE
166 .PP
167 \fB\-d, \-\-dev \fR\fB\fI<name>\fR\fR
168 .RS 4
169 device name
170
171 By default, tapN is used for Ethernet tunnel interfaces, and tunN for IP tunnels, respectively\&. This option can be used to manually override these defaults\&.
172 .RE
173 .PP
174 \fB\-t, \-\-type \fR\fB\fI<tun|tap>\fR\fR
175 .RS 4
176 device type
177
178 Type of the tunnels to create\&. Use tap for Ethernet tunnels, tun for IP tunnels\&.
179 .RE
180 .PP
181 \fB\-n, \-\-ifconfig \fR\fB\fI<local>/<prefix>\fR\fR
182 .RS 4
183 The local IP address and prefix length\&. The remote tunnel endpoint has to use a different IP address in the same subnet\&.
184 .PP
185 \fI<local>\fR
186 .RS 4
187 the local IP address for the tun/tap device
188 .RE
189 .PP
190 \fI<prefix>\fR
191 .RS 4
192 the prefix length of the network
193 .RE
194 .RE
195 .PP
196 \fB\-x, \-\-post\-up\-script \fR\fB\fI<script>\fR\fR
197 .RS 4
198 This option instructs
199 \fBuAnytun\fR
200 to run this script after the interface is created\&. By default no script will be executed\&.
201 .RE
202 .PP
203 \fB\-m, \-\-mux \fR\fB\fI<mux\-id>\fR\fR
204 .RS 4
205 the multiplex id to use\&. default: 0
206 .RE
207 .PP
208 \fB\-s, \-\-sender\-id \fR\fB\fI<sender id>\fR\fR
209 .RS 4
210 Each anycast tunnel endpoint needs a unique sender id (1, 2, 3, \&...)\&. It is needed to distinguish the senders in case of replay attacks\&. As
211 \fBuAnytun\fR
212 does not support synchronisation it can\(cqt be used as an anycast endpoint therefore this option is quite useless but implemented for compatibility reasons\&. default: 0
213 .RE
214 .PP
215 \fB\-w, \-\-window\-size \fR\fB\fI<window size>\fR\fR
216 .RS 4
217 seqence window size
218
219 Sometimes, packets arrive out of order on the receiver side\&. This option defines the size of a list of received packets\' sequence numbers\&. If, according to this list, a received packet has been previously received or has been transmitted in the past, and is therefore not in the list anymore, this is interpreted as a replay attack and the packet is dropped\&. A value of 0 deactivates this list and, as a consequence, the replay protection employed by filtering packets according to their secuence number\&. By default the sequence window is disabled and therefore a window size of 0 is used\&.
220 .RE
221 .PP
222 \fB\-k, \-\-kd\(emprf \fR\fB\fI<kd\-prf type>\fR\fR
223 .RS 4
224 key derivation pseudo random function
225
226 The pseudo random function which is used for calculating the session keys and session salt\&.
227
228 Possible values:
229 .PP
230 \fInull\fR
231 .RS 4
232 no random function, keys and salt are set to 0\&.\&.00
233 .RE
234 .PP
235 \fIaes\-ctr\fR
236 .RS 4
237 AES in counter mode with 128 Bits, default value
238 .RE
239 .PP
240 \fIaes\-ctr\-128\fR
241 .RS 4
242 AES in counter mode with 128 Bits
243 .RE
244 .PP
245 \fIaes\-ctr\-192\fR
246 .RS 4
247 AES in counter mode with 192 Bits
248 .RE
249 .PP
250 \fIaes\-ctr\-256\fR
251 .RS 4
252 AES in counter mode with 256 Bits
253 .RE
254 .RE
255 .PP
256 \fB\-e, \-\-role \fR\fB\fI<role>\fR\fR
257 .RS 4
258 SATP uses different session keys for inbound and outbound traffic\&. The role parameter is used to determine which keys to use for outbound or inbound packets\&. On both sides of a vpn connection different roles have to be used\&. Possible values are
259 \fIleft\fR
260 and
261 \fIright\fR\&. You may also use
262 \fIalice\fR
263 or
264 \fIserver\fR
265 as a replacement for
266 \fIleft\fR
267 and
268 \fIbob\fR
269 or
270 \fIclient\fR
271 as a replacement for
272 \fIright\fR\&. By default
273 \fIleft\fR
274 is used\&.
275 .RE
276 .PP
277 \fB\-E, \-\-passphrase \fR\fB\fI<pass phrase>\fR\fR
278 .RS 4
279 This passphrase is used to generate the master key and master salt\&. For the master key the last n bits of the SHA256 digest of the passphrase (where n is the length of the master key in bits) is used\&. The master salt gets generated with the SHA1 digest\&. You may force a specific key and or salt by using
280 \fB\-\-key\fR
281 and
282 \fB\-\-salt\fR\&.
283 .RE
284 .PP
285 \fB\-K, \-\-key \fR\fB\fI<master key>\fR\fR
286 .RS 4
287 master key to use for key derivation
288
289 Master key in hexadecimal notation, e\&.g\&. 01a2b3c4d5e6f708a9b0cadbecfd0fa1, with a mandatory length of 32, 48 or 64 characters (128, 192 or 256 bits)\&.
290 .RE
291 .PP
292 \fB\-A, \-\-salt \fR\fB\fI<master salt>\fR\fR
293 .RS 4
294 master salt to use for key derivation
295
296 Master salt in hexadecimal notation, e\&.g\&. 01a2b3c4d5e6f708a9b0cadbecfd, with a mandatory length of 28 characters (14 bytes)\&.
297 .RE
298 .PP
299 \fB\-c, \-\-cipher \fR\fB\fI<cipher type>\fR\fR
300 .RS 4
301 payload encryption algorithm
302
303 Encryption algorithm used for encrypting the payload
304
305 Possible values:
306 .PP
307 \fInull\fR
308 .RS 4
309 no encryption
310 .RE
311 .PP
312 \fIaes\-ctr\fR
313 .RS 4
314 AES in counter mode with 128 Bits, default value
315 .RE
316 .PP
317 \fIaes\-ctr\-128\fR
318 .RS 4
319 AES in counter mode with 128 Bits
320 .RE
321 .PP
322 \fIaes\-ctr\-192\fR
323 .RS 4
324 AES in counter mode with 192 Bits
325 .RE
326 .PP
327 \fIaes\-ctr\-256\fR
328 .RS 4
329 AES in counter mode with 256 Bits
330 .RE
331 .RE
332 .PP
333 \fB\-a, \-\-auth\-algo \fR\fB\fI<algo type>\fR\fR
334 .RS 4
335 message authentication algorithm
336
337 This option sets the message authentication algorithm\&.
338
339 If HMAC\-SHA1 is used, the packet length is increased\&. The additional bytes contain the authentication data\&. see
340 \fB\-\-auth\-tag\-length\fR
341 for more info\&.
342
343 Possible values:
344 .PP
345 \fInull\fR
346 .RS 4
347 no message authentication
348 .RE
349 .PP
350 \fIsha1\fR
351 .RS 4
352 HMAC\-SHA1, default value
353 .RE
354 .RE
355 .PP
356 \fB\-b, \-\-auth\-tag\-length \fR\fB\fI<length>\fR\fR
357 .RS 4
358 The number of bytes to use for the auth tag\&. This value defaults to 10 bytes unless the
359 \fInull\fR
360 auth algo is used in which case it defaults to 0\&.
361 .RE
362 .SH "EXAMPLES"
363 .SS "P2P Setup between two unicast enpoints:"
364 .sp
365 .it 1 an-trap
366 .nr an-no-space-flag 1
367 .nr an-break-flag 1
368 .br
369 .ps +1
370 \fBHost A:\fR
371 .RS 4
372 .sp
373 uanytun \-r hostb\&.example\&.com \-t tun \-n 192\&.168\&.123\&.1/30 \-c aes\-ctr\-256 \-k aes\-ctr\-256 \e \-E have_a_very_safe_and_productive_day \-e left
374 .RE
375 .sp
376 .it 1 an-trap
377 .nr an-no-space-flag 1
378 .nr an-break-flag 1
379 .br
380 .ps +1
381 \fBHost B:\fR
382 .RS 4
383 .sp
384 uanytun \-r hosta\&.example\&.com \-t tun \-n 192\&.168\&.123\&.2/30 \-c aes\-ctr\-256 \-k aes\-ctr\-256 \e \-E have_a_very_safe_and_productive_day \-e right
385 .RE
386 .SS "One unicast and one anycast tunnel endpoint:"
387 .sp
388 .it 1 an-trap
389 .nr an-no-space-flag 1
390 .nr an-break-flag 1
391 .br
392 .ps +1
393 \fBUnicast tunnel endpoint:\fR
394 .RS 4
395 .sp
396 uanytun \-r anycast\&.anytun\&.org \-d anytun0 \-t tun \-n 192\&.0\&.2\&.2/30 \-a null \-c null \-w 0 \-e client
397 .RE
398 .sp
399 .it 1 an-trap
400 .nr an-no-space-flag 1
401 .nr an-break-flag 1
402 .br
403 .ps +1
404 \fBAnycast tunnel endpoints:\fR
405 .RS 4
406 .sp
407 As \fBuAnytun\fR can\(cqt work as an anycast endpoint it can\(cqt be used for this purpose\&. You have to use \fBAnytun\fR for that job\&.
408 .RE
409 .SH "BUGS"
410 .sp
411 Most likely there are some bugs in \fBuAnytun\fR\&. If you find a bug, please let the developers know at uanytun@anytun\&.org\&. Of course, patches are preferred\&.
412 .SH "AUTHORS"
413 .sp
414 Christian Pointner <equinox@anytun\&.org>
415 .SH "RESOURCES"
416 .sp
417 Main web site: http://www\&.anytun\&.org/
418 .SH "COPYING"
419 .sp
420 Copyright (C) 2008\-2010 Christian Pointner\&. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version\&.