ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/doc/gvpe.conf.5.pod
Revision: 1.31
Committed: Sat Jul 13 04:10:29 2013 UTC (10 years, 10 months ago) by root
Branch: MAIN
CVS Tags: rel-2_25
Changes since 1.30: +28 -11 lines
Log Message:
*** empty log message ***

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     (default: C<LOCALSTATEDIR/run/gvpe.pid>).
459    
460     =item private-key = relative-path-to-key
461    
462     Sets the path (relative to the config directory) to the private key
463     (default: C<hostkey>). This is a printf format string so every C<%> must
464     be doubled. A single C<%s> is replaced by the hostname, so you could
465     use paths like C<hostkeys/%s> to fetch the files at the location where
466     C<gvpectrl> puts them.
467 pcg 1.1
468 pcg 1.6 Since only the private key file of the current node is used and the
469 pcg 1.21 private key file should be kept secret per-node to avoid spoofing, it is
470 pcg 1.6 not recommended to use this feature.
471 pcg 1.1
472 pcg 1.6 =item rekey = seconds
473 pcg 1.1
474 root 1.31 Sets the rekeying interval in seconds (default: C<3607>). Connections are
475 pcg 1.21 reestablished every C<rekey> seconds, making them use a new encryption
476     key.
477 pcg 1.1
478 root 1.31 =item seed-device = path
479    
480     The random device used to initially and regularly seed the random
481     number generator (default: F</dev/urandom>). Randomness is of paramount
482     importance to the security of the algorithms used in gvpe.
483    
484     On program start and every seed-interval, gvpe will read 64 octets.
485 pcg 1.23
486 root 1.31 Setting this path to the empty string will disable this functionality
487     completely (the underlying crypto library will likely look for entropy
488     sources on it's own though, so not all is lost).
489 pcg 1.23
490 root 1.31 =item seed-interval = seconds
491 pcg 1.23
492 root 1.31 The number of seconds between reseeds of the random number generator
493     (default: C<3613>). A value of C<0> disables this regular reseeding.
494 pcg 1.23
495 pcg 1.6 =back
496 pcg 1.1
497 pcg 1.6 =head2 NODE SPECIFIC SETTINGS
498 pcg 1.1
499 pcg 1.6 The following settings are node-specific, that is, every node can have
500     different settings, even within the same gvpe instance. Settings that are
501 pcg 1.15 set before the first node section set the defaults, settings that are
502     set within a node section only apply to the given node.
503 pcg 1.1
504 pcg 1.6 =over 4
505 pcg 1.1
506 pcg 1.15 =item allow-direct = nodename
507    
508     Allow direct connections to this node. See C<deny-direct> for more info.
509    
510 pcg 1.6 =item compress = yes|true|on | no|false|off
511 pcg 1.1
512 root 1.26 For the current node, this specified whether it will accept compressed
513     packets, and for all other nodes, this specifies whether to try to
514     compress data packets sent to this node (default: C<yes>). Compression is
515     really cheap even on slow computers, has no size overhead at all and will
516     only be used when the other side supports compression, so enabling this is
517     often a good idea.
518 pcg 1.1
519 pcg 1.6 =item connect = ondemand | never | always | disabled
520 pcg 1.1
521 pcg 1.6 Sets the connect mode (default: C<always>). It can be C<always> (always
522 pcg 1.20 try to establish and keep a connection to the given node), C<never>
523 pcg 1.6 (never initiate a connection to the given host, but accept connections),
524 pcg 1.18 C<ondemand> (try to establish a connection when there are outstanding
525     packets in the queue and take it down after the keepalive interval) or
526     C<disabled> (node is bad, don't talk to it).
527 pcg 1.1
528 pcg 1.20 Routers will automatically be forced to C<always> unless they are
529     C<disabled>, to ensure all nodes can talk to each other.
530    
531 pcg 1.15 =item deny-direct = nodename | *
532    
533     Deny direct connections to the specified node (or all nodes when C<*>
534     is given). Only one node can be specified, but you can use multiple
535     C<allow-direct> and C<deny-direct> statements. This only makes sense in
536     networks with routers, as routers are required for indirect connections.
537    
538     Sometimes, a node cannot reach some other nodes for reasons of network
539     connectivity. For example, a node behind a firewall that only allows
540 pcg 1.21 connections to/from a single other node in the network. In this case one
541 pcg 1.15 should specify C<deny-direct = *> and C<allow-direct = othernodename> (the other
542     node I<must> be a router for this to work).
543    
544 pcg 1.21 The algorithm to check whether a connection may be direct is as follows:
545 pcg 1.15
546 pcg 1.21 1. Other node mentioned in an C<allow-direct>? If yes, allow the connection.
547 pcg 1.15
548     2. Other node mentioned in a C<deny-direct>? If yes, deny direct connections.
549    
550     3. Allow the connection.
551    
552 pcg 1.16 That is, C<allow-direct> takes precedence over C<deny-direct>.
553 pcg 1.15
554     The check is done in both directions, i.e. both nodes must allow a direct
555     connection before one is attempted, so you only need to specify connect
556     limitations on one node.
557    
558 pcg 1.6 =item dns-domain = domain-suffix
559 pcg 1.1
560 pcg 1.7 The DNS domain suffix that points to the DNS tunnel server for this node.
561 pcg 1.1
562 pcg 1.6 The domain must point to a NS record that points to the I<dns-hostname>,
563     i.e.
564 pcg 1.1
565 pcg 1.6 dns-domainname = tunnel.example.net
566     dns-hostname = tunnel-server.example.net
567 pcg 1.1
568 pcg 1.6 Corresponds to the following DNS entries in the C<example.net> domain:
569 pcg 1.1
570 pcg 1.6 tunnel.example.net. NS tunnel-server.example.net.
571     tunnel-server.example.net. A 13.13.13.13
572 pcg 1.1
573 pcg 1.6 =item dns-hostname = hostname/ip
574 pcg 1.1
575 pcg 1.6 The address to bind the DNS tunnel socket to, similar to the C<hostname>,
576     but for the DNS tunnel protocol only. Default: C<0.0.0.0>, but that might
577     change.
578 pcg 1.1
579 pcg 1.6 =item dns-port = port-number
580 pcg 1.1
581 pcg 1.8 The port to bind the DNS tunnel socket to. Must be C<53> on DNS tunnel servers.
582 pcg 1.1
583 pcg 1.7 =item enable-dns = yes|true|on | no|false|off
584    
585 pcg 1.10 See gvpe.protocol(7) for a description of the DNS transport
586     protocol. Avoid this protocol if you can.
587    
588 pcg 1.8 Enable the DNS tunneling protocol on this node, either as server or as
589 pcg 1.10 client. Support for this transport protocol is only available when gvpe
590     was compiled using the C<--enable-dns> option.
591    
592     =item enable-icmp = yes|true|on | no|false|off
593    
594     See gvpe.protocol(7) for a description of the ICMP transport protocol.
595 pcg 1.8
596 pcg 1.21 Enable the ICMP transport using ICMP packets of type C<icmp-type> on this
597 pcg 1.10 node.
598 pcg 1.7
599 pcg 1.1 =item enable-rawip = yes|true|on | no|false|off
600    
601 pcg 1.10 See gvpe.protocol(7) for a description of the RAW IP transport protocol.
602    
603 pcg 1.1 Enable the RAW IPv4 transport using the C<ip-proto> protocol
604 pcg 1.10 (default: C<no>).
605 pcg 1.1
606 pcg 1.6 =item enable-tcp = yes|true|on | no|false|off
607    
608 pcg 1.10 See gvpe.protocol(7) for a description of the TCP transport protocol.
609    
610 pcg 1.6 Enable the TCPv4 transport using the C<tcp-port> port
611 pcg 1.10 (default: C<no>). Support for this transport protocol is only available
612     when gvpe was compiled using the C<--enable-tcp> option.
613 pcg 1.6
614 pcg 1.1 =item enable-udp = yes|true|on | no|false|off
615    
616 pcg 1.10 See gvpe.protocol(7) for a description of the UDP transport protocol.
617    
618 root 1.27 Enable the UDPv4 transport using the C<udp-port> port (default: C<no>).
619 pcg 1.15
620     =item hostname = hostname | ip [can not be defaulted]
621    
622 pcg 1.21 Forces the address of this node to be set to the given DNS hostname or IP
623 pcg 1.15 address. It will be resolved before each connect request, so dyndns should
624     work fine. If this setting is not specified and a router is available,
625     then the router will be queried for the address of this node. Otherwise,
626     the connection attempt will fail.
627 pcg 1.1
628 pcg 1.21 Note that DNS resolving is done synchronously, pausing the daemon. If that
629     is an issue you need to specify IP addresses.
630    
631 pcg 1.11 =item icmp-type = integer
632    
633     Sets the type value to be used for outgoing (and incoming) packets sent
634     via the ICMP transport.
635    
636     The default is C<0> (which is C<echo-reply>, also known as
637 pcg 1.21 "ping-reply"). Other useful values include C<8> (C<echo-request>, a.k.a.
638 pcg 1.11 "ping") and C<11> (C<time-exceeded>), but any 8-bit value can be used.
639    
640 pcg 1.13 =item if-up-data = value
641    
642     The value specified using this directive will be passed to the C<if-up>
643     script in the environment variable C<IFUPDATA>.
644    
645 pcg 1.6 =item inherit-tos = yes|true|on | no|false|off
646    
647 root 1.26 Whether to inherit the TOS settings of packets sent to the tunnel when
648 pcg 1.6 sending packets to this node (default: C<yes>). If set to C<yes> then
649     outgoing tunnel packets will have the same TOS setting as the packets sent
650     to the tunnel device, which is usually what you want.
651    
652     =item max-retry = positive-number
653 pcg 1.1
654 pcg 1.8 The maximum interval in seconds (default: C<3600>, one hour) between
655 pcg 1.6 retries to establish a connection to this node. When a connection cannot
656 pcg 1.21 be established, gvpe uses exponential back-off capped at this value. It's
657 pcg 1.6 sometimes useful to set this to a much lower value (e.g. C<120>) on
658     connections to routers that usually are stable but sometimes are down, to
659 pcg 1.8 assure quick reconnections even after longer downtimes.
660 pcg 1.1
661 pcg 1.18 =item max-ttl = seconds
662    
663     Expire packets that couldn't be sent after this many seconds
664     (default: C<60>). Gvpe will normally queue packets for a node without an
665     active connection, in the hope of establishing a connection soon. This
666     value specifies the maximum lifetime a packet will stay in the queue, if a
667     packet gets older, it will be thrown away.
668    
669 pcg 1.20 =item max-queue = positive-number>=1
670 pcg 1.18
671     The maximum number of packets that will be queued (default: C<512>)
672     for this node. If more packets are sent then earlier packets will be
673     expired. See C<max-ttl>, above.
674    
675 pcg 1.8 =item router-priority = 0 | 1 | positive-number>=2
676 pcg 1.1
677 pcg 1.20 Sets the router priority of the given node (default: C<0>, disabled).
678    
679     If some node tries to connect to another node but it doesn't have a
680     hostname, it asks a router node for it's IP address. The router node
681     chosen is the one with the highest priority larger than C<1> that is
682     currently reachable. This is called a I<mediated> connection, as the
683     connection itself will still be direct, but it uses another node to
684     mediate between the two nodes.
685 pcg 1.1
686 pcg 1.20 The value C<0> disables routing, that means if the node receives a packet
687     not for itself it will not forward it but instead drop it.
688 pcg 1.2
689     The special value C<1> allows other hosts to route through the router
690 pcg 1.20 host, but they will never route through it by default (i.e. the config
691     file of another node needs to specify a router priority higher than one
692     to choose such a node for routing).
693    
694     The idea behind this is that some hosts can, if required, bump the
695     C<router-priority> setting to higher than C<1> in their local config to
696     route through specific hosts. If C<router-priority> is C<0>, then routing
697     will be refused, so C<1> serves as a "enable, but do not use by default"
698     switch.
699    
700     Nodes with C<router-priority> set to C<2> or higher will always be forced
701     to C<connect> = C<always> (unless they are C<disabled>).
702 pcg 1.2
703 pcg 1.6 =item tcp-port = port-number
704 pcg 1.1
705 pcg 1.6 Similar to C<udp-port> (default: C<655>), but sets the TCP port number.
706 pcg 1.1
707 pcg 1.6 =item udp-port = port-number
708 pcg 1.1
709 pcg 1.6 Sets the port number used by the UDP protocol (default: C<655>, not
710     officially assigned by IANA!).
711 pcg 1.1
712     =back
713    
714     =head1 CONFIG DIRECTORY LAYOUT
715    
716     The default (or recommended) directory layout for the config directory is:
717    
718     =over 4
719    
720 pcg 1.22 =item gvpe.conf
721 pcg 1.1
722     The config file.
723    
724 pcg 1.22 =item if-up
725 pcg 1.1
726     The if-up script
727    
728 pcg 1.22 =item node-up, node-down
729 pcg 1.1
730     If used the node up or node-down scripts.
731    
732 pcg 1.22 =item hostkey
733 pcg 1.1
734     The private key (taken from C<hostkeys/nodename>) of the current host.
735    
736 pcg 1.22 =item pubkey/nodename
737 pcg 1.1
738     The public keys of the other nodes, one file per node.
739    
740     =back
741    
742     =head1 SEE ALSO
743    
744     gvpe(5), gvpe(8), gvpectrl(8).
745    
746     =head1 AUTHOR
747    
748 pcg 1.14 Marc Lehmann <gvpe@schmorp.de>
749 pcg 1.1