ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/doc/gvpe.conf.5.pod
Revision: 1.32
Committed: Tue Jul 16 16:44:36 2013 UTC (10 years, 10 months ago) by root
Branch: MAIN
Changes since 1.31: +3 -2 lines
Log Message:
3.x

File Contents

# User Rev Content
1 pcg 1.1 =head1 NAME
2    
3     gvpe.conf - configuration file for the GNU VPE daemon
4    
5     =head1 SYNOPSIS
6    
7 pcg 1.21 # global options for all nodes
8 pcg 1.1 udp-port = 407
9     mtu = 1492
10     ifname = vpn0
11    
12 pcg 1.21 # first node is named branch1 and is at 1.2.3.4
13 pcg 1.1 node = branch1
14     hostname = 1.2.3.4
15    
16 pcg 1.21 # second node uses dns to resolve the address
17 pcg 1.1 node = branch2
18     hostname = www.example.net
19     udp-port = 500 # this host uses a different udp-port
20    
21 pcg 1.21 # third node has no fixed ip address
22 pcg 1.1 node = branch3
23     connect = ondemand
24    
25     =head1 DESCRIPTION
26    
27     The gvpe config file consists of a series of lines that contain C<variable
28     = value> pairs. Empty lines are ignored. Comments start with a C<#> and
29     extend to the end of the line. They can be used on their own lines, or
30 pcg 1.13 after any directives. Whitespace is allowed around the C<=> sign or after
31     values, but not within the variable names or values themselves.
32 pcg 1.1
33 root 1.28 All settings are applied "in order", that is, later settings of the same
34     variable overwrite earlier ones.
35    
36     The only exceptions to the above are the "on" and "include" directives:
37    
38     =over 4
39    
40     =item on nodename ...
41 pcg 1.1
42 root 1.28 =item on !nodename ...
43    
44     You can prefix any configuration directive with C<on> and a nodename. GVPE
45     will will only "execute" it on the named node, or (if the nodename starts
46     with C<!>) on all nodes except the named one.
47    
48     Example: set the MTU to C<1450> everywhere, C<loglevel> to C<noise> on
49     C<branch1>, and C<connect> to C<ondemand> everywhere but on branch2.
50 pcg 1.21
51     mtu = 1450
52 pcg 1.1 on branch1 loglevel = noise
53     on !branch2 connect = ondemand
54    
55 root 1.28 =item include relative-or-absolute-path
56    
57     Reads the specified file (the path must not contain whitespace or C<=>
58     characters) and evaluate all config directives in it as if they were
59     spelled out in place of the C<include> directive.
60    
61     The path is a printf format string, that is, you must escape any C<%>
62     by doubling it, and you can have a single C<%s> inside, which will be
63     replaced by the current nodename.
64    
65     Relative paths are interpreted relative to the GVPE config directory.
66    
67     Example: include the file F<local.conf> in the config directory on every
68     node.
69    
70     include local.conf
71    
72     Example: include a file F<conf/>nodenameF<.conf>
73    
74     include conf/%s.conf
75    
76     =back
77 pcg 1.1
78     =head1 ANATOMY OF A CONFIG FILE
79    
80 pcg 1.21 Usually, a config file starts with a few global settings (like the UDP
81     port to listen on), followed by node-specific sections that begin with a
82     C<node = nickname> line.
83 pcg 1.1
84     Every node that is part of the network must have a section that starts
85     with C<node = nickname>. The number and order of the nodes is important
86 pcg 1.20 and must be the same on all nodes. It is not uncommon for node sections to
87 pcg 1.1 be completely empty - if the default values are right.
88    
89     Node-specific settings can be used at any time. If used before the first
90     node section they will set the default values for all following nodes.
91    
92     =head1 CONFIG VARIABLES
93    
94     =head2 GLOBAL SETTINGS
95    
96     Global settings will affect the behaviour of the running gvpe daemon, that
97     is, they are in some sense node-specific (config files can set different
98     values on different nodes using C<on>), but will affect the behaviour of
99     the gvpe daemon and all connections it creates.
100    
101     =over 4
102    
103 root 1.29 =item chroot = path or /
104    
105     Tells GVPE to chroot(2) to the specified path after reading all necessary
106     files, binding to sockets and running the C<if-up> script, but before
107     running C<node-up> or any other scripts.
108    
109     The special path F</> instructs GVPE to create (and remove) an empty
110     temporary directory to use as new root. This is most secure, but makes it
111     impossible to use any scripts other than the C<if-up> one.
112    
113     =item chuid = numerical-uid
114    
115     =item chgid = numerical-gid
116    
117     These two options tell GVPE to change to the given user and/or group id
118     after reading all necessary files, binding to sockets and running the
119     C<if-up> script.
120    
121     Other scripts, such as C<node-up>, are run with the new user id or group id.
122    
123     =item chuser = username
124    
125     Alternative to C<chuid> and C<chgid>: Sets both C<chuid> and C<chgid>
126     to the user and (primary) group ids of the specified user (for example,
127     C<nobody>).
128    
129 pcg 1.6 =item dns-forw-host = hostname/ip
130 pcg 1.1
131 pcg 1.21 The DNS server to forward DNS requests to for the DNS tunnel protocol
132 pcg 1.6 (default: C<127.0.0.1>, changing it is highly recommended).
133 pcg 1.1
134 pcg 1.6 =item dns-forw-port = port-number
135 pcg 1.1
136 pcg 1.6 The port where the C<dns-forw-host> is to be contacted (default: C<53>,
137     which is fine in most cases).
138 pcg 1.1
139 root 1.28 =item dns-case-preserving = yes|true|on | no|false|off
140    
141     Sets whether the DNS transport forwarding server preserves case (DNS
142     servers have to, but some access systems are even more broken than others)
143     (default: true).
144    
145     Normally, when the forwarding server changes the case of domain names then
146     GVPE will automatically set this to false.
147    
148 pcg 1.12 =item dns-max-outstanding = integer-number-of-requests
149    
150     The maximum number of outstanding DNS transport requests
151     (default: C<100>). GVPE will never issue more requests then the given
152     limit without receiving replies. In heavily overloaded situations it might
153     help to set this to a low number (e.g. C<3> or even C<1>) to limit the
154     number of parallel requests.
155    
156 pcg 1.21 The default should be working OK for most links.
157 pcg 1.12
158     =item dns-overlap-factor = float
159    
160     The DNS transport uses the minimum request latency (B<min_latency>) seen
161     during a connection as it's timing base. This factor (default: C<0.5>,
162     must be > 0) is multiplied by B<min_latency> to get the maximum sending
163     rate (= minimum send interval), i.e. a factor of C<1> means that a new
164     request might be generated every B<min_latency> seconds, which means on
165     average there should only ever be one outstanding request. A factor of
166     C<0.5> means that GVPE will send requests twice as often as the minimum
167     latency measured.
168    
169 pcg 1.21 For congested or picky DNS forwarders you could use a value nearer to or
170 pcg 1.12 exceeding C<1>.
171    
172 pcg 1.21 The default should be working OK for most links.
173 pcg 1.12
174     =item dns-send-interval = send-interval-in-seconds
175    
176     The minimum send interval (= maximum rate) that the DNS transport will
177     use to send new DNS requests. GVPE will not exceed this rate even when
178     the latency is very low. The default is C<0.01>, which means GVPE will
179     not send more than 100 DNS requests per connection per second. For
180     high-bandwidth links you could go lower, e.g. to C<0.001> or so. For
181     congested or rate-limited links, you might want to go higher, say C<0.1>,
182     C<0.2> or even higher.
183    
184 pcg 1.21 The default should be working OK for most links.
185 pcg 1.12
186     =item dns-timeout-factor = float
187    
188     Factor to multiply the C<min_latency> (see C<dns-overlap-factor>) by to
189     get request timeouts. The default of C<8> means that the DNS transport
190     will resend the request when no reply has been received for longer than
191     eight times the minimum (= expected) latency, assuming the request or
192     reply has been lost.
193    
194 pcg 1.17 For congested links a higher value might be necessary (e.g. C<30>). If
195     the link is very stable lower values (e.g. C<2>) might work
196     nicely. Values near or below C<1> makes no sense whatsoever.
197 pcg 1.12
198 pcg 1.21 The default should be working OK for most links but will result in low
199 pcg 1.17 throughput if packet loss is high.
200 pcg 1.12
201 pcg 1.1 =item if-up = relative-or-absolute-path
202    
203     Sets the path of a script that should be called immediately after the
204 pcg 1.21 network interface is initialized (but not necessarily up). The following
205 pcg 1.13 environment variables are passed to it (the values are just examples).
206    
207     Variables that have the same value on all nodes:
208 pcg 1.1
209     =over 4
210    
211     =item CONFBASE=/etc/gvpe
212    
213     The configuration base directory.
214    
215     =item IFNAME=vpn0
216    
217 pcg 1.13 The network interface to initialize.
218    
219     =item IFTYPE=native # or tincd
220    
221     =item IFSUBTYPE=linux # or freebsd, darwin etc..
222    
223     The interface type (C<native> or C<tincd>) and the subtype (usually the
224     OS name in lowercase) that this GVPE was configured for. Can be used to
225     select the correct syntax to use for network-related commands.
226 pcg 1.1
227     =item MTU=1436
228    
229     The MTU to set the interface to. You can use lower values (if done
230 pcg 1.20 consistently on all nodes), but this is usually either inefficient or
231     simply ineffective.
232 pcg 1.1
233 pcg 1.13 =item NODES=5
234    
235     The number of nodes in this GVPE network.
236    
237     =back
238    
239     Variables that are node-specific and with values pertaining to the node
240     running this GVPE:
241 pcg 1.1
242 pcg 1.13 =over 4
243 pcg 1.1
244 pcg 1.13 =item IFUPDATA=string
245 pcg 1.1
246 pcg 1.13 The value of the configuration directive C<if-up-data>.
247 pcg 1.1
248 pcg 1.13 =item MAC=fe:fd:80:00:00:01
249 pcg 1.1
250 pcg 1.13 The MAC address the network interface has to use.
251 pcg 1.1
252 pcg 1.13 Might be used to initialize interfaces on platforms where GVPE does not
253 pcg 1.21 do this automatically. Please see the C<gvpe.osdep(5)> man page for
254 pcg 1.13 platform-specific information.
255 pcg 1.1
256     =item NODENAME=branch1
257    
258 pcg 1.13 The nickname of the node.
259 pcg 1.1
260     =item NODEID=1
261    
262 pcg 1.13 The numerical node ID of the node running this instance of GVPE. The first
263     node mentioned in the config file gets ID 1, the second ID 2 and so on.
264 pcg 1.1
265     =back
266    
267 pcg 1.13 In addition, all node-specific variables (except C<NODEID>) will be
268     available with a postfix of C<_nodeid>, which contains the value for that
269     node, e.g. the C<MAC_1> variable contains the MAC address of node #1, while
270     the C<NODENAME_22> variable contains the name of node #22.
271    
272 pcg 1.1 Here is a simple if-up script:
273    
274     #!/bin/sh
275 pcg 1.13 ip link set $IFNAME up
276 pcg 1.1 [ $NODENAME = branch1 ] && ip addr add 10.0.0.1 dev $IFNAME
277     [ $NODENAME = branch2 ] && ip addr add 10.1.0.1 dev $IFNAME
278     ip route add 10.0.0.0/8 dev $IFNAME
279    
280 pcg 1.21 More complicated examples (using routing to reduce ARP traffic) can be
281     found in the F<etc/> subdirectory of the distribution.
282 pcg 1.1
283 pcg 1.6 =item ifname = devname
284    
285     Sets the tun interface name to the given name. The default is OS-specific
286     and most probably something like C<tun0>.
287    
288     =item ifpersist = yes|true|on | no|false|off
289    
290     Should the tun/tap device be made persistent, that is, should the device
291     stay up even when gvpe exits? Some versions of the tunnel device have
292     problems sending packets when gvpe is restarted in persistent mode, so
293     if the connections can be established but you cannot send packets from
294     the local node, try to set this to C<off> and do an ifconfig down on the
295     device.
296    
297     =item ip-proto = numerical-ip-protocol
298    
299     Sets the protocol number to be used for the rawip protocol. This is a
300 pcg 1.20 global option because all nodes must use the same protocol, and since
301 pcg 1.6 there are no port numbers, you cannot easily run more than one gvpe
302     instance using the same protocol, nor can you share the protocol with
303     other programs.
304    
305 pcg 1.21 The default is 47 (GRE), which has a good chance of tunneling
306     through firewalls (but note that gvpe's rawip protocol is not GRE
307     compatible). Other common choices are 50 (IPSEC, ESP), 51 (IPSEC, AH), 4
308 pcg 1.25 (IPIP tunnels) or 98 (ENCAP, rfc1241).
309    
310     Many versions of Linux seem to have a bug that causes them to reorder
311     packets for some ip protocols (GRE, ESP) but not for others (AH), so
312     choose wisely (that is, use 51, AH).
313 pcg 1.6
314     =item http-proxy-host = hostname/ip
315    
316     The C<http-proxy-*> family of options are only available if gvpe was
317     compiled with the C<--enable-http-proxy> option and enable tunneling of
318     tcp connections through a http proxy server.
319    
320     C<http-proxy-host> and C<http-proxy-port> should specify the hostname and
321     port number of the proxy server. See C<http-proxy-loginpw> if your proxy
322     requires authentication.
323    
324     Please note that gvpe will still try to resolve all hostnames in the
325 pcg 1.21 configuration file, so if you are behind a proxy without access to a DNS
326 pcg 1.6 server better use numerical IP addresses.
327    
328 pcg 1.21 To make best use of this option disable all protocols except TCP in your
329 pcg 1.20 config file and make sure your routers (or all other nodes) are listening
330 pcg 1.6 on a port that the proxy allows (443, https, is a common choice).
331    
332 pcg 1.21 If you have a router, connecting to it will suffice. Otherwise TCP must be
333 pcg 1.20 enabled on all nodes.
334 pcg 1.6
335     Example:
336    
337     http-proxy-host = proxy.example.com
338     http-proxy-port = 3128 # 8080 is another common choice
339     http-proxy-auth = schmorp:grumbeere
340    
341     =item http-proxy-port = proxy-tcp-port
342    
343     The port where your proxy server listens.
344    
345     =item http-proxy-auth = login:password
346    
347     The optional login and password used to authenticate to the proxy server,
348 pcg 1.21 separated by a literal colon (C<:>). Only basic authentication is
349 pcg 1.6 currently supported.
350    
351     =item keepalive = seconds
352    
353     Sets the keepalive probe interval in seconds (default: C<60>). After this
354     many seconds of inactivity the daemon will start to send keepalive probe
355 root 1.29 every 3 seconds until it receives a reply from the other end. If no reply
356 pcg 1.21 is received within 15 seconds, the peer is considered unreachable and the
357 pcg 1.6 connection is closed.
358    
359     =item loglevel = noise|trace|debug|info|notice|warn|error|critical
360    
361     Set the logging level. Connection established messages are logged at level
362     C<info>, notable errors are logged with C<error>. Default is C<info>.
363    
364     =item mtu = bytes
365    
366     Sets the maximum MTU that should be used on outgoing packets (basically
367     the MTU of the outgoing interface) The daemon will automatically calculate
368 pcg 1.21 maximum overhead (e.g. UDP header size, encryption blocksize...) and pass
369 pcg 1.6 this information to the C<if-up> script.
370    
371     Recommended values are 1500 (ethernet), 1492 (pppoe), 1472 (pptp).
372    
373 pcg 1.21 This value must be the minimum of the MTU values of all nodes.
374 pcg 1.6
375 root 1.31 =item nfmark = integer
376    
377     This advanced option, when set to a nonzero value (default: C<0>), tries
378     to set the netfilter mark (or fwmark) value on all sockets gvpe uses to
379     send packets.
380    
381     This can be used to make gvpe use a different set of routing rules. For
382     example, on GNU/Linux, the C<if-up> could set C<nfmark> to 1000 and then
383     put all routing rules into table C<99> and then use an ip rule to make
384     gvpe traffic avoid that routing table, in effect routing normal traffic
385     via gvpe and gvpe traffic via the normal system routing tables:
386    
387     ip rule add not fwmark 1000 lookup 99
388    
389 pcg 1.6 =item node = nickname
390    
391     Not really a config setting but introduces a node section. The nickname is
392     used to select the right configuration section and must be passed as an
393     argument to the gvpe daemon.
394    
395 pcg 1.1 =item node-up = relative-or-absolute-path
396    
397 pcg 1.19 Sets a command (default: none) that should be called whenever a connection
398     is established (even on rekeying operations). Note that node-up/down
399     scripts will be run asynchronously, but execution is serialised, so there
400     will only ever be one such script running.
401    
402     In addition to all the variables passed to C<if-up> scripts, the following
403 pcg 1.24 environment variables will be set (values are just examples):
404 pcg 1.1
405     =over 4
406    
407     =item DESTNODE=branch2
408    
409     The name of the remote node.
410    
411     =item DESTID=2
412    
413     The node id of the remote node.
414    
415 pcg 1.24 =item DESTSI=rawip/88.99.77.55:0
416    
417     The "socket info" of the target node, protocol dependent but usually in
418     the format protocol/ip:port.
419    
420 pcg 1.1 =item DESTIP=188.13.66.8
421    
422 pcg 1.20 The numerical IP address of the remote node (gvpe accepts connections from
423     everywhere, as long as the other node can authenticate itself).
424 pcg 1.1
425     =item DESTPORT=655 # deprecated
426    
427 pcg 1.24 The protocol port used by the other side, if applicable.
428 pcg 1.1
429 pcg 1.24 =item STATE=up
430 pcg 1.1
431 pcg 1.24 Node-up scripts get called with STATE=up, node-change scripts get called
432     with STATE=change and node-down scripts get called with STATE=down.
433 pcg 1.1
434     =back
435    
436     Here is a nontrivial example that uses nsupdate to update the name => ip
437 pcg 1.21 mapping in some DNS zone:
438 pcg 1.1
439     #!/bin/sh
440     {
441     echo update delete $DESTNODE.lowttl.example.net. a
442     echo update add $DESTNODE.lowttl.example.net. 1 in a $DESTIP
443 root 1.30 echo
444 pcg 1.1 } | nsupdate -d -k $CONFBASE:key.example.net.
445    
446 pcg 1.24 =item node-change = relative-or-absolute-path
447    
448     Same as C<node-change>, but gets called whenever something about a
449     connection changes (such as the source IP address).
450    
451 pcg 1.1 =item node-down = relative-or-absolute-path
452    
453     Same as C<node-up>, but gets called whenever a connection is lost.
454    
455 pcg 1.6 =item pid-file = path
456    
457     The path to the pid file to check and create
458 root 1.32 (default: C<LOCALSTATEDIR/run/gvpe.pid>). The first C<%s> is replaced by
459     the nodename - any other use of C<%> must be written as C<%%>.
460 pcg 1.6
461     =item private-key = relative-path-to-key
462    
463     Sets the path (relative to the config directory) to the private key
464     (default: C<hostkey>). This is a printf format string so every C<%> must
465     be doubled. A single C<%s> is replaced by the hostname, so you could
466     use paths like C<hostkeys/%s> to fetch the files at the location where
467     C<gvpectrl> puts them.
468 pcg 1.1
469 pcg 1.6 Since only the private key file of the current node is used and the
470 pcg 1.21 private key file should be kept secret per-node to avoid spoofing, it is
471 pcg 1.6 not recommended to use this feature.
472 pcg 1.1
473 pcg 1.6 =item rekey = seconds
474 pcg 1.1
475 root 1.31 Sets the rekeying interval in seconds (default: C<3607>). Connections are
476 pcg 1.21 reestablished every C<rekey> seconds, making them use a new encryption
477     key.
478 pcg 1.1
479 root 1.31 =item seed-device = path
480    
481     The random device used to initially and regularly seed the random
482     number generator (default: F</dev/urandom>). Randomness is of paramount
483     importance to the security of the algorithms used in gvpe.
484    
485     On program start and every seed-interval, gvpe will read 64 octets.
486 pcg 1.23
487 root 1.31 Setting this path to the empty string will disable this functionality
488     completely (the underlying crypto library will likely look for entropy
489     sources on it's own though, so not all is lost).
490 pcg 1.23
491 root 1.31 =item seed-interval = seconds
492 pcg 1.23
493 root 1.31 The number of seconds between reseeds of the random number generator
494     (default: C<3613>). A value of C<0> disables this regular reseeding.
495 pcg 1.23
496 pcg 1.6 =back
497 pcg 1.1
498 pcg 1.6 =head2 NODE SPECIFIC SETTINGS
499 pcg 1.1
500 pcg 1.6 The following settings are node-specific, that is, every node can have
501     different settings, even within the same gvpe instance. Settings that are
502 pcg 1.15 set before the first node section set the defaults, settings that are
503     set within a node section only apply to the given node.
504 pcg 1.1
505 pcg 1.6 =over 4
506 pcg 1.1
507 pcg 1.15 =item allow-direct = nodename
508    
509     Allow direct connections to this node. See C<deny-direct> for more info.
510    
511 pcg 1.6 =item compress = yes|true|on | no|false|off
512 pcg 1.1
513 root 1.26 For the current node, this specified whether it will accept compressed
514     packets, and for all other nodes, this specifies whether to try to
515     compress data packets sent to this node (default: C<yes>). Compression is
516     really cheap even on slow computers, has no size overhead at all and will
517     only be used when the other side supports compression, so enabling this is
518     often a good idea.
519 pcg 1.1
520 pcg 1.6 =item connect = ondemand | never | always | disabled
521 pcg 1.1
522 pcg 1.6 Sets the connect mode (default: C<always>). It can be C<always> (always
523 pcg 1.20 try to establish and keep a connection to the given node), C<never>
524 pcg 1.6 (never initiate a connection to the given host, but accept connections),
525 pcg 1.18 C<ondemand> (try to establish a connection when there are outstanding
526     packets in the queue and take it down after the keepalive interval) or
527     C<disabled> (node is bad, don't talk to it).
528 pcg 1.1
529 pcg 1.20 Routers will automatically be forced to C<always> unless they are
530     C<disabled>, to ensure all nodes can talk to each other.
531    
532 pcg 1.15 =item deny-direct = nodename | *
533    
534     Deny direct connections to the specified node (or all nodes when C<*>
535     is given). Only one node can be specified, but you can use multiple
536     C<allow-direct> and C<deny-direct> statements. This only makes sense in
537     networks with routers, as routers are required for indirect connections.
538    
539     Sometimes, a node cannot reach some other nodes for reasons of network
540     connectivity. For example, a node behind a firewall that only allows
541 pcg 1.21 connections to/from a single other node in the network. In this case one
542 pcg 1.15 should specify C<deny-direct = *> and C<allow-direct = othernodename> (the other
543     node I<must> be a router for this to work).
544    
545 pcg 1.21 The algorithm to check whether a connection may be direct is as follows:
546 pcg 1.15
547 pcg 1.21 1. Other node mentioned in an C<allow-direct>? If yes, allow the connection.
548 pcg 1.15
549     2. Other node mentioned in a C<deny-direct>? If yes, deny direct connections.
550    
551     3. Allow the connection.
552    
553 pcg 1.16 That is, C<allow-direct> takes precedence over C<deny-direct>.
554 pcg 1.15
555     The check is done in both directions, i.e. both nodes must allow a direct
556     connection before one is attempted, so you only need to specify connect
557     limitations on one node.
558    
559 pcg 1.6 =item dns-domain = domain-suffix
560 pcg 1.1
561 pcg 1.7 The DNS domain suffix that points to the DNS tunnel server for this node.
562 pcg 1.1
563 pcg 1.6 The domain must point to a NS record that points to the I<dns-hostname>,
564     i.e.
565 pcg 1.1
566 pcg 1.6 dns-domainname = tunnel.example.net
567     dns-hostname = tunnel-server.example.net
568 pcg 1.1
569 pcg 1.6 Corresponds to the following DNS entries in the C<example.net> domain:
570 pcg 1.1
571 pcg 1.6 tunnel.example.net. NS tunnel-server.example.net.
572     tunnel-server.example.net. A 13.13.13.13
573 pcg 1.1
574 pcg 1.6 =item dns-hostname = hostname/ip
575 pcg 1.1
576 pcg 1.6 The address to bind the DNS tunnel socket to, similar to the C<hostname>,
577     but for the DNS tunnel protocol only. Default: C<0.0.0.0>, but that might
578     change.
579 pcg 1.1
580 pcg 1.6 =item dns-port = port-number
581 pcg 1.1
582 pcg 1.8 The port to bind the DNS tunnel socket to. Must be C<53> on DNS tunnel servers.
583 pcg 1.1
584 pcg 1.7 =item enable-dns = yes|true|on | no|false|off
585    
586 pcg 1.10 See gvpe.protocol(7) for a description of the DNS transport
587     protocol. Avoid this protocol if you can.
588    
589 pcg 1.8 Enable the DNS tunneling protocol on this node, either as server or as
590 pcg 1.10 client. Support for this transport protocol is only available when gvpe
591     was compiled using the C<--enable-dns> option.
592    
593     =item enable-icmp = yes|true|on | no|false|off
594    
595     See gvpe.protocol(7) for a description of the ICMP transport protocol.
596 pcg 1.8
597 pcg 1.21 Enable the ICMP transport using ICMP packets of type C<icmp-type> on this
598 pcg 1.10 node.
599 pcg 1.7
600 pcg 1.1 =item enable-rawip = yes|true|on | no|false|off
601    
602 pcg 1.10 See gvpe.protocol(7) for a description of the RAW IP transport protocol.
603    
604 pcg 1.1 Enable the RAW IPv4 transport using the C<ip-proto> protocol
605 pcg 1.10 (default: C<no>).
606 pcg 1.1
607 pcg 1.6 =item enable-tcp = yes|true|on | no|false|off
608    
609 pcg 1.10 See gvpe.protocol(7) for a description of the TCP transport protocol.
610    
611 pcg 1.6 Enable the TCPv4 transport using the C<tcp-port> port
612 pcg 1.10 (default: C<no>). Support for this transport protocol is only available
613     when gvpe was compiled using the C<--enable-tcp> option.
614 pcg 1.6
615 pcg 1.1 =item enable-udp = yes|true|on | no|false|off
616    
617 pcg 1.10 See gvpe.protocol(7) for a description of the UDP transport protocol.
618    
619 root 1.27 Enable the UDPv4 transport using the C<udp-port> port (default: C<no>).
620 pcg 1.15
621     =item hostname = hostname | ip [can not be defaulted]
622    
623 pcg 1.21 Forces the address of this node to be set to the given DNS hostname or IP
624 pcg 1.15 address. It will be resolved before each connect request, so dyndns should
625     work fine. If this setting is not specified and a router is available,
626     then the router will be queried for the address of this node. Otherwise,
627     the connection attempt will fail.
628 pcg 1.1
629 pcg 1.21 Note that DNS resolving is done synchronously, pausing the daemon. If that
630     is an issue you need to specify IP addresses.
631    
632 pcg 1.11 =item icmp-type = integer
633    
634     Sets the type value to be used for outgoing (and incoming) packets sent
635     via the ICMP transport.
636    
637     The default is C<0> (which is C<echo-reply>, also known as
638 pcg 1.21 "ping-reply"). Other useful values include C<8> (C<echo-request>, a.k.a.
639 pcg 1.11 "ping") and C<11> (C<time-exceeded>), but any 8-bit value can be used.
640    
641 pcg 1.13 =item if-up-data = value
642    
643     The value specified using this directive will be passed to the C<if-up>
644     script in the environment variable C<IFUPDATA>.
645    
646 pcg 1.6 =item inherit-tos = yes|true|on | no|false|off
647    
648 root 1.26 Whether to inherit the TOS settings of packets sent to the tunnel when
649 pcg 1.6 sending packets to this node (default: C<yes>). If set to C<yes> then
650     outgoing tunnel packets will have the same TOS setting as the packets sent
651     to the tunnel device, which is usually what you want.
652    
653     =item max-retry = positive-number
654 pcg 1.1
655 pcg 1.8 The maximum interval in seconds (default: C<3600>, one hour) between
656 pcg 1.6 retries to establish a connection to this node. When a connection cannot
657 pcg 1.21 be established, gvpe uses exponential back-off capped at this value. It's
658 pcg 1.6 sometimes useful to set this to a much lower value (e.g. C<120>) on
659     connections to routers that usually are stable but sometimes are down, to
660 pcg 1.8 assure quick reconnections even after longer downtimes.
661 pcg 1.1
662 pcg 1.18 =item max-ttl = seconds
663    
664     Expire packets that couldn't be sent after this many seconds
665     (default: C<60>). Gvpe will normally queue packets for a node without an
666     active connection, in the hope of establishing a connection soon. This
667     value specifies the maximum lifetime a packet will stay in the queue, if a
668     packet gets older, it will be thrown away.
669    
670 pcg 1.20 =item max-queue = positive-number>=1
671 pcg 1.18
672     The maximum number of packets that will be queued (default: C<512>)
673     for this node. If more packets are sent then earlier packets will be
674     expired. See C<max-ttl>, above.
675    
676 pcg 1.8 =item router-priority = 0 | 1 | positive-number>=2
677 pcg 1.1
678 pcg 1.20 Sets the router priority of the given node (default: C<0>, disabled).
679    
680     If some node tries to connect to another node but it doesn't have a
681     hostname, it asks a router node for it's IP address. The router node
682     chosen is the one with the highest priority larger than C<1> that is
683     currently reachable. This is called a I<mediated> connection, as the
684     connection itself will still be direct, but it uses another node to
685     mediate between the two nodes.
686 pcg 1.1
687 pcg 1.20 The value C<0> disables routing, that means if the node receives a packet
688     not for itself it will not forward it but instead drop it.
689 pcg 1.2
690     The special value C<1> allows other hosts to route through the router
691 pcg 1.20 host, but they will never route through it by default (i.e. the config
692     file of another node needs to specify a router priority higher than one
693     to choose such a node for routing).
694    
695     The idea behind this is that some hosts can, if required, bump the
696     C<router-priority> setting to higher than C<1> in their local config to
697     route through specific hosts. If C<router-priority> is C<0>, then routing
698     will be refused, so C<1> serves as a "enable, but do not use by default"
699     switch.
700    
701     Nodes with C<router-priority> set to C<2> or higher will always be forced
702     to C<connect> = C<always> (unless they are C<disabled>).
703 pcg 1.2
704 pcg 1.6 =item tcp-port = port-number
705 pcg 1.1
706 pcg 1.6 Similar to C<udp-port> (default: C<655>), but sets the TCP port number.
707 pcg 1.1
708 pcg 1.6 =item udp-port = port-number
709 pcg 1.1
710 pcg 1.6 Sets the port number used by the UDP protocol (default: C<655>, not
711     officially assigned by IANA!).
712 pcg 1.1
713     =back
714    
715     =head1 CONFIG DIRECTORY LAYOUT
716    
717     The default (or recommended) directory layout for the config directory is:
718    
719     =over 4
720    
721 pcg 1.22 =item gvpe.conf
722 pcg 1.1
723     The config file.
724    
725 pcg 1.22 =item if-up
726 pcg 1.1
727     The if-up script
728    
729 pcg 1.22 =item node-up, node-down
730 pcg 1.1
731     If used the node up or node-down scripts.
732    
733 pcg 1.22 =item hostkey
734 pcg 1.1
735 root 1.32 The (default path of the) private key of the current host.
736 pcg 1.1
737 pcg 1.22 =item pubkey/nodename
738 pcg 1.1
739     The public keys of the other nodes, one file per node.
740    
741     =back
742    
743     =head1 SEE ALSO
744    
745     gvpe(5), gvpe(8), gvpectrl(8).
746    
747     =head1 AUTHOR
748    
749 pcg 1.14 Marc Lehmann <gvpe@schmorp.de>
750 pcg 1.1