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