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