changelog: mention hippotat
[secnet] / NEWS
CommitLineData
8dea8d37
SE
1* Planned for the future
2
3b83c932
SE
3Please note that the 0.1 series of secnet releases is now 'maintenance
4only'; further development continues in secnet-0.2.
5
3b83c932
SE
6Debconf support - if you are using the Debian packaged version and
7your secnet configuration is autogenerated using debconf then the
8upgrade to version 0.2.0 should just involve installing the package;
9an appropriate 0.2-style configuration file will be generated
10automatically.
11
ca58ee48
SE
12* New in version 0.1.18
13
14ipaddr.py now declares its character encoding; required by recent
15versions of Python
16
1dadd8be
SE
17* New in version 0.1.17
18
19autoconf updates for cross-compilation / more modern autoconf from
20Ross Younger <ross@crazyscot.com>
21
22MacOS X support from Richard Kettlewell <richard@sfere.greenend.org.uk>
23
24Makefile fix: Update bison pattern rule to indicate that both the
25.tab.c and .tab.h files are generated by the same command.
26
27i386 ip_csum implementation updated to work with modern gcc
28
29Rename global 'log' to 'slilog' to avoid conflict with gcc built-in
30log() function.
31
3b83c932
SE
32* New in version 0.1.16
33
34XXX XXX PROTOCOL COMPATIBILITY IS BROKEN BETWEEN VERSION 0.1.16 AND
35XXX XXX ALL PREVIOUS VERSIONS.
36
37Bugfix: rsa.c private-key now works properly when you choose not to
38verify it.
39
40Bugfix: serpent key setup was only using the first 8 bytes of the key
41material. (Oops!) Ian Jackson contributed a fix so the full 32 bytes
42are used, in big-endian mode.
43
44Debatable-bugfix: RSA operations now use PKCS1 v1.5-style padding
45
46"Hacky parallelism" contributed by Ian Jackson; this permits
47public-key operations to be performed in a subprocess during key
48exchange, to make secnet more usable on very slow machines. This is
49not compiled in by default; if you find you need it (because key
50exchanges are taking more than a second or two) then add
51-DHACKY_PARALLEL to FLAGS in the Makefile.in and recompile.
52
53udp module updates from Peter Benie:
54 1) Handle the case where authbind-helper terminates with a signal
55 2) Cope with signals being delivered during waitpid
56 3) Add 'address' (optional) to the udp settings. This is an IP address
57 that the socket will be bound to.
58 4) Change the endianess of the arguments to authbind-helper.
59 sprintf("%04X") already translates from machine repesentation to most
60 significant octet first so htons reversed it again.
61
62All uses of alloca() expunged by Peter Benie.
63
64make-secnet-sites now supports configurations where each tunnel gets
65its own interface on the host, and the IP router code in secnet is
66disabled. make-secnet-sites has been rewritten for clarity. For
67information on how to configure secnet for one-interface-per-tunnel,
68see the example.conf file.
ff05a229 69
fe5e9cc4
SE
70* New in version 0.1.15
71
72Now terminates with an error when an "include" filename is not
73specified in the configuration file (thanks to RJK).
74
75RSA private key operations optimised using CRT. Thanks to SGT.
76
77Now compiles cleanly with -Wwrite-strings turned on in gcc.
78
79Anything sent to stderr once secnet has started running in the
80background is now redirected to the system/log facility.
81
4f5e39ec 82* New in version 0.1.14
ff05a229 83
4f5e39ec
SE
84The --help and --version options now send their output to stdout.
85
86Bugfix: TUN flavour "BSD" no longer implies a BSD-style ifconfig and
87route command invocation. Instead "ioctl"-style is used, which should
88work on both BSD and linux-2.2 systems.
89
90If no "networks" parameter is specified for a netlink device then it
91is assumed to be 0.0.0.0/0 rather than the empty set. So, by default
92there is a default route from each netlink device to the host machine.
93The "networks" parameter can be used to implement a primitive
94firewall, restricting the destination addresses of packets received
95through tunnels; if a more complex firewall is required then implement
96it on the host.
ff05a229
SE
97
98* New in version 0.1.13
99
100site.c code cleaned up; no externally visible changes
101
102secnet now calls setsid() after becoming a daemon.
103
104secnet now supports TUN on Solaris 2.5 and above (and possibly other
105STREAMS-based systems as well).
106
107The TUN code now tries to auto-detect the type of "TUN" in use
108(BSD-style, Linux-style or STREAMS-style). If your configuration file
109specifies "tun-old" then it defaults to BSD-style; however, since
110"tun-old" will be removed in a future release, you should change your
111configuration file to specify "tun" and if there's a problem also
112specify the flavour in use.
113
114Example:
115netlink tun-old {
116 ...
117};
118should be rewritten as
119netlink tun {
120 flavour "bsd";
121 ...
122};
123
124The flavours currently defined are "bsd", "linux" and "streams".
125
126The TUN code can now be configured to configure interfaces and
127add/delete routes using one of several methods: invoking a
128"linux"-style ifconfig/route command, a "bsd"-style ifconfig/route
129command, "solaris-2.5"-style ifconfig/route command or calling ioctl()
130directly. These methods can be selected using the "ifconfig-type" and
131"route-type" options.
132
133Example:
134netlink tun {
135 ifconfig-type "ioctl";
136 route-type "ioctl";
137 ...
138};
139
140The ioctl-based method is now the default for Linux systems.
141
142Magic numbers used within secnet are now collected in the header file
143"magic.h".
144
145netlink now uses ICMP type=0 code=13 for 'administratively prohibited'
146instead of code 9. See RFC1812 section 5.2.7.1.
147
148The UDP comm module now supports a proxy server, "udpforward". This
149runs on a machine which is directly accessible by secnet and which can
150send packets to appropriate destinations. It's useful when the proxy
151machine doesn't support source- and destination-NAT. The proxy server
152is specified using the "proxy" key in the UDP module configuration;
153parameters are IP address (string) and port number.
154
155Bugfix: ipset_to_subnet_list() in ipaddr.c now believed to work in all
156cases, including 0.0.0.0/0
157
d3fe100d
SE
158* New in version 0.1.12
159
160IMPORTANT: fix calculation of 'now' in secnet.c; necessary for correct
161operation.
162
163(Only interesting for people building and modifying secnet by hand:
164the Makefile now works out most dependencies automatically.)
165
166The netlink code no longer produces an internal routing table sorted
167by netmask length. Instead, netlink instances have a 'priority'; the
168table of routes is sorted by priority. Devices like laptops that have
169tunnels that must sometimes 'mask' parts of other tunnels should be
170given higher priorities. If a priority is not specified it is assumed
171to be zero.
172
173Example usage:
174site laptop { ...
175 link netlink {
176 route "192.168.73.74/31";
177 priority 10;
178 };
179};
180
794f2398
SE
181* New in version 0.1.11
182
183Lists of IP addresses in the configuration file can now include
184exclusions as well as inclusions. For example, you can specify all
185the hosts on a subnet except one as follows:
186
187networks "192.168.73.0/24","!192.168.73.70";
188
189(If you were only allowed inclusions, you'd have to specify that like
190this:
191networks "192.168.73.71/32","192.168.73.68/31","192.168.73.64/30",
192 "192.168.73.72/29","192.168.73.80/28","192.168.73.96/27",
193 "192.168.73.0/26","192.168.73.128/25";
194)
195
196secnet now ensures that it invokes userv-ipif with a non-overlapping
197list of subnets.
198
199There is a new command-line option, --sites-key or -s, that enables
200the configuration file key that's checked to determine the list of
201active sites (default "sites") to be changed. This enables a single
202configuration file to contain multiple cofigurations conveniently.
203
204NAKs are now sent when packets arrive that are not understood. The
205tunnel code initiates a key setup if it sees a NAK. Future
206developments should include configuration options that control this.
207
208The tunnel code notifies its peer when secnet is terminating, so the
209peer can close the session.
210
211The netlink "exclude-remote-networks" option has now been replaced by
212a "remote-networks" option; instead of specifying networks that no
213site may access, you specify the set of networks that remote sites are
214allowed to access. A sensible example: "192.168.0.0/16",
215"172.16.0.0/12", "10.0.0.0/8", "!your-local-network"
469fd1d9
SE
216
217* New in version 0.1.10
218
219WARNING: THIS VERSION MAKES A CHANGE TO THE CONFIGURATION FILE FORMAT
220THAT IS NOT BACKWARD COMPATIBLE. However, in most configurations the
221change only affects the sites.conf file, which is generated by the
222make-secnet-sites script; after you regenerate your sites.conf using
223version 0.1.10, everything should continue to work.
224
225Netlink devices now interact slightly differently with the 'site'
226code. When you invoke a netlink closure like 'tun' or 'userv-ipif',
227you get another closure back. You then invoke this closure (usually
228in the site definitions) to specify things like routes and options.
229The result of this invocation should be used as the 'link' option in
230site configurations.
231
232All this really means is that instead of site configurations looking
233like this:
234
235foo {
236 name "foo";
237 networks "a", "b", "c";
238 etc.
239};
240
241...they look like this:
242
243foo {
244 name "foo";
245 link netlink { routes "a", "b", "c"; };
246 etc.
247};
248
249This change was made to enable the 'site' code to be completely free
250of any knowledge of the contents of the packets it transmits. It
251should now be possible in the future to tunnel other protocols like
252IPv6, IPX, raw Ethernet frames, etc. without changing the 'site' code
253at all.
254
255Point-to-point netlink devices work slightly differently; when you
256apply the 'tun', 'userv-ipif', etc. closure and specify the
257ptp-address option, you must also specify the 'routes' option. The
258result of this invocation should be passed directly to the 'link'
259option of the site configuration. You can do things like this:
260
261sites site {
262 name "foo";
263 link tun {
264 networks "192.168.73.76/32";
265 local-address "192.168.73.76"; # IP address of interface
266 ptp-address "192.168.73.75"; # IP address of other end of link
267 routes "192.168.73.74/32";
268 mtu 1400;
269 buffer sysbuffer();
270 };
271 etc.
272};
273
274The route dump obtained by sending SIGUSR1 to secnet now includes
275packet counts.
276
277Point-to-point mode has now been tested.
278
279tun-old has now been tested, and the annoying 'untested' message has
280been removed. Thanks to SGT and JDA.
281
282secnet now closes its stdin, stdout and stderr just after
283backgrounding.
284
285Bugfix: specifying network "0.0.0.0/0" (or "default") now works
286correctly.
287
8dea8d37
SE
288* New in version 0.1.9
289
290The netlink code may now generate ICMP responses to ICMP messages that
291are not errors, eg. ICMP echo-request. This makes Windows NT
292traceroute output look a little less strange.
293
294configure.in and config.h.bot now define uint32_t etc. even on systems
295without stdint.h and inttypes.h (needed for Solaris 2.5.1)
296
297GNU getopt is included for systems that lack it.
298
299We check for LOG_AUTHPRIV before trying to use it in log.c (Solaris
3002.5.1 doesn't have it.)
301
302Portable snprintf.c from http://www.ijs.si/software/snprintf/ is
303included for systems that lack snprintf/vsnprintf.
304
305make-secnet-sites.py renamed to make-secnet-sites and now installed in
306$prefix/sbin/make-secnet-sites; ipaddr.py library installed in
307$prefix/share/secnet/ipaddr.py. make-secnet-sites searches
308/usr/local/share/secnet and /usr/share/secnet for ipaddr.py
309
c6f79b17
SE
310* New in version 0.1.8
311
312Netlink devices now support a 'point-to-point' mode. In this mode the
313netlink device does not require an IP address; instead, the IP address
314of the other end of the tunnel is specified using the 'ptp-address'
315option. Precisely one site must be configured to use the netlink
8dea8d37
SE
316device. (I haven't had a chance to test this because 0.1.8 turned into
317a 'quick' release to enable secnet to cope with the network problems
318affecting connections going via LINX on 2001-10-16.)
c6f79b17
SE
319
320The tunnel code in site.c now initiates a key setup if the
321reverse-transform function fails (wrong key, bad MAC, too much skew,
322etc.) - this should make secnet more reliable on dodgy links, which
323are much more common than links with active attackers... (an attacker
324can now force a new key setup by replaying an old packet, but apart
325from minor denial of service on slow links or machines this won't
8dea8d37 326achieve them much). This should eventually be made configurable.
c6f79b17
SE
327
328The sequence number skew detection code in transform.c now only
329complains about 'reverse skew' - replays of packets that are too
330old. 'Forward skew' (gaps in the sequence numbers of received packets)
331is now tolerated silently, to cope with large amounts of packet loss.