chiark / gitweb /
4af302456a8550892eb88f7abf2fb0fe252b83e2
[secnet.git] / NEWS
1 * Planned for the future
2
3 Netlink device that implements an Ethernet bridge.
4
5 Modular transform code: choice of block ciphers, modes, sequence
6 numbers / timestamps, etc. similar to IWJ's udptunnel
7
8 Path-MTU discovery for each tunnel, and fragmentation/DF support in
9 netlink code.
10
11 Separation of device drivers from IP router code - driver produces a
12 stream of packets (which has a tag indicating type and parameters).
13 Router module can be connected to stream to multiplex it between
14 different tunnels.
15
16 Support for dynamic creation of streams/tunnels to cope with laptops,
17 etc.
18
19 See also file "TODO".
20
21 * New in version 0.1.15
22
23 Now terminates with an error when an "include" filename is not
24 specified in the configuration file (thanks to RJK).
25
26 RSA private key operations optimised using CRT. Thanks to SGT.
27
28 Now compiles cleanly with -Wwrite-strings turned on in gcc.
29
30 Anything sent to stderr once secnet has started running in the
31 background is now redirected to the system/log facility.
32
33 * New in version 0.1.14
34
35 The --help and --version options now send their output to stdout.
36
37 Bugfix: TUN flavour "BSD" no longer implies a BSD-style ifconfig and
38 route command invocation.  Instead "ioctl"-style is used, which should
39 work on both BSD and linux-2.2 systems.
40
41 If no "networks" parameter is specified for a netlink device then it
42 is assumed to be 0.0.0.0/0 rather than the empty set.  So, by default
43 there is a default route from each netlink device to the host machine.
44 The "networks" parameter can be used to implement a primitive
45 firewall, restricting the destination addresses of packets received
46 through tunnels; if a more complex firewall is required then implement
47 it on the host.
48
49 * New in version 0.1.13
50
51 site.c code cleaned up; no externally visible changes
52
53 secnet now calls setsid() after becoming a daemon.
54
55 secnet now supports TUN on Solaris 2.5 and above (and possibly other
56 STREAMS-based systems as well).
57
58 The TUN code now tries to auto-detect the type of "TUN" in use
59 (BSD-style, Linux-style or STREAMS-style).  If your configuration file
60 specifies "tun-old" then it defaults to BSD-style; however, since
61 "tun-old" will be removed in a future release, you should change your
62 configuration file to specify "tun" and if there's a problem also
63 specify the flavour in use.
64
65 Example:
66 netlink tun-old {
67         ...
68 };
69 should be rewritten as
70 netlink tun {
71         flavour "bsd";
72         ...
73 };
74
75 The flavours currently defined are "bsd", "linux" and "streams".
76
77 The TUN code can now be configured to configure interfaces and
78 add/delete routes using one of several methods: invoking a
79 "linux"-style ifconfig/route command, a "bsd"-style ifconfig/route
80 command, "solaris-2.5"-style ifconfig/route command or calling ioctl()
81 directly.  These methods can be selected using the "ifconfig-type" and
82 "route-type" options.
83
84 Example:
85 netlink tun {
86         ifconfig-type "ioctl";
87         route-type "ioctl";
88         ...
89 };
90
91 The ioctl-based method is now the default for Linux systems.
92
93 Magic numbers used within secnet are now collected in the header file
94 "magic.h".
95
96 netlink now uses ICMP type=0 code=13 for 'administratively prohibited'
97 instead of code 9. See RFC1812 section 5.2.7.1.
98
99 The UDP comm module now supports a proxy server, "udpforward".  This
100 runs on a machine which is directly accessible by secnet and which can
101 send packets to appropriate destinations.  It's useful when the proxy
102 machine doesn't support source- and destination-NAT.  The proxy server
103 is specified using the "proxy" key in the UDP module configuration;
104 parameters are IP address (string) and port number.
105
106 Bugfix: ipset_to_subnet_list() in ipaddr.c now believed to work in all
107 cases, including 0.0.0.0/0
108
109 * New in version 0.1.12
110
111 IMPORTANT: fix calculation of 'now' in secnet.c; necessary for correct
112 operation.
113
114 (Only interesting for people building and modifying secnet by hand:
115 the Makefile now works out most dependencies automatically.)
116
117 The netlink code no longer produces an internal routing table sorted
118 by netmask length.  Instead, netlink instances have a 'priority'; the
119 table of routes is sorted by priority.  Devices like laptops that have
120 tunnels that must sometimes 'mask' parts of other tunnels should be
121 given higher priorities.  If a priority is not specified it is assumed
122 to be zero.
123
124 Example usage:
125 site laptop { ...
126         link netlink {
127                 route "192.168.73.74/31";
128                 priority 10;
129         };
130 };
131
132 * New in version 0.1.11
133
134 Lists of IP addresses in the configuration file can now include
135 exclusions as well as inclusions.  For example, you can specify all
136 the hosts on a subnet except one as follows:
137
138 networks "192.168.73.0/24","!192.168.73.70";
139
140 (If you were only allowed inclusions, you'd have to specify that like
141 this:
142 networks "192.168.73.71/32","192.168.73.68/31","192.168.73.64/30",
143         "192.168.73.72/29","192.168.73.80/28","192.168.73.96/27",
144         "192.168.73.0/26","192.168.73.128/25";
145 )
146
147 secnet now ensures that it invokes userv-ipif with a non-overlapping
148 list of subnets.
149
150 There is a new command-line option, --sites-key or -s, that enables
151 the configuration file key that's checked to determine the list of
152 active sites (default "sites") to be changed.  This enables a single
153 configuration file to contain multiple cofigurations conveniently.
154
155 NAKs are now sent when packets arrive that are not understood.  The
156 tunnel code initiates a key setup if it sees a NAK.  Future
157 developments should include configuration options that control this.
158
159 The tunnel code notifies its peer when secnet is terminating, so the
160 peer can close the session.
161
162 The netlink "exclude-remote-networks" option has now been replaced by
163 a "remote-networks" option; instead of specifying networks that no
164 site may access, you specify the set of networks that remote sites are
165 allowed to access. A sensible example: "192.168.0.0/16",
166 "172.16.0.0/12", "10.0.0.0/8", "!your-local-network"
167
168 * New in version 0.1.10
169
170 WARNING: THIS VERSION MAKES A CHANGE TO THE CONFIGURATION FILE FORMAT
171 THAT IS NOT BACKWARD COMPATIBLE.  However, in most configurations the
172 change only affects the sites.conf file, which is generated by the
173 make-secnet-sites script; after you regenerate your sites.conf using
174 version 0.1.10, everything should continue to work.
175
176 Netlink devices now interact slightly differently with the 'site'
177 code.  When you invoke a netlink closure like 'tun' or 'userv-ipif',
178 you get another closure back.  You then invoke this closure (usually
179 in the site definitions) to specify things like routes and options.
180 The result of this invocation should be used as the 'link' option in
181 site configurations.
182
183 All this really means is that instead of site configurations looking
184 like this:
185
186 foo {
187         name "foo";
188         networks "a", "b", "c";
189         etc.
190 };
191
192 ...they look like this:
193
194 foo {
195         name "foo";
196         link netlink { routes "a", "b", "c"; };
197         etc.
198 };
199
200 This change was made to enable the 'site' code to be completely free
201 of any knowledge of the contents of the packets it transmits.  It
202 should now be possible in the future to tunnel other protocols like
203 IPv6, IPX, raw Ethernet frames, etc. without changing the 'site' code
204 at all.
205
206 Point-to-point netlink devices work slightly differently; when you
207 apply the 'tun', 'userv-ipif', etc. closure and specify the
208 ptp-address option, you must also specify the 'routes' option.  The
209 result of this invocation should be passed directly to the 'link'
210 option of the site configuration.  You can do things like this:
211
212 sites site {
213         name "foo";
214         link tun {
215                 networks "192.168.73.76/32";
216                 local-address "192.168.73.76"; # IP address of interface
217                 ptp-address "192.168.73.75"; # IP address of other end of link
218                 routes "192.168.73.74/32";
219                 mtu 1400;
220                 buffer sysbuffer();
221         };
222         etc.
223 };
224
225 The route dump obtained by sending SIGUSR1 to secnet now includes
226 packet counts.
227
228 Point-to-point mode has now been tested.
229
230 tun-old has now been tested, and the annoying 'untested' message has
231 been removed.  Thanks to SGT and JDA.
232
233 secnet now closes its stdin, stdout and stderr just after
234 backgrounding.
235
236 Bugfix: specifying network "0.0.0.0/0" (or "default") now works
237 correctly.
238                 
239 * New in version 0.1.9
240
241 The netlink code may now generate ICMP responses to ICMP messages that
242 are not errors, eg. ICMP echo-request.  This makes Windows NT
243 traceroute output look a little less strange.
244
245 configure.in and config.h.bot now define uint32_t etc. even on systems
246 without stdint.h and inttypes.h (needed for Solaris 2.5.1)
247
248 GNU getopt is included for systems that lack it.
249
250 We check for LOG_AUTHPRIV before trying to use it in log.c (Solaris
251 2.5.1 doesn't have it.)
252
253 Portable snprintf.c from http://www.ijs.si/software/snprintf/ is
254 included for systems that lack snprintf/vsnprintf.
255
256 make-secnet-sites.py renamed to make-secnet-sites and now installed in
257 $prefix/sbin/make-secnet-sites; ipaddr.py library installed in
258 $prefix/share/secnet/ipaddr.py.  make-secnet-sites searches
259 /usr/local/share/secnet and /usr/share/secnet for ipaddr.py
260
261 * New in version 0.1.8
262
263 Netlink devices now support a 'point-to-point' mode.  In this mode the
264 netlink device does not require an IP address; instead, the IP address
265 of the other end of the tunnel is specified using the 'ptp-address'
266 option.  Precisely one site must be configured to use the netlink
267 device. (I haven't had a chance to test this because 0.1.8 turned into
268 a 'quick' release to enable secnet to cope with the network problems
269 affecting connections going via LINX on 2001-10-16.)
270
271 The tunnel code in site.c now initiates a key setup if the
272 reverse-transform function fails (wrong key, bad MAC, too much skew,
273 etc.) - this should make secnet more reliable on dodgy links, which
274 are much more common than links with active attackers...  (an attacker
275 can now force a new key setup by replaying an old packet, but apart
276 from minor denial of service on slow links or machines this won't
277 achieve them much).  This should eventually be made configurable.
278
279 The sequence number skew detection code in transform.c now only
280 complains about 'reverse skew' - replays of packets that are too
281 old. 'Forward skew' (gaps in the sequence numbers of received packets)
282 is now tolerated silently, to cope with large amounts of packet loss.