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