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