Import release 0.1.11
[secnet] / INSTALL
... / ...
CommitLineData
1INSTALLATION INSTRUCTIONS for SECNET
2
3USE AT YOUR OWN RISK. THIS IS ALPHA TEST SOFTWARE. I DO NOT
4GUARANTEE THAT THERE WILL BE PROTOCOL COMPATIBILITY BETWEEN DIFFERENT
5VERSIONS.
6
7PROTOCOL COMPATIBILITY WAS BROKEN BETWEEN secnet-0.06, secnet-0.07 AND
8secnet-0.08 FOR ENDIANNESS FIXES.
9
10THERE WILL BE ANOTHER CHANGE IN PROTOCOL IN THE secnet-0.1.x SERIES
11
12* Preparation
13
14** System software support
15
16Ensure that you have libgmp2-dev and adns installed (and bison and
17flex, and for that matter gcc...).
18
19[On BSD install /usr/ports/devel/bison]
20
21If you intend to configure secnet to obtain packets from the kernel
22through userv-ipif, install and configure userv-ipif. It is part of
23userv-utils, available from ftp.chiark.greenend.org.uk in
24/users/ian/userv
25
26If you intend to configure secnet to obtain packets from the kernel
27using the universal TUN/TAP driver, make sure it's configured in your
28kernel (it's under "network device support" in Linux-2.4) and that
29you've created the appropriate device files; see
30linux/Documentation/networking/tuntap.txt
31
32If you're using TUN/TAP on a platform other than Linux-2.4, see
33http://vtun.sourceforge.net/tun/
34
35Note than TUN comes in several flavours. Their names in the
36configuration file are:
37 tun: Linux-2.4; only one device file (usually /dev/net/tun)
38 tun-old: Linux-2.2, BSD; device files /dev/tun*
39 tun-solaris: Solaris (not yet implemented)
40
41** System and network configuration
42
43If you intend to start secnet as root, I suggest you create a userid
44for it to run as once it's ready to drop its privileges. Example (on
45Debian):
46# adduser --system --no-create-home secnet
47
48If you're using the 'soft routes' feature (for some classes of mobile
49device) you'll have to run as root all the time, to enable secnet to
50add and remove routes from your kernel's routing table. (This
51restriction may be relaxed later if someone writes a userv service to
52modify the routing table.)
53
54If you are joining an existing VPN, read that VPN's documentation now.
55It may supersede the next paragraph.
56
57In most configurations, you will need to allocate two IP addresses for
58use by secnet. One will be for the tunnel interface on your tunnel
59endpoint machine (i.e. the address you see in 'ifconfig' when you look
60at the tunnel interface). The other will be for secnet itself. These
61addresses should probably be allocated from the range used by your
62internal network: if you do this, you should provide appropriate
63proxy-ARP on the internal network interface of the machine running
64secnet (eg. add an entry net/ipv4/conf/eth_whatever/proxy_arp = 1 to
65/etc/sysctl.conf on Debian systems and run sysctl -p). Alternatively
66the addresses could be from some other range - this works well if the
67machine running secnet is the default route out of your network - but
68this requires more thought.
69
70http://www.ucam.org/cam-grin/ may be useful.
71
72* Installation
73
74If you installed the Debian package of secnet, skip to "If installing
75for the first time", below, and note that example.conf can be found in
76/usr/share/doc/secnet/examples.
77
78To install secnet do
79
80$ ./configure
81$ make
82# make install
83# mkdir /etc/secnet
84
85(Note: you may see the following warning while compiling
86conffile.tab.c; this is a bug in bison-1.28:
87/usr/share/bison/bison.simple: In function `yyparse':
88/usr/share/bison/bison.simple:285: warning: `yyval' might be used
89 uninitialized in this function
90
91You may if you wish apply the following patch to bison.simple:
92diff -pu -r1.28.0.1 -r1.28.0.3
93--- bison.s1 1999/08/30 19:23:24 1.28.0.1
94+++ bison.s1 1999/08/30 21:15:18 1.28.0.3
95@@ -523,8 +523,14 @@ yydefault:
96 /* Do a reduction. yyn is the number of a rule to reduce with. */
97 yyreduce:
98 yylen = yyr2[yyn];
99- if (yylen > 0)
100- yyval = yyvsp[1-yylen]; /* implement default value of the action */
101+
102+ /* If yylen is nonzero, implement the default value of the action.
103+ Otherwise, the following line sets yyval to the semantic value of
104+ the lookahead token. This behavior is undocumented and bison
105+ users should not rely upon it. Assigning to yyval
106+ unconditionally makes the parser a bit smaller, and it avoids a
107+ GCC warning that yyval may be used uninitialized. */
108+ yyval = yyvsp[1-yylen];
109
110 #if YYDEBUG != 0
111 if (yydebug)
112)
113
114Any other warnings or errors should be reported to
115steve@greenend.org.uk.
116
117If installing for the first time, do
118
119# cp example.conf /etc/secnet/secnet.conf
120# cd /etc/secnet
121# ssh-keygen -f key -N ""
122
123[On BSD use
124$ LDFLAGS="-L/usr/local/lib" ./configure
125$ gmake CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
126XXX this should eventually be worked out automatically by 'configure'.]
127
128Generate a site file fragment for your site (see your VPN's
129documentation, or see below), and submit it for inclusion in your
130VPN's 'sites' file. Download the vpn-sites file to /etc/secnet/sites
131- MAKE SURE YOU GET AN AUTHENTIC COPY because the sites file contains
132public keys for all the sites in the VPN. Use the make-secnet-sites
133program provided with the secnet distribution to convert the
134distributed sites file into one that can be included in a secnet
135configuration file:
136
137# make-secnet-sites /etc/secnet/sites /etc/secnet/sites.conf
138
139* Configuration
140
141Should be reasonably obvious - edit /etc/secnet/secnet.conf as
142prompted by the comments in example.conf. XXX Fuller documentation of
143the configuration file format should be forthcoming in time. Its
144syntax is described in the README file at the moment.
145
146* Constructing your site file fragment
147
148You need the following information:
149
1501. the name of your VPN.
151
1522. the name of your location(s).
153
1543. a short name for your site, eg. "sinister". This is used to
155identify your site in the vpn-sites file, and should probably be the
156same as its hostname.
157
1584. the DNS name of the machine that will be the "front-end" for your
159secnet installation. This will typically be the name of the gateway
160machine for your network, eg. sinister.dynamic.greenend.org.uk
161
162secnet does not actually have to run on this machine, as long as the
163machine can be configured to forward UDP packets to the machine that
164is running secnet.
165
1665. the port number used to contact secnet at your site. This is the
167port number on the front-end machine, and does not necessarily have to
168match the port number on the machine running secnet. If you want to
169use a privileged port number we suggest 410. An appropriate
170unprivileged port number is 51396. (These numbers were picked at
171random.)
172
1736. the list of networks accessible at your site over the VPN.
174
1757. the public part of the RSA key you generated during installation
176(in /etc/secnet/key.pub if you followed the installation
177instructions). This file contains three numbers and a comment on one
178line.
179
180If you are running secnet on a particularly slow machine, you may like
181to specify a larger value for the key setup retry timeout than the
182default, to prevent unnecessary retransmissions of key setup packets.
183See the notes in the example configuration file for more on this.
184
185The site file fragment should look something like this:
186
187vpn sgo
188location greenend
189contact steve@greenend.org.uk
190site sinister
191 networks 192.168.73.0/24 192.168.1.0/24 172.19.71.0/24
192 address sinister.dynamic.greenend.org.uk 51396
193 pubkey 1024 35 142982503......[lots more].....0611 steve@sinister