ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/doc/gvpe.conf.5.pod
Revision: 1.30
Committed: Tue Dec 4 13:23:17 2012 UTC (11 years, 5 months ago) by root
Branch: MAIN
Changes since 1.29: +1 -1 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     =item node = nickname
376    
377     Not really a config setting but introduces a node section. The nickname is
378     used to select the right configuration section and must be passed as an
379     argument to the gvpe daemon.
380    
381 pcg 1.1 =item node-up = relative-or-absolute-path
382    
383 pcg 1.19 Sets a command (default: none) that should be called whenever a connection
384     is established (even on rekeying operations). Note that node-up/down
385     scripts will be run asynchronously, but execution is serialised, so there
386     will only ever be one such script running.
387    
388     In addition to all the variables passed to C<if-up> scripts, the following
389 pcg 1.24 environment variables will be set (values are just examples):
390 pcg 1.1
391     =over 4
392    
393     =item DESTNODE=branch2
394    
395     The name of the remote node.
396    
397     =item DESTID=2
398    
399     The node id of the remote node.
400    
401 pcg 1.24 =item DESTSI=rawip/88.99.77.55:0
402    
403     The "socket info" of the target node, protocol dependent but usually in
404     the format protocol/ip:port.
405    
406 pcg 1.1 =item DESTIP=188.13.66.8
407    
408 pcg 1.20 The numerical IP address of the remote node (gvpe accepts connections from
409     everywhere, as long as the other node can authenticate itself).
410 pcg 1.1
411     =item DESTPORT=655 # deprecated
412    
413 pcg 1.24 The protocol port used by the other side, if applicable.
414 pcg 1.1
415 pcg 1.24 =item STATE=up
416 pcg 1.1
417 pcg 1.24 Node-up scripts get called with STATE=up, node-change scripts get called
418     with STATE=change and node-down scripts get called with STATE=down.
419 pcg 1.1
420     =back
421    
422     Here is a nontrivial example that uses nsupdate to update the name => ip
423 pcg 1.21 mapping in some DNS zone:
424 pcg 1.1
425     #!/bin/sh
426     {
427     echo update delete $DESTNODE.lowttl.example.net. a
428     echo update add $DESTNODE.lowttl.example.net. 1 in a $DESTIP
429 root 1.30 echo
430 pcg 1.1 } | nsupdate -d -k $CONFBASE:key.example.net.
431    
432 pcg 1.24 =item node-change = relative-or-absolute-path
433    
434     Same as C<node-change>, but gets called whenever something about a
435     connection changes (such as the source IP address).
436    
437 pcg 1.1 =item node-down = relative-or-absolute-path
438    
439     Same as C<node-up>, but gets called whenever a connection is lost.
440    
441 pcg 1.6 =item pid-file = path
442    
443     The path to the pid file to check and create
444     (default: C<LOCALSTATEDIR/run/gvpe.pid>).
445    
446     =item private-key = relative-path-to-key
447    
448     Sets the path (relative to the config directory) to the private key
449     (default: C<hostkey>). This is a printf format string so every C<%> must
450     be doubled. A single C<%s> is replaced by the hostname, so you could
451     use paths like C<hostkeys/%s> to fetch the files at the location where
452     C<gvpectrl> puts them.
453 pcg 1.1
454 pcg 1.6 Since only the private key file of the current node is used and the
455 pcg 1.21 private key file should be kept secret per-node to avoid spoofing, it is
456 pcg 1.6 not recommended to use this feature.
457 pcg 1.1
458 pcg 1.6 =item rekey = seconds
459 pcg 1.1
460 pcg 1.6 Sets the rekeying interval in seconds (default: C<3600>). Connections are
461 pcg 1.21 reestablished every C<rekey> seconds, making them use a new encryption
462     key.
463 pcg 1.1
464 pcg 1.23 =item nfmark = integer
465    
466     This advanced option, when set to a nonzero value (default: C<0>), tries
467     to set the netfilter mark (or fwmark) value on all sockets gvpe uses to
468     send packets.
469    
470     This can be used to make gvpe use a different set of routing rules. For
471     example, on GNU/Linux, the C<if-up> could set C<nfmark> to 1000 and then
472     put all routing rules into table C<99> and then use an ip rule to make
473     gvpe traffic avoid that routing table, in effect routing normal traffic
474     via gvpe and gvpe traffic via the normal system routing tables:
475    
476     ip rule add not fwmark 1000 lookup 99
477    
478 pcg 1.6 =back
479 pcg 1.1
480 pcg 1.6 =head2 NODE SPECIFIC SETTINGS
481 pcg 1.1
482 pcg 1.6 The following settings are node-specific, that is, every node can have
483     different settings, even within the same gvpe instance. Settings that are
484 pcg 1.15 set before the first node section set the defaults, settings that are
485     set within a node section only apply to the given node.
486 pcg 1.1
487 pcg 1.6 =over 4
488 pcg 1.1
489 pcg 1.15 =item allow-direct = nodename
490    
491     Allow direct connections to this node. See C<deny-direct> for more info.
492    
493 pcg 1.6 =item compress = yes|true|on | no|false|off
494 pcg 1.1
495 root 1.26 For the current node, this specified whether it will accept compressed
496     packets, and for all other nodes, this specifies whether to try to
497     compress data packets sent to this node (default: C<yes>). Compression is
498     really cheap even on slow computers, has no size overhead at all and will
499     only be used when the other side supports compression, so enabling this is
500     often a good idea.
501 pcg 1.1
502 pcg 1.6 =item connect = ondemand | never | always | disabled
503 pcg 1.1
504 pcg 1.6 Sets the connect mode (default: C<always>). It can be C<always> (always
505 pcg 1.20 try to establish and keep a connection to the given node), C<never>
506 pcg 1.6 (never initiate a connection to the given host, but accept connections),
507 pcg 1.18 C<ondemand> (try to establish a connection when there are outstanding
508     packets in the queue and take it down after the keepalive interval) or
509     C<disabled> (node is bad, don't talk to it).
510 pcg 1.1
511 pcg 1.20 Routers will automatically be forced to C<always> unless they are
512     C<disabled>, to ensure all nodes can talk to each other.
513    
514 pcg 1.15 =item deny-direct = nodename | *
515    
516     Deny direct connections to the specified node (or all nodes when C<*>
517     is given). Only one node can be specified, but you can use multiple
518     C<allow-direct> and C<deny-direct> statements. This only makes sense in
519     networks with routers, as routers are required for indirect connections.
520    
521     Sometimes, a node cannot reach some other nodes for reasons of network
522     connectivity. For example, a node behind a firewall that only allows
523 pcg 1.21 connections to/from a single other node in the network. In this case one
524 pcg 1.15 should specify C<deny-direct = *> and C<allow-direct = othernodename> (the other
525     node I<must> be a router for this to work).
526    
527 pcg 1.21 The algorithm to check whether a connection may be direct is as follows:
528 pcg 1.15
529 pcg 1.21 1. Other node mentioned in an C<allow-direct>? If yes, allow the connection.
530 pcg 1.15
531     2. Other node mentioned in a C<deny-direct>? If yes, deny direct connections.
532    
533     3. Allow the connection.
534    
535 pcg 1.16 That is, C<allow-direct> takes precedence over C<deny-direct>.
536 pcg 1.15
537     The check is done in both directions, i.e. both nodes must allow a direct
538     connection before one is attempted, so you only need to specify connect
539     limitations on one node.
540    
541 pcg 1.6 =item dns-domain = domain-suffix
542 pcg 1.1
543 pcg 1.7 The DNS domain suffix that points to the DNS tunnel server for this node.
544 pcg 1.1
545 pcg 1.6 The domain must point to a NS record that points to the I<dns-hostname>,
546     i.e.
547 pcg 1.1
548 pcg 1.6 dns-domainname = tunnel.example.net
549     dns-hostname = tunnel-server.example.net
550 pcg 1.1
551 pcg 1.6 Corresponds to the following DNS entries in the C<example.net> domain:
552 pcg 1.1
553 pcg 1.6 tunnel.example.net. NS tunnel-server.example.net.
554     tunnel-server.example.net. A 13.13.13.13
555 pcg 1.1
556 pcg 1.6 =item dns-hostname = hostname/ip
557 pcg 1.1
558 pcg 1.6 The address to bind the DNS tunnel socket to, similar to the C<hostname>,
559     but for the DNS tunnel protocol only. Default: C<0.0.0.0>, but that might
560     change.
561 pcg 1.1
562 pcg 1.6 =item dns-port = port-number
563 pcg 1.1
564 pcg 1.8 The port to bind the DNS tunnel socket to. Must be C<53> on DNS tunnel servers.
565 pcg 1.1
566 pcg 1.7 =item enable-dns = yes|true|on | no|false|off
567    
568 pcg 1.10 See gvpe.protocol(7) for a description of the DNS transport
569     protocol. Avoid this protocol if you can.
570    
571 pcg 1.8 Enable the DNS tunneling protocol on this node, either as server or as
572 pcg 1.10 client. Support for this transport protocol is only available when gvpe
573     was compiled using the C<--enable-dns> option.
574    
575     =item enable-icmp = yes|true|on | no|false|off
576    
577     See gvpe.protocol(7) for a description of the ICMP transport protocol.
578 pcg 1.8
579 pcg 1.21 Enable the ICMP transport using ICMP packets of type C<icmp-type> on this
580 pcg 1.10 node.
581 pcg 1.7
582 pcg 1.1 =item enable-rawip = yes|true|on | no|false|off
583    
584 pcg 1.10 See gvpe.protocol(7) for a description of the RAW IP transport protocol.
585    
586 pcg 1.1 Enable the RAW IPv4 transport using the C<ip-proto> protocol
587 pcg 1.10 (default: C<no>).
588 pcg 1.1
589 pcg 1.6 =item enable-tcp = yes|true|on | no|false|off
590    
591 pcg 1.10 See gvpe.protocol(7) for a description of the TCP transport protocol.
592    
593 pcg 1.6 Enable the TCPv4 transport using the C<tcp-port> port
594 pcg 1.10 (default: C<no>). Support for this transport protocol is only available
595     when gvpe was compiled using the C<--enable-tcp> option.
596 pcg 1.6
597 pcg 1.1 =item enable-udp = yes|true|on | no|false|off
598    
599 pcg 1.10 See gvpe.protocol(7) for a description of the UDP transport protocol.
600    
601 root 1.27 Enable the UDPv4 transport using the C<udp-port> port (default: C<no>).
602 pcg 1.15
603     =item hostname = hostname | ip [can not be defaulted]
604    
605 pcg 1.21 Forces the address of this node to be set to the given DNS hostname or IP
606 pcg 1.15 address. It will be resolved before each connect request, so dyndns should
607     work fine. If this setting is not specified and a router is available,
608     then the router will be queried for the address of this node. Otherwise,
609     the connection attempt will fail.
610 pcg 1.1
611 pcg 1.21 Note that DNS resolving is done synchronously, pausing the daemon. If that
612     is an issue you need to specify IP addresses.
613    
614 pcg 1.11 =item icmp-type = integer
615    
616     Sets the type value to be used for outgoing (and incoming) packets sent
617     via the ICMP transport.
618    
619     The default is C<0> (which is C<echo-reply>, also known as
620 pcg 1.21 "ping-reply"). Other useful values include C<8> (C<echo-request>, a.k.a.
621 pcg 1.11 "ping") and C<11> (C<time-exceeded>), but any 8-bit value can be used.
622    
623 pcg 1.13 =item if-up-data = value
624    
625     The value specified using this directive will be passed to the C<if-up>
626     script in the environment variable C<IFUPDATA>.
627    
628 pcg 1.6 =item inherit-tos = yes|true|on | no|false|off
629    
630 root 1.26 Whether to inherit the TOS settings of packets sent to the tunnel when
631 pcg 1.6 sending packets to this node (default: C<yes>). If set to C<yes> then
632     outgoing tunnel packets will have the same TOS setting as the packets sent
633     to the tunnel device, which is usually what you want.
634    
635     =item max-retry = positive-number
636 pcg 1.1
637 pcg 1.8 The maximum interval in seconds (default: C<3600>, one hour) between
638 pcg 1.6 retries to establish a connection to this node. When a connection cannot
639 pcg 1.21 be established, gvpe uses exponential back-off capped at this value. It's
640 pcg 1.6 sometimes useful to set this to a much lower value (e.g. C<120>) on
641     connections to routers that usually are stable but sometimes are down, to
642 pcg 1.8 assure quick reconnections even after longer downtimes.
643 pcg 1.1
644 pcg 1.18 =item max-ttl = seconds
645    
646     Expire packets that couldn't be sent after this many seconds
647     (default: C<60>). Gvpe will normally queue packets for a node without an
648     active connection, in the hope of establishing a connection soon. This
649     value specifies the maximum lifetime a packet will stay in the queue, if a
650     packet gets older, it will be thrown away.
651    
652 pcg 1.20 =item max-queue = positive-number>=1
653 pcg 1.18
654     The maximum number of packets that will be queued (default: C<512>)
655     for this node. If more packets are sent then earlier packets will be
656     expired. See C<max-ttl>, above.
657    
658 pcg 1.8 =item router-priority = 0 | 1 | positive-number>=2
659 pcg 1.1
660 pcg 1.20 Sets the router priority of the given node (default: C<0>, disabled).
661    
662     If some node tries to connect to another node but it doesn't have a
663     hostname, it asks a router node for it's IP address. The router node
664     chosen is the one with the highest priority larger than C<1> that is
665     currently reachable. This is called a I<mediated> connection, as the
666     connection itself will still be direct, but it uses another node to
667     mediate between the two nodes.
668 pcg 1.1
669 pcg 1.20 The value C<0> disables routing, that means if the node receives a packet
670     not for itself it will not forward it but instead drop it.
671 pcg 1.2
672     The special value C<1> allows other hosts to route through the router
673 pcg 1.20 host, but they will never route through it by default (i.e. the config
674     file of another node needs to specify a router priority higher than one
675     to choose such a node for routing).
676    
677     The idea behind this is that some hosts can, if required, bump the
678     C<router-priority> setting to higher than C<1> in their local config to
679     route through specific hosts. If C<router-priority> is C<0>, then routing
680     will be refused, so C<1> serves as a "enable, but do not use by default"
681     switch.
682    
683     Nodes with C<router-priority> set to C<2> or higher will always be forced
684     to C<connect> = C<always> (unless they are C<disabled>).
685 pcg 1.2
686 pcg 1.6 =item tcp-port = port-number
687 pcg 1.1
688 pcg 1.6 Similar to C<udp-port> (default: C<655>), but sets the TCP port number.
689 pcg 1.1
690 pcg 1.6 =item udp-port = port-number
691 pcg 1.1
692 pcg 1.6 Sets the port number used by the UDP protocol (default: C<655>, not
693     officially assigned by IANA!).
694 pcg 1.1
695     =back
696    
697     =head1 CONFIG DIRECTORY LAYOUT
698    
699     The default (or recommended) directory layout for the config directory is:
700    
701     =over 4
702    
703 pcg 1.22 =item gvpe.conf
704 pcg 1.1
705     The config file.
706    
707 pcg 1.22 =item if-up
708 pcg 1.1
709     The if-up script
710    
711 pcg 1.22 =item node-up, node-down
712 pcg 1.1
713     If used the node up or node-down scripts.
714    
715 pcg 1.22 =item hostkey
716 pcg 1.1
717     The private key (taken from C<hostkeys/nodename>) of the current host.
718    
719 pcg 1.22 =item pubkey/nodename
720 pcg 1.1
721     The public keys of the other nodes, one file per node.
722    
723     =back
724    
725     =head1 SEE ALSO
726    
727     gvpe(5), gvpe(8), gvpectrl(8).
728    
729     =head1 AUTHOR
730    
731 pcg 1.14 Marc Lehmann <gvpe@schmorp.de>
732 pcg 1.1