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