ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/doc/gvpe.5
(Generate patch)

Comparing gvpe/doc/gvpe.5 (file contents):
Revision 1.11 by pcg, Wed Sep 3 04:58:46 2008 UTC vs.
Revision 1.12 by root, Sat Jul 13 04:10:29 2013 UTC

1.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05) 1.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.20)
2.\" 2.\"
3.\" Standard preamble: 3.\" Standard preamble:
4.\" ======================================================================== 4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP) 5.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v 6.if t .sp .5v
15.if n .sp 7.if n .sp
16.. 8..
17.de Vb \" Begin verbatim text 9.de Vb \" Begin verbatim text
51.\" Escape single quotes in literal strings from groff's Unicode transform. 43.\" Escape single quotes in literal strings from groff's Unicode transform.
52.ie \n(.g .ds Aq \(aq 44.ie \n(.g .ds Aq \(aq
53.el .ds Aq ' 45.el .ds Aq '
54.\" 46.\"
55.\" If the F register is turned on, we'll generate index entries on stderr for 47.\" If the F register is turned on, we'll generate index entries on stderr for
56.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index 48.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
57.\" entries marked with X<> in POD. Of course, you'll have to process the 49.\" entries marked with X<> in POD. Of course, you'll have to process the
58.\" output yourself in some meaningful fashion. 50.\" output yourself in some meaningful fashion.
59.ie \nF \{\ 51.ie \nF \{\
60. de IX 52. de IX
61. tm Index:\\$1\t\\n%\t"\\$2" 53. tm Index:\\$1\t\\n%\t"\\$2"
130.\} 122.\}
131.rm #[ #] #H #V #F C 123.rm #[ #] #H #V #F C
132.\" ======================================================================== 124.\" ========================================================================
133.\" 125.\"
134.IX Title "GVPE 5" 126.IX Title "GVPE 5"
135.TH GVPE 5 "2008-09-01" "2.2" "GNU Virtual Private Ethernet" 127.TH GVPE 5 "2013-07-10" "2.24" "GNU Virtual Private Ethernet"
136.\" For nroff, turn off justification. Always turn off hyphenation; it makes 128.\" For nroff, turn off justification. Always turn off hyphenation; it makes
137.\" way too many mistakes in technical documents. 129.\" way too many mistakes in technical documents.
138.if n .ad l 130.if n .ad l
139.nh 131.nh
140.SH "NAME" 132.SH "NAME"
142.SH "DESCRIPTION" 134.SH "DESCRIPTION"
143.IX Header "DESCRIPTION" 135.IX Header "DESCRIPTION"
144\&\s-1GVPE\s0 is a suite designed to provide a virtual private network for multiple 136\&\s-1GVPE\s0 is a suite designed to provide a virtual private network for multiple
145nodes over an untrusted network. This document first gives an introduction 137nodes over an untrusted network. This document first gives an introduction
146to VPNs in general and then describes the specific implementation of \s-1GVPE\s0. 138to VPNs in general and then describes the specific implementation of \s-1GVPE\s0.
147.Sh "\s-1WHAT\s0 \s-1IS\s0 A \s-1VPN\s0?" 139.SS "\s-1WHAT\s0 \s-1IS\s0 A \s-1VPN\s0?"
148.IX Subsection "WHAT IS A VPN?" 140.IX Subsection "WHAT IS A VPN?"
149\&\s-1VPN\s0 is an acronym, it stands for: 141\&\s-1VPN\s0 is an acronym, it stands for:
150.IP "Virtual" 4 142.IP "Virtual" 4
151.IX Item "Virtual" 143.IX Item "Virtual"
152Virtual means that no physical network is created (of course), but a 144Virtual means that no physical network is created (of course), but a
176networks. 168networks.
177.Sp 169.Sp
178\&\s-1GVPE\s0 provides a true multi-point network in which any number of nodes (at 170\&\s-1GVPE\s0 provides a true multi-point network in which any number of nodes (at
179least a few dozen in practise, the theoretical limit is 4095 nodes) can 171least a few dozen in practise, the theoretical limit is 4095 nodes) can
180participate. 172participate.
181.Sh "\s-1GVPE\s0 \s-1DESIGN\s0 \s-1GOALS\s0" 173.SS "\s-1GVPE\s0 \s-1DESIGN\s0 \s-1GOALS\s0"
182.IX Subsection "GVPE DESIGN GOALS" 174.IX Subsection "GVPE DESIGN GOALS"
183.IP "\s-1SIMPLE\s0 \s-1DESIGN\s0" 4 175.IP "\s-1SIMPLE\s0 \s-1DESIGN\s0" 4
184.IX Item "SIMPLE DESIGN" 176.IX Item "SIMPLE DESIGN"
185Cipher, \s-1HMAC\s0 algorithms and other key parameters must be selected 177Cipher, \s-1HMAC\s0 algorithms and other key parameters must be selected
186at compile time \- this makes it possible to only link in algorithms 178at compile time \- this makes it possible to only link in algorithms
224impossible under most circumstances. 216impossible under most circumstances.
225.PP 217.PP
226Here are a few recipes for compiling your gvpe, showing the extremes 218Here are a few recipes for compiling your gvpe, showing the extremes
227(fast, small, insecure \s-1OR\s0 slow, large, more secure), between which you 219(fast, small, insecure \s-1OR\s0 slow, large, more secure), between which you
228should choose: 220should choose:
229.Sh "\s-1AS\s0 \s-1LOW\s0 \s-1PACKET\s0 \s-1OVERHEAD\s0 \s-1AS\s0 \s-1POSSIBLE\s0" 221.SS "\s-1AS\s0 \s-1LOW\s0 \s-1PACKET\s0 \s-1OVERHEAD\s0 \s-1AS\s0 \s-1POSSIBLE\s0"
230.IX Subsection "AS LOW PACKET OVERHEAD AS POSSIBLE" 222.IX Subsection "AS LOW PACKET OVERHEAD AS POSSIBLE"
231.Vb 1 223.Vb 1
232\& ./configure \-\-enable\-hmac\-length=4 \-\-enable\-rand\-length=0 224\& ./configure \-\-enable\-hmac\-length=4 \-\-enable\-rand\-length=0
233.Ve 225.Ve
234.PP 226.PP
235Minimize the header overhead of \s-1VPN\s0 packets (the above will result in 227Minimize the header overhead of \s-1VPN\s0 packets (the above will result in
236only 4 bytes of overhead over the raw ethernet frame). This is a insecure 228only 4 bytes of overhead over the raw ethernet frame). This is a insecure
237configuration because a \s-1HMAC\s0 length of 4 makes collision attacks based on 229configuration because a \s-1HMAC\s0 length of 4 makes collision attacks almost
238the birthday paradox pretty easy. 230trivial.
239.Sh "\s-1MINIMIZE\s0 \s-1CPU\s0 \s-1TIME\s0 \s-1REQUIRED\s0" 231.SS "\s-1MINIMIZE\s0 \s-1CPU\s0 \s-1TIME\s0 \s-1REQUIRED\s0"
240.IX Subsection "MINIMIZE CPU TIME REQUIRED" 232.IX Subsection "MINIMIZE CPU TIME REQUIRED"
241.Vb 1 233.Vb 1
242\& ./configure \-\-enable\-cipher=bf \-\-enable\-digest=md4 234\& ./configure \-\-enable\-cipher=bf \-\-enable\-digest=md4
243.Ve 235.Ve
244.PP 236.PP
245Use the fastest cipher and digest algorithms currently available in 237Use the fastest cipher and digest algorithms currently available in
246gvpe. \s-1MD4\s0 has been broken and is quite insecure, though, so using another 238gvpe. \s-1MD4\s0 has been broken and is quite insecure, though, so using another
247digest algorithm is recommended. 239digest algorithm is recommended.
248.Sh "\s-1MAXIMIZE\s0 \s-1SECURITY\s0" 240.SS "\s-1MAXIMIZE\s0 \s-1SECURITY\s0"
249.IX Subsection "MAXIMIZE SECURITY" 241.IX Subsection "MAXIMIZE SECURITY"
250.Vb 1 242.Vb 1
251\& ./configure \-\-enable\-hmac\-length=16 \-\-enable\-rand\-length=8 \-\-enable\-digest=sha1 243\& ./configure \-\-enable\-hmac\-length=16 \-\-enable\-rand\-length=12 \-\-enable\-digest=ripemd610
252.Ve 244.Ve
253.PP 245.PP
254This uses a 16 byte \s-1HMAC\s0 checksum to authenticate packets (I guess 8\-12 246This uses a 16 byte \s-1HMAC\s0 checksum to authenticate packets (I guess 8\-12
255would also be pretty secure ;) and will additionally prefix each packet 247would also be pretty secure ;) and will additionally prefix each packet
256with 8 bytes of random data. In the long run, people should move to 248with 12 bytes of random data.
257\&\s-1SHA\-256\s0 and beyond).
258.PP 249.PP
259In general, remember that \s-1AES\-128\s0 seems to be as secure but faster than 250In general, remember that \s-1AES\-128\s0 seems to be as secure but faster than
260\&\s-1AES\-192\s0 or \s-1AES\-256\s0, more randomness helps against sniffing and a longer 251\&\s-1AES\-192\s0 or \s-1AES\-256\s0, more randomness helps against sniffing and a longer
261\&\s-1HMAC\s0 helps against spoofing. \s-1MD4\s0 is a fast digest, \s-1SHA1\s0, \s-1RIPEMD160\s0, \s-1SHA256\s0 252\&\s-1HMAC\s0 helps against spoofing. \s-1MD4\s0 is a fast digest, \s-1SHA1\s0, \s-1RIPEMD160\s0, \s-1SHA256\s0
262are consecutively better, and Blowfish is a fast cipher (and also quite 253are consecutively better, and Blowfish is a fast cipher (and also quite
263secure). 254secure).
264.SH "HOW TO SET UP A SIMPLE VPN" 255.SH "HOW TO SET UP A SIMPLE VPN"
265.IX Header "HOW TO SET UP A SIMPLE VPN" 256.IX Header "HOW TO SET UP A SIMPLE VPN"
266In this section I will describe how to get a simple \s-1VPN\s0 consisting of 257In this section I will describe how to get a simple \s-1VPN\s0 consisting of
267three hosts up and running. 258three hosts up and running.
268.Sh "\s-1STEP\s0 1: configuration" 259.SS "\s-1STEP\s0 1: configuration"
269.IX Subsection "STEP 1: configuration" 260.IX Subsection "STEP 1: configuration"
270First you have to create a daemon configuration file and put it into the 261First you have to create a daemon configuration file and put it into the
271configuration directory. This is usually \f(CW\*(C`/etc/gvpe\*(C'\fR, depending on how you 262configuration directory. This is usually \f(CW\*(C`/etc/gvpe\*(C'\fR, depending on how you
272configured gvpe, and can be overwritten using the \f(CW\*(C`\-c\*(C'\fR command line switch. 263configured gvpe, and can be overwritten using the \f(CW\*(C`\-c\*(C'\fR command line switch.
273.PP 264.PP
308.PP 299.PP
309By enabling routing on the gateway host that runs \f(CW\*(C`gvpe\*(C'\fR all nodes will 300By enabling routing on the gateway host that runs \f(CW\*(C`gvpe\*(C'\fR all nodes will
310be able to reach the other nodes. You can, of course, also use proxy \s-1ARP\s0 301be able to reach the other nodes. You can, of course, also use proxy \s-1ARP\s0
311or other means of pseudo-bridging, or (best) full routing \- the choice is 302or other means of pseudo-bridging, or (best) full routing \- the choice is
312yours. 303yours.
313.Sh "\s-1STEP\s0 2: create the \s-1RSA\s0 key pairs for all hosts" 304.SS "\s-1STEP\s0 2: create the \s-1RSA\s0 key pairs for all hosts"
314.IX Subsection "STEP 2: create the RSA key pairs for all hosts" 305.IX Subsection "STEP 2: create the RSA key pairs for all hosts"
315Run the following command to generate all key pairs for all nodes (that 306Run the following command to generate all key pairs for all nodes (that
316might take a while): 307might take a while):
317.PP 308.PP
318.Vb 1 309.Vb 1
319\& gvpectrl \-c /etc/gvpe \-g 310\& gvpectrl \-c /etc/gvpe \-g
320.Ve 311.Ve
321.PP 312.PP
322This command will put the public keys into \f(CW\*(C`/etc/gvpe/pubkeys/\f(CInodename\f(CW\*(C'\fR and the private keys into \f(CW\*(C`/etc/gvpe/hostkeys/\f(CInodename\f(CW\*(C'\fR. 313This command will put the public keys into \f(CW\*(C`/etc/gvpe/pubkeys/\f(CInodename\f(CW\*(C'\fR and the private keys into \f(CW\*(C`/etc/gvpe/hostkeys/\f(CInodename\f(CW\*(C'\fR.
323.Sh "\s-1STEP\s0 3: distribute the config files to all nodes" 314.SS "\s-1STEP\s0 3: distribute the config files to all nodes"
324.IX Subsection "STEP 3: distribute the config files to all nodes" 315.IX Subsection "STEP 3: distribute the config files to all nodes"
325Now distribute the config files and private keys to the other nodes. This 316Now distribute the config files and private keys to the other nodes. This
326should be done in two steps, since only the private keys meant for a node 317should be done in two steps, since only the private keys meant for a node
327should be distributed (so each node has only it's own private key). 318should be distributed (so each node has only it's own private key).
328.PP 319.PP
344\& rsync \-avzessh /etc/gvpe/hostkeys/third third.example.net:/etc/hostkey 335\& rsync \-avzessh /etc/gvpe/hostkeys/third third.example.net:/etc/hostkey
345.Ve 336.Ve
346.PP 337.PP
347You should now check the configuration by issuing the command \f(CW\*(C`gvpectrl \-c 338You should now check the configuration by issuing the command \f(CW\*(C`gvpectrl \-c
348/etc/gvpe \-s\*(C'\fR on each node and verify it's output. 339/etc/gvpe \-s\*(C'\fR on each node and verify it's output.
349.Sh "\s-1STEP\s0 4: starting gvpe" 340.SS "\s-1STEP\s0 4: starting gvpe"
350.IX Subsection "STEP 4: starting gvpe" 341.IX Subsection "STEP 4: starting gvpe"
351You should then start gvpe on each node by issuing a command like: 342You should then start gvpe on each node by issuing a command like:
352.PP 343.PP
353.Vb 1 344.Vb 1
354\& gvpe \-D \-l info first # first is the nodename 345\& gvpe \-D \-l info first # first is the nodename
366or equivalent. I use a line like this on all my systems: 357or equivalent. I use a line like this on all my systems:
367.PP 358.PP
368.Vb 1 359.Vb 1
369\& t1:2345:respawn:/opt/gvpe/sbin/gvpe \-D \-L first >/dev/null 2>&1 360\& t1:2345:respawn:/opt/gvpe/sbin/gvpe \-D \-L first >/dev/null 2>&1
370.Ve 361.Ve
371.Sh "\s-1STEP\s0 5: enjoy" 362.SS "\s-1STEP\s0 5: enjoy"
372.IX Subsection "STEP 5: enjoy" 363.IX Subsection "STEP 5: enjoy"
373\&... and play around. Sending a \-HUP (\f(CW\*(C`gvpectrl \-kHUP\*(C'\fR) to the daemon 364\&... and play around. Sending a \-HUP (\f(CW\*(C`gvpectrl \-kHUP\*(C'\fR) to the daemon
374will make it try to connect to all other nodes again. If you run it from 365will make it try to connect to all other nodes again. If you run it from
375inittab, as is recommended, \f(CW\*(C`gvpectrl \-k\*(C'\fR (or simply \f(CW\*(C`killall gvpe\*(C'\fR) will 366inittab, as is recommended, \f(CW\*(C`gvpectrl \-k\*(C'\fR (or simply \f(CW\*(C`killall gvpe\*(C'\fR) will
376kill the daemon, start it again, making it read it's configuration files 367kill the daemon, start it again, making it read it's configuration files

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines