Massive long awaited documentation update. It's not finished yet,
most notably the example configuration is still old.
This commit is contained in:
parent
bc22ee16e6
commit
6ddc9109d7
1 changed files with 323 additions and 133 deletions
456
doc/tinc.texi
456
doc/tinc.texi
|
@ -1,5 +1,5 @@
|
||||||
\input texinfo @c -*-texinfo-*-
|
\input texinfo @c -*-texinfo-*-
|
||||||
@c $Id: tinc.texi,v 1.8.4.9 2000/11/30 23:39:55 zarq Exp $
|
@c $Id: tinc.texi,v 1.8.4.10 2000/12/05 08:54:22 zarq Exp $
|
||||||
@c %**start of header
|
@c %**start of header
|
||||||
@setfilename tinc.info
|
@setfilename tinc.info
|
||||||
@settitle tinc Manual
|
@settitle tinc Manual
|
||||||
|
@ -17,7 +17,7 @@ Copyright @copyright{} 1998,199,2000 Ivo Timmermans
|
||||||
<itimmermans@@bigfoot.com>, Guus Sliepen <guus@@sliepen.warande.net> and
|
<itimmermans@@bigfoot.com>, Guus Sliepen <guus@@sliepen.warande.net> and
|
||||||
Wessel Dankers <wsl@@nl.linux.org>.
|
Wessel Dankers <wsl@@nl.linux.org>.
|
||||||
|
|
||||||
$Id: tinc.texi,v 1.8.4.9 2000/11/30 23:39:55 zarq Exp $
|
$Id: tinc.texi,v 1.8.4.10 2000/12/05 08:54:22 zarq Exp $
|
||||||
|
|
||||||
Permission is granted to make and distribute verbatim copies of this
|
Permission is granted to make and distribute verbatim copies of this
|
||||||
manual provided the copyright notice and this permission notice are
|
manual provided the copyright notice and this permission notice are
|
||||||
|
@ -42,7 +42,7 @@ Copyright @copyright{} 1998,1999,2000 Ivo Timmermans
|
||||||
<itimmermans@@bigfoot.com>, Guus Sliepen <guus@@sliepen.warande.net> and
|
<itimmermans@@bigfoot.com>, Guus Sliepen <guus@@sliepen.warande.net> and
|
||||||
Wessel Dankers <wsl@@nl.linux.org>.
|
Wessel Dankers <wsl@@nl.linux.org>.
|
||||||
|
|
||||||
$Id: tinc.texi,v 1.8.4.9 2000/11/30 23:39:55 zarq Exp $
|
$Id: tinc.texi,v 1.8.4.10 2000/12/05 08:54:22 zarq Exp $
|
||||||
|
|
||||||
Permission is granted to make and distribute verbatim copies of this
|
Permission is granted to make and distribute verbatim copies of this
|
||||||
manual provided the copyright notice and this permission notice are
|
manual provided the copyright notice and this permission notice are
|
||||||
|
@ -403,6 +403,21 @@ to let configure know where they are, by passing configure one of the
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
|
||||||
|
@subsubheading License
|
||||||
|
|
||||||
|
Since the license under which OpenSSL is distributed is not directly
|
||||||
|
compatible with the terms of the GNU GPL
|
||||||
|
@uref{http://www.openssl.org/support/faq.html#LEGAL2}, therefore we
|
||||||
|
include an addition to the GPL (see also the file COPYING.README):
|
||||||
|
|
||||||
|
@quotation
|
||||||
|
This program is released under the GPL with the additional exemption
|
||||||
|
that compiling, linking, and/or using OpenSSL is allowed. You may
|
||||||
|
provide binary packages linked to the OpenSSL libraries, provided that
|
||||||
|
all other requirements of the GPL are met.
|
||||||
|
@end quotation
|
||||||
|
|
||||||
|
|
||||||
@c
|
@c
|
||||||
@c
|
@c
|
||||||
@c
|
@c
|
||||||
|
@ -427,7 +442,7 @@ the GNU General Public License (GPL). Download the source from the
|
||||||
the checksums of these files listed; you may wish to check these with
|
the checksums of these files listed; you may wish to check these with
|
||||||
md5sum before continuing.
|
md5sum before continuing.
|
||||||
|
|
||||||
tinc comes in a handy autoconf/automake package, which you can just
|
tinc comes in a convenient autoconf/automake package, which you can just
|
||||||
treat the same as any other package. Which is just untar it, type
|
treat the same as any other package. Which is just untar it, type
|
||||||
`configure' and then `make'.
|
`configure' and then `make'.
|
||||||
|
|
||||||
|
@ -453,7 +468,8 @@ found in the file called @file{INSTALL}.
|
||||||
@node System files, Interfaces, Building tinc, Installing tinc - installation
|
@node System files, Interfaces, Building tinc, Installing tinc - installation
|
||||||
@section System files
|
@section System files
|
||||||
|
|
||||||
Before you can run tinc, you
|
Before you can run tinc, you must make sure you have all the needed
|
||||||
|
files on your system.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Device files::
|
* Device files::
|
||||||
|
@ -652,89 +668,64 @@ and carriage returns are ignored. Note: it is not required that you put
|
||||||
in the `=' sign, but doing so improves readability. If you leave it
|
in the `=' sign, but doing so improves readability. If you leave it
|
||||||
out, remember to replace it with at least one space character.
|
out, remember to replace it with at least one space character.
|
||||||
|
|
||||||
|
In this section all valid variables are listed in alphabetical order.
|
||||||
|
The default value is given between parentheses; required directives are
|
||||||
|
given in @strong{bold}.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Variables::
|
* Main configuration variables::
|
||||||
|
* Host configuration variables::
|
||||||
|
* How to configure::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
|
|
||||||
@c ==================================================================
|
@c ==================================================================
|
||||||
@node Variables, , Configuration file, Configuration file
|
@node Main configuration variables, Host configuration variables, Configuration file, Configuration file
|
||||||
@subsection Variables
|
@subsection Main configuration variables
|
||||||
|
|
||||||
Here are all valid variables, listed in alphabetical order. The default
|
|
||||||
value, required or optional is given between parentheses.
|
|
||||||
|
|
||||||
@c straight from the manpage
|
|
||||||
@table @asis
|
@table @asis
|
||||||
@item ConnectPort = <port> (655)
|
@item @strong{ConnectTo = <name>}
|
||||||
Connect to the upstream host (given with the ConnectTo directive) on
|
Specifies which host to connect to on startup. Multiple ConnectTo
|
||||||
port port. port may be given in decimal (default), octal (when preceded
|
variables may be specified, if connecting to the first one fails then
|
||||||
by a single zero) or hexadecimal (prefixed with 0x). port is the port
|
tinc will try the next one, and so on. It is possible to specify
|
||||||
number for both the UDP and the TCP (meta) connections.
|
hostnames for dynamic IP addresses (like those given on dyndns.org),
|
||||||
|
tinc will not cache the resolved IP address.
|
||||||
@item ConnectTo = <IP address|hostname> (optional)
|
|
||||||
Specifies which host to connect to on startup. Multiple ConnectTo variables
|
|
||||||
may be specified, if connecting to the first one fails then tinc will try
|
|
||||||
the next one, and so on. It is possible to specify hostnames for dynamic IP
|
|
||||||
addresses (like those given on dyndns.org), tinc will not cache the resolved
|
|
||||||
IP address.
|
|
||||||
|
|
||||||
If you don't specify a host with ConnectTo, regardless of whether a
|
If you don't specify a host with ConnectTo, regardless of whether a
|
||||||
value for ConnectPort is given, tinc won't connect at all, and will
|
value for ConnectPort is given, tinc won't connect at all, and will
|
||||||
instead just listen for incoming connections.
|
instead just listen for incoming connections.
|
||||||
|
|
||||||
@item Hostnames = <yes|no> (no)
|
@item Hostnames = <yes|no> (no)
|
||||||
This option selects whether IP addresses (both real and on the VPN) should
|
This option selects whether IP addresses (both real and on the VPN)
|
||||||
be resolved. Since DNS lookups are blocking, it might affect tinc's
|
should be resolved. Since DNS lookups are blocking, it might affect
|
||||||
efficiency, even stopping the daemon for a few seconds everytime it does
|
tinc's efficiency, even stopping the daemon for a few seconds everytime
|
||||||
a lookup if your DNS server is not responding.
|
it does a lookup if your DNS server is not responding.
|
||||||
|
|
||||||
This does not affect resolving hostnames to IP addresses from the configuration
|
This does not affect resolving hostnames to IP addresses from the
|
||||||
file.
|
configuration file.
|
||||||
|
|
||||||
@item IndirectData = <yes|no> (no)
|
@item Interface = <device>
|
||||||
This option specifies whether other tinc daemons besides the one you
|
If you have more than one network interface in your computer, tinc will
|
||||||
specified with ConnectTo can make a direct connection to you. This is
|
by default listen on all of them for incoming connections. It is
|
||||||
especially useful if you are behind a firewall and it is impossible
|
possible to bind tinc to a single interface like eth0 or ppp0 with this
|
||||||
to make a connection from the outside to your tinc daemon. Otherwise,
|
variable.
|
||||||
it is best to leave this option out or set it to no.
|
|
||||||
|
|
||||||
@item Interface = <device> (optional)
|
@item InterfaceIP = <local address>
|
||||||
If you have more than one network interface in your computer, tinc will by
|
If your computer has more than one IP address on a single interface (for
|
||||||
default listen on all of them for incoming connections. It is possible to
|
example if you are running virtual hosts), tinc will by default listen
|
||||||
bind tinc to a single interface like eth0 or ppp0 with this variable.
|
on all of them for incoming connections. It is possible to bind tinc to
|
||||||
|
a single IP address with this variable. It is still possible to listen
|
||||||
@item InterfaceIP = <local address> (optional)
|
on several interfaces at the same time though, if they share the same IP
|
||||||
If your computer has more than one IP address on a single interface (for example
|
address.
|
||||||
if you are running virtual hosts), tinc will by default listen on all of them for
|
|
||||||
incoming connections. It is possible to bind tinc to a single IP address with
|
|
||||||
this variable. It is still possible to listen on several interfaces at the same
|
|
||||||
time though, if they share the same IP address.
|
|
||||||
|
|
||||||
@item KeyExpire = <seconds> (3600)
|
@item KeyExpire = <seconds> (3600)
|
||||||
This option controls the time the encryption keys used to encrypt the data
|
This option controls the time the encryption keys used to encrypt the
|
||||||
are valid. It is common practice to change keys at regular intervals to
|
data are valid. It is common practice to change keys at regular
|
||||||
make it even harder for crackers, even though it is thought to be nearly
|
intervals to make it even harder for crackers, even though it is thought
|
||||||
impossible to crack a single key.
|
to be nearly impossible to crack a single key.
|
||||||
|
|
||||||
@item ListenPort = <port> (655)
|
@item @strong{Name = <name>}
|
||||||
Listen on local port port. The computer connecting to this daemon should
|
This is a symbolic name for this connection. It can be anything
|
||||||
use this number as the argument for his ConnectPort.
|
|
||||||
|
|
||||||
@item MyOwnVPNIP = <local address[/maskbits]> (required)
|
|
||||||
The local address is the number that the daemon will propagate to
|
|
||||||
other daemons on the network when it is identifying itself. Hence this
|
|
||||||
will be the file name of the passphrase file that the other end expects
|
|
||||||
to find the passphrase in.
|
|
||||||
|
|
||||||
The local address is the IP address of the tap device, not the real IP
|
|
||||||
address of the host running tincd. Due to changes in recent kernels, it
|
|
||||||
is also necessary that you make the ethernet (also known as MAC) address
|
|
||||||
equal to the IP address (see the example).
|
|
||||||
|
|
||||||
maskbits is the number of bits set to 1 in the netmask part.
|
|
||||||
|
|
||||||
@item MyVirtualIP = <local address[/maskbits]>
|
|
||||||
This is an alias for MyOwnVPNIP.
|
|
||||||
|
|
||||||
@item PingTimeout = <seconds> (5)
|
@item PingTimeout = <seconds> (5)
|
||||||
The number of seconds of inactivity that tinc will wait before sending a
|
The number of seconds of inactivity that tinc will wait before sending a
|
||||||
|
@ -742,41 +733,153 @@ probe to the other end. If that other end doesn't answer within that
|
||||||
same amount of seconds, the connection is terminated, and the others
|
same amount of seconds, the connection is terminated, and the others
|
||||||
will be notified of this.
|
will be notified of this.
|
||||||
|
|
||||||
@item PrivateKey = <key>
|
@item @strong{PrivateKey = <path>}
|
||||||
This is a sequence of hexadecimal numbers, as generated by ``tincd
|
This is the full path name of the RSA private key file that was
|
||||||
--generate-keys''. Please be careful with line breaking, the entire key
|
generated by ``tincd --generate-keys''. It must be a full path, not a
|
||||||
should be on one line.
|
relative directory. (NOTE: In version 1.0pre3, this variable was used
|
||||||
|
to give the key inline. This is no longer supported.)
|
||||||
@item PublicKey = <key>
|
|
||||||
This is a sequence of hexadecimal numbers, as generated by ``tincd
|
|
||||||
--generate-keys''. Please be careful with line breaking, the entire key
|
|
||||||
should be on one line.
|
|
||||||
|
|
||||||
@item TapDevice = <device> (/dev/tap0)
|
@item TapDevice = <device> (/dev/tap0)
|
||||||
The ethertap device to use. Note that you can only use one device per
|
The ethertap device to use. Note that you can only use one device per
|
||||||
daemon. The info pages of the tinc package contain more information
|
daemon. The info pages of the tinc package contain more information
|
||||||
about configuring an ethertap device for Linux.
|
about configuring an ethertap device for Linux.
|
||||||
|
|
||||||
@item TCPonly = <yes|no> (no, experimental)
|
@item VpnMask = <mask>
|
||||||
If this variable is set to yes, then the packets are tunnelled over a TCP
|
The mask that defines the scope of the entire VPN. This option is not
|
||||||
connection instead of a UDP connection. This is especially useful for those
|
used by the tinc daemon itself, but can be used by startup scripts to
|
||||||
who want to run a tinc daemon from behind a masquerading firewall, or if
|
configure the ethertap devices correctly.
|
||||||
UDP packet routing is disabled somehow. This is experimental code,
|
|
||||||
try this at your own risk.
|
|
||||||
|
|
||||||
@item VpnMask = <mask> (optional)
|
|
||||||
The mask that defines the scope of the entire VPN. This option is not used
|
|
||||||
by the tinc daemon itself, but can be used by startup scripts to configure
|
|
||||||
the ethertap devices correctly.
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
|
|
||||||
|
@c ==================================================================
|
||||||
|
@node Host configuration variables, How to configure, Main configuration variables, Configuration file
|
||||||
|
@subsection Host configuration variables
|
||||||
|
|
||||||
|
@table @asis
|
||||||
|
@item @strong{Address = <IP address|hostname>}
|
||||||
|
This variable is only required if you want to connect to this host. It
|
||||||
|
must resolve to the external IP address where the host can be reached,
|
||||||
|
not the one that is internal to the VPN.
|
||||||
|
|
||||||
|
@item IndirectData = <yes|no> (no)
|
||||||
|
This option specifies whether other tinc daemons besides the one you
|
||||||
|
specified with ConnectTo can make a direct connection to you. This is
|
||||||
|
especially useful if you are behind a firewall and it is impossible to
|
||||||
|
make a connection from the outside to your tinc daemon. Otherwise, it
|
||||||
|
is best to leave this option out or set it to no.
|
||||||
|
|
||||||
|
@item Port = <port> (655)
|
||||||
|
Connect to the upstream host (given with the ConnectTo directive) on
|
||||||
|
port port. port may be given in decimal (default), octal (when preceded
|
||||||
|
by a single zero) o hexadecimal (prefixed with 0x). port is the port
|
||||||
|
number for both the UDP and the TCP (meta) connections.
|
||||||
|
|
||||||
|
@item PublicKey = <path>
|
||||||
|
This is the full path name of the RSA public key file that was generated
|
||||||
|
by ``tincd --generate-keys''. It must be a full path, not a relative
|
||||||
|
directory. (NOTE: In version 1.0pre3, this variable was used to give
|
||||||
|
the key inline. This is no longer supported.)
|
||||||
|
|
||||||
|
@item Subnet = <IP address/maskbits>
|
||||||
|
This is the subnet range of all IP addresses that will be accepted by
|
||||||
|
the host that defines it. Please be careful that no two subnets
|
||||||
|
overlap. Every host @strong{must} have a different range of IP
|
||||||
|
addresses that it can handle, otherwise you will see messages like
|
||||||
|
`packet comes back to us'.
|
||||||
|
|
||||||
|
The range must contain the IP address of the tap device, not the real IP
|
||||||
|
address of the host running tincd.
|
||||||
|
|
||||||
|
maskbits is the number of bits set to 1 in the netmask part; for
|
||||||
|
example: netmask 255.255.255.0 would become /24, 255.255.252.0 becomes
|
||||||
|
/22.
|
||||||
|
|
||||||
|
@item TCPonly = <yes|no> (no)
|
||||||
|
If this variable is set to yes, then the packets are tunnelled over a
|
||||||
|
TCP connection instead of a UDP connection. This is especially useful
|
||||||
|
for those who want to run a tinc daemon from behind a masquerading
|
||||||
|
firewall, or if UDP packet routing is disabled somehow. @emph{This is
|
||||||
|
experimental code, try this at your own risk.}
|
||||||
|
@end table
|
||||||
|
|
||||||
|
|
||||||
|
@c ==================================================================
|
||||||
|
@node How to configure, , Host configuration variables, Configuration file
|
||||||
|
@subsection How to configure
|
||||||
|
|
||||||
|
@subsubheading Step 1. Creating the key files
|
||||||
|
|
||||||
|
For each host, you have to create a pair of RSA keys. One key is your
|
||||||
|
private key, which is only known to you. The other one is the public
|
||||||
|
key, which you should copy to all hosts wanting to authenticate to you.
|
||||||
|
|
||||||
|
|
||||||
|
@subsubheading Step 2. Configuring each host
|
||||||
|
|
||||||
|
For every host in the VPN, you have to create two files. First there is
|
||||||
|
the main configuration file, @file{/etc/tinc/vpn-name/tinc.conf}. In
|
||||||
|
this file there should at least be three directives:
|
||||||
|
|
||||||
|
@table @samp
|
||||||
|
@item Name
|
||||||
|
You should fill in the name of this host (or rather, the name of this
|
||||||
|
leaf of the VPN). It can be called after the hostname, the physical
|
||||||
|
location, the department, or the name of one of your boss' pets. It can
|
||||||
|
be anything, as long as all these names are unique across the entire
|
||||||
|
VPN.
|
||||||
|
|
||||||
|
@item PrivateKey
|
||||||
|
Fill in the full pathname to the file that contains the private RSA key.
|
||||||
|
|
||||||
|
@item ConnectTo
|
||||||
|
This is the name of the host that you want to connect to (not a DNS
|
||||||
|
name, rather the name that is given with the Name parameter in that
|
||||||
|
hosts tinc.conf). This is the upstream connection. If your computer is
|
||||||
|
a central node, you might want to leave this out to make it stay idle
|
||||||
|
until someone connects to it.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@cindex host configuration file
|
||||||
|
Then you should create a file with the name you gave yourself in
|
||||||
|
tinc.conf (the `Name' parameter), located in
|
||||||
|
@file{/etc/tinc/vpn-name/hosts/}. In this file, which we call the
|
||||||
|
`@emph{host configuration file}', only one variable is required:
|
||||||
|
|
||||||
|
@table @samp
|
||||||
|
@item Subnet
|
||||||
|
The IP range that this host accepts as being `local'. All packets with
|
||||||
|
a destination address that is within this subnet will be sent to us.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
|
||||||
|
@subsubheading Step 3. Bringing it all together
|
||||||
|
|
||||||
|
Now for all hosts that you want to create a direct connection to, -- you
|
||||||
|
connect to them or they connect to you -- you get a copy of their host
|
||||||
|
configuration file and their public RSA key.
|
||||||
|
|
||||||
|
For each host configuration file, you add two variables:
|
||||||
|
|
||||||
|
@table @samp
|
||||||
|
@item Address
|
||||||
|
Enter the IP address or DNS hostname for this host. This is only needed
|
||||||
|
if you connect to this host.
|
||||||
|
|
||||||
|
@item PublicKey
|
||||||
|
Put the full pathname to this hosts public RSA key here.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
When you did this, you should be ready to create your first connection.
|
||||||
|
Pay attention to the system log, most errors will only be visible
|
||||||
|
there. If you get an error, you can check @ref{Error messages}.
|
||||||
|
|
||||||
|
|
||||||
@c ==================================================================
|
@c ==================================================================
|
||||||
@node Example, , Configuration file, Configuring tinc
|
@node Example, , Configuration file, Configuring tinc
|
||||||
@section Example
|
@section Example
|
||||||
|
|
||||||
|
|
||||||
|
@cindex example
|
||||||
Imagine the following situation. An A-based company wants to connect
|
Imagine the following situation. An A-based company wants to connect
|
||||||
three branch offices in B, C and D using the internet. All four offices
|
three branch offices in B, C and D using the internet. All four offices
|
||||||
have a 24/7 connection to the internet.
|
have a 24/7 connection to the internet.
|
||||||
|
@ -798,10 +901,10 @@ need to run tincd, but it must do a port forwarding of TCP&UDP on port
|
||||||
655 (unless otherwise configured).
|
655 (unless otherwise configured).
|
||||||
|
|
||||||
In this example, it is assumed that eth0 is the interface that points to
|
In this example, it is assumed that eth0 is the interface that points to
|
||||||
the inner LAN of the office, although this could also be the same as the
|
the inner (physical) LAN of the office, although this could also be the
|
||||||
interface that leads to the internet. The configuration of the real
|
same as the interface that leads to the internet. The configuration of
|
||||||
interface is also shown as a comment, to give you an idea of how these
|
the real interface is also shown as a comment, to give you an idea of
|
||||||
example host is set up.
|
how these example host is set up.
|
||||||
|
|
||||||
@subsubheading For A
|
@subsubheading For A
|
||||||
|
|
||||||
|
@ -809,32 +912,41 @@ example host is set up.
|
||||||
|
|
||||||
@example
|
@example
|
||||||
#ifconfig eth0 10.1.54.1 netmask 255.255.0.0 broadcast 10.1.255.255
|
#ifconfig eth0 10.1.54.1 netmask 255.255.0.0 broadcast 10.1.255.255
|
||||||
ifconfig tap0 hw ether fe:fd:0a:01:36:01
|
ifconfig tap0 hw ether fe:fd:00:00:00:00
|
||||||
ifconfig tap0 10.1.54.1 netmask 255.0.0.0
|
ifconfig tap0 10.1.54.1 netmask 255.0.0.0
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
and in /etc/tinc/tinc.conf:
|
and in /etc/tinc/tinc.conf:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
TapDevice = /dev/tap0
|
Name = A
|
||||||
MyVirtualIP = 10.1.54.1/16
|
PrivateKey = /etc/tinc/A.priv
|
||||||
VpnMask = 255.0.0.0
|
VpnMask = 255.0.0.0
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
On all hosts, /etc/tinc/hosts/A contains:
|
||||||
|
|
||||||
|
@example
|
||||||
|
Subnet = 10.1.0.0/16
|
||||||
|
Address = 1.2.3.4
|
||||||
|
PublicKey = /etc/tinc/hosts/A.pub
|
||||||
|
@end example
|
||||||
|
|
||||||
|
|
||||||
@subsubheading For B
|
@subsubheading For B
|
||||||
|
|
||||||
@example
|
@example
|
||||||
#ifconfig eth0 10.2.43.8 netmask 255.255.0.0 broadcast 10.2.255.255
|
#ifconfig eth0 10.2.43.8 netmask 255.255.0.0 broadcast 10.2.255.255
|
||||||
ifconfig tap0 hw ether fe:fd:0a:02:01:0c
|
ifconfig tap0 hw ether fe:fd:00:00:00:00
|
||||||
ifconfig tap0 10.2.1.12 netmask 255.0.0.0
|
ifconfig tap0 10.2.1.12 netmask 255.0.0.0
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
and in /etc/tinc/tinc.conf:
|
and in /etc/tinc/tinc.conf:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
TapDevice = /dev/tap0
|
Name = B
|
||||||
MyVirtualIP = 10.2.1.12/16
|
ConnectTo = A
|
||||||
ConnectTo = 1.2.3.4
|
PrivateKey = /etc/tinc/B.priv
|
||||||
VpnMask = 255.0.0.0
|
VpnMask = 255.0.0.0
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
@ -842,29 +954,46 @@ Note here that the internal address (on eth0) doesn't have to be the
|
||||||
same as on the tap0 device. Also, ConnectTo is given so that no-one can
|
same as on the tap0 device. Also, ConnectTo is given so that no-one can
|
||||||
connect to this node.
|
connect to this node.
|
||||||
|
|
||||||
|
On all hosts, /etc/tinc/hosts/B:
|
||||||
|
|
||||||
|
@example
|
||||||
|
Subnet = 10.2.0.0/16
|
||||||
|
Address = 2.3.4.5
|
||||||
|
PublicKey = /etc/tinc/hosts/B.pub
|
||||||
|
@end example
|
||||||
|
|
||||||
|
|
||||||
@subsubheading For C
|
@subsubheading For C
|
||||||
|
|
||||||
@example
|
@example
|
||||||
#ifconfig eth0 10.3.69.254 netmask 255.255.0.0 broadcast 10.3.255.255
|
#ifconfig eth0 10.3.69.254 netmask 255.255.0.0 broadcast 10.3.255.255
|
||||||
ifconfig tap0 hw ether fe:fd:0a:03:45:fe
|
ifconfig tap0 hw ether fe:fd:00:00:00:00
|
||||||
ifconfig tap0 10.3.69.254 netmask 255.0.0.0
|
ifconfig tap0 10.3.69.254 netmask 255.0.0.0
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
and in /etc/tinc/A/tinc.conf:
|
and in /etc/tinc/A/tinc.conf:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
MyVirtualIP = 10.3.69.254/16
|
Name = C
|
||||||
|
ConnectTo = A
|
||||||
TapDevice = /dev/tap1
|
TapDevice = /dev/tap1
|
||||||
ConnectTo = 1.2.3.4
|
|
||||||
ListenPort = 2000
|
|
||||||
VpnMask = 255.0.0.0
|
VpnMask = 255.0.0.0
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
C already has another daemon that runs on port 655, so they have to
|
C already has another daemon that runs on port 655, so they have to
|
||||||
reserve another port for tinc. It can connect to other tinc daemons on
|
reserve another port for tinc. It can connect to other tinc daemons on
|
||||||
the regular port though, so no ConnectPort variable is needed.
|
the regular port though, so no ConnectPort variable is needed. They
|
||||||
They also use the netname to distinguish
|
also use the netname to distinguish between the two. tinc is started
|
||||||
between the two. tinc is started with `tincd -n A'.
|
with `tincd -n A'.
|
||||||
|
|
||||||
|
On all hosts, /etc/tinc/hosts/C:
|
||||||
|
|
||||||
|
@example
|
||||||
|
Subnet = 10.3.0.0/16
|
||||||
|
Port = 2000
|
||||||
|
PublicKey = /etc/tinc/hosts/C.pub
|
||||||
|
@end example
|
||||||
|
|
||||||
|
|
||||||
@subsubheading For D
|
@subsubheading For D
|
||||||
|
|
||||||
|
@ -887,7 +1016,7 @@ D will be connecting to C, which has a tincd running for this network on
|
||||||
port 2000. Hence they need to put in a ConnectPort, but it doesn't need
|
port 2000. Hence they need to put in a ConnectPort, but it doesn't need
|
||||||
to have a different ListenPort.
|
to have a different ListenPort.
|
||||||
|
|
||||||
@subsubheading Authentication
|
@subsubheading Key files
|
||||||
|
|
||||||
A, B, C and D all generate a passphrase with genauth 2048, the output is
|
A, B, C and D all generate a passphrase with genauth 2048, the output is
|
||||||
stored in /etc/tinc/passphrases/local, except for C, where it should be
|
stored in /etc/tinc/passphrases/local, except for C, where it should be
|
||||||
|
@ -924,6 +1053,7 @@ project that involves trust relations and more than one computer.
|
||||||
@menu
|
@menu
|
||||||
* Managing keys::
|
* Managing keys::
|
||||||
* Runtime options::
|
* Runtime options::
|
||||||
|
* Error messages::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
|
|
||||||
|
@ -970,7 +1100,7 @@ should still be called 10.1.1.3, and not 10.1.0.0.
|
||||||
|
|
||||||
|
|
||||||
@c ==================================================================
|
@c ==================================================================
|
||||||
@node Runtime options, , Managing keys, Running tinc
|
@node Runtime options, Error messages, Managing keys, Running tinc
|
||||||
@section Runtime options
|
@section Runtime options
|
||||||
|
|
||||||
Besides the settings in the configuration file, tinc also accepts some
|
Besides the settings in the configuration file, tinc also accepts some
|
||||||
|
@ -979,8 +1109,11 @@ command line options.
|
||||||
This list is a longer version of that in the manpage. The latter is
|
This list is a longer version of that in the manpage. The latter is
|
||||||
generated automatically, so may be more up-to-date.
|
generated automatically, so may be more up-to-date.
|
||||||
|
|
||||||
|
@cindex command line
|
||||||
|
@cindex runtime options
|
||||||
|
@cindex options
|
||||||
@c from the manpage
|
@c from the manpage
|
||||||
@table @asis
|
@table @samp
|
||||||
@item -c, --config=FILE
|
@item -c, --config=FILE
|
||||||
Read configuration options from FILE. The default is
|
Read configuration options from FILE. The default is
|
||||||
@file{/etc/tinc/nn/tinc.conf}.
|
@file{/etc/tinc/nn/tinc.conf}.
|
||||||
|
@ -998,10 +1131,11 @@ packets themselves.
|
||||||
|
|
||||||
@item -k, --kill
|
@item -k, --kill
|
||||||
Attempt to kill a running tincd and exit. A TERM signal (15) gets sent
|
Attempt to kill a running tincd and exit. A TERM signal (15) gets sent
|
||||||
to the daemon that his its PID in /var/run/tinc.nn.pid.
|
to the daemon that his its PID in /var/run/tinc.pid.
|
||||||
|
|
||||||
Because it kills only one tincd, you should use -n here if you use it
|
Because it kills only one tinc daemon, you should use -n here if you
|
||||||
normally.
|
started it that way. It will then read the PID from
|
||||||
|
@file{/var/run/tinc.NETNAME.pid}.
|
||||||
|
|
||||||
@item -n, --net=NETNAME
|
@item -n, --net=NETNAME
|
||||||
Connect to net NETNAME. @xref{Multiple networks}.
|
Connect to net NETNAME. @xref{Multiple networks}.
|
||||||
|
@ -1021,19 +1155,84 @@ Output version information and exit.
|
||||||
|
|
||||||
|
|
||||||
@c ==================================================================
|
@c ==================================================================
|
||||||
@node Technical information, About us, Running tinc, Top
|
@node Error messages, , Runtime options, Running tinc
|
||||||
@chapter Technical information
|
@section Error messages
|
||||||
|
|
||||||
|
What follows is a list of the most common error messages you can see
|
||||||
|
when configuring tinc. Most of these messages are visible in the syslog
|
||||||
|
only, so keep an eye on it!
|
||||||
|
|
||||||
|
@table @strong
|
||||||
|
@item Could not open /dev/tap0: No such device
|
||||||
|
@table @bullet
|
||||||
|
@item You forgot to insmod netlink_dev.o
|
||||||
|
@item You forgot to compile `Netlink device emulation' in the kernel
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@item Can't write to tun/tap device: No such device
|
||||||
|
@table @bullet
|
||||||
|
@item You forgot to insmod tun.o
|
||||||
|
@item You forgot to compile `Universal TUN/TAP driver' in the kernel
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@item Packet with destination 1.2.3.4 is looping back to us!
|
||||||
|
@table @bullet
|
||||||
|
@item Some host has an IP address range that overlaps with yours
|
||||||
|
Different hosts must have different IP ranges (as given with Subnet in
|
||||||
|
the host configuration files). tinc relies on this information to route
|
||||||
|
its data, so each IP address range must have exactly one host
|
||||||
|
associated. You will only see this message if you specified a debug
|
||||||
|
level of 5 or higher!
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@item Network address and subnet mask do not match!
|
||||||
|
@table @bullet
|
||||||
|
@item The Subnet field must contain a network address
|
||||||
|
If you only want to use one IP address, set the netmask to /32.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@item This is a bug: net.c:253: 24: Some error
|
||||||
|
@table @bullet
|
||||||
|
@item This is something that should not have happened
|
||||||
|
Please report this, and tell us exactly what went wrong before you got
|
||||||
|
this message. In normal operation, these errors should not occur.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@item Error reading RSA key file `rsa_key.priv': No such file or directory
|
||||||
|
@table @bullet
|
||||||
|
@item You must specify the complete pathname
|
||||||
|
Specifying a relative path does not make sense here. tinc changes its
|
||||||
|
directory to / when starting (to avoid keeping a mount point busy); and
|
||||||
|
even if we built in a default directory to look for these files, the key
|
||||||
|
files are bound to be in a different directory.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@item Error reading RSA key file `fd47...8ceb': No such file or directory
|
||||||
|
@table @bullet
|
||||||
|
@item You specified the key here, not a pathname
|
||||||
|
In version 1.0pre3, you had to put your key here. This has changed, the
|
||||||
|
keys are now stored in separate files. This means you have to
|
||||||
|
regenerate these keys.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@end table
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@c ==================================================================
|
@c ==================================================================
|
||||||
|
@node Technical information, About us, Running tinc, Top
|
||||||
|
@chapter Technical information
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* The Connection::
|
* The Connection::
|
||||||
* Security::
|
* Security::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
|
|
||||||
|
@c ==================================================================
|
||||||
@node The Connection, Security, Technical information, Technical information
|
@node The Connection, Security, Technical information, Technical information
|
||||||
@section The basic philosophy of the way tinc works
|
@section The basic philosophy of the way tinc works
|
||||||
@cindex Connection
|
@cindex connection
|
||||||
|
|
||||||
tinc is a daemon that takes VPN data and transmit that to another host
|
tinc is a daemon that takes VPN data and transmit that to another host
|
||||||
computer over the existing Internet infrastructure.
|
computer over the existing Internet infrastructure.
|
||||||
|
@ -1098,7 +1297,7 @@ meta-information doesn't get lost on the way to another computer.
|
||||||
@cindex data-protocol
|
@cindex data-protocol
|
||||||
@cindex meta-protocol
|
@cindex meta-protocol
|
||||||
Like with any communication, we must have a protocol, so that everybody
|
Like with any communication, we must have a protocol, so that everybody
|
||||||
knows what everything stands for, an how he should react. Because we
|
knows what everything stands for, and how she should react. Because we
|
||||||
have two connections, we also have two protocols. The protocol used for
|
have two connections, we also have two protocols. The protocol used for
|
||||||
the UDP data is the ``data-protocol,'' the other one is the
|
the UDP data is the ``data-protocol,'' the other one is the
|
||||||
``meta-protocol.''
|
``meta-protocol.''
|
||||||
|
@ -1134,7 +1333,6 @@ don't take it too serious.
|
||||||
* Key Types::
|
* Key Types::
|
||||||
* Key Management::
|
* Key Management::
|
||||||
* Authentication::
|
* Authentication::
|
||||||
* Protection::
|
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@c ==================================================================
|
@c ==================================================================
|
||||||
|
@ -1152,7 +1350,7 @@ the private key that matches the public key. So, a public key only allows
|
||||||
@emph{other} people to send encrypted messages to you. This is very useful
|
@emph{other} people to send encrypted messages to you. This is very useful
|
||||||
in setting up private communications channels. Just send out your public key
|
in setting up private communications channels. Just send out your public key
|
||||||
and other people can talk to you in a secure way. But how can you know
|
and other people can talk to you in a secure way. But how can you know
|
||||||
the other person is who he says he is?
|
the other person is who she says she is?
|
||||||
|
|
||||||
For authentication itself tinc uses symmetric private keypairs, referred
|
For authentication itself tinc uses symmetric private keypairs, referred
|
||||||
to as a passphrase. The identity of each tinc daemon is defined by it's
|
to as a passphrase. The identity of each tinc daemon is defined by it's
|
||||||
|
@ -1200,7 +1398,7 @@ should be 2^129-1 or more.
|
||||||
|
|
||||||
|
|
||||||
@c ==================================================================
|
@c ==================================================================
|
||||||
@node Authentication, Protection, Key Management, Security
|
@node Authentication, , Key Management, Security
|
||||||
@subsection Authentication
|
@subsection Authentication
|
||||||
@c FIXME: recheck
|
@c FIXME: recheck
|
||||||
|
|
||||||
|
@ -1233,15 +1431,6 @@ identity of the person who owns the email address you are sending this to.
|
||||||
Swapping floppy disks in real life might be the best way to do this!
|
Swapping floppy disks in real life might be the best way to do this!
|
||||||
|
|
||||||
|
|
||||||
@c ==================================================================
|
|
||||||
@node Protection, , Authentication, Security
|
|
||||||
@subsection Protecting your data
|
|
||||||
|
|
||||||
Now we have securely hidden our data. But a malicious cracker may still
|
|
||||||
bother you by randomly altering the encrypted data he intercepts.
|
|
||||||
|
|
||||||
@c FIXME what the hell is this all about? remove? IT
|
|
||||||
|
|
||||||
@c ==================================================================
|
@c ==================================================================
|
||||||
@node About us, Concept Index, Technical information, Top
|
@node About us, Concept Index, Technical information, Top
|
||||||
@chapter About us
|
@chapter About us
|
||||||
|
@ -1281,9 +1470,10 @@ General obfuscater of the code.
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
Thank you's to: Dekan, Emphyrio, vDong
|
We have received a lot of valuable input from users. With their help,
|
||||||
|
tinc has become the flexible and robust tool that it is today. We have
|
||||||
Greetings to: braque, Fluor, giggles, macro, smoke, tribbel
|
composed a list of contributions, in the file called @file{THANKS} in
|
||||||
|
the source distribution.
|
||||||
|
|
||||||
|
|
||||||
@c ==================================================================
|
@c ==================================================================
|
||||||
|
|
Loading…
Reference in a new issue