vpncloud/CHANGELOG.md

320 lines
12 KiB
Markdown
Raw Permalink Normal View History

2015-12-10 08:53:14 +00:00
# Changelog
This project follows [semantic versioning](http://semver.org).
2023-10-06 22:56:32 +00:00
### UNRELEASED
- [changed] Changed Rust version to 1.75.0
2023-10-06 22:56:32 +00:00
- [changed] Updated dependencies
2023-10-06 22:59:50 +00:00
- [fixed] Fix error when IPv6 is not available
2023-10-06 22:56:32 +00:00
2021-12-23 20:33:50 +00:00
### v2.3.0 (2021-12-23)
2021-04-12 17:30:57 +00:00
2021-12-19 11:40:43 +00:00
- [added] Added build for armv5te (thanks to xek)
2021-04-12 17:30:57 +00:00
- [added] Option to specify advertised addresses
- [added] Peers now learn their own address from peers
2021-12-19 11:40:43 +00:00
- [changed] Changed Rust version to 1.57.0
- [changed] Updated dependencies
2021-05-27 15:01:34 +00:00
- [fixed] Fixed problem with IPv4 addresses in listen option
2021-12-20 07:50:12 +00:00
- [fixed] Fixed periodic broadcast messages in switch mode
2021-04-12 17:30:57 +00:00
2021-04-06 10:28:31 +00:00
### v2.2.0 (2021-04-06)
2021-02-13 23:09:11 +00:00
2021-04-05 16:55:09 +00:00
- [added] Service target file (thanks to mnhauke)
2021-02-13 23:09:11 +00:00
- [added] Added interactive configuration wizard
2021-02-17 20:18:36 +00:00
- [added] Support for (un-)installation
- [added] Building static binaries
2021-02-22 15:19:19 +00:00
- [added] Building i686 rpm
2021-02-13 23:09:11 +00:00
- [changed] Restructured example config
2021-04-06 10:28:31 +00:00
- [changed] Changed Rust version to 1.51.0
2021-02-17 20:18:36 +00:00
- [changed] Updated dependencies
2021-02-22 15:19:19 +00:00
- [changed] Change permissions of /etc/vpncloud
2021-02-13 23:09:11 +00:00
2021-02-06 12:27:19 +00:00
### v2.1.0 (2021-02-06)
2020-11-28 22:47:43 +00:00
2021-02-04 22:42:51 +00:00
- [added] Support for websocket proxy mode
2021-01-24 18:25:34 +00:00
- [added] Support for hook scripts to handle certain situations
2021-02-04 22:42:51 +00:00
- [added] Support for creating shell completions
2020-11-28 22:47:43 +00:00
- [removed] Removed dummy device type
2021-01-24 18:25:34 +00:00
- [changed] Updated dependencies
2021-01-13 08:23:38 +00:00
- [changed] Changed Rust version to 1.49.0
2020-12-19 22:34:17 +00:00
- [fixed] Added missing peer address propagation
2021-02-05 17:27:48 +00:00
- [fixed] Fixed problem with peer addresses without port
2020-11-28 22:47:43 +00:00
2020-11-07 11:34:51 +00:00
### v2.0.1 (2020-11-07)
2020-10-31 09:12:19 +00:00
- [changed] Changed documentation
2020-11-02 19:44:05 +00:00
- [changed] Updated dependencies
- [changed] Retrying connections for 120 secs
2020-11-03 17:49:35 +00:00
- [changed] Resetting own addresses periodically
- [changed] Using smallvec everywhere
2020-11-07 11:34:51 +00:00
- [changed] Assume default port for peers without port
2020-11-02 19:44:05 +00:00
- [fixed] Fixed corner case with lost init message
- [fixed] Do not reconnect to timed out pending connections
- [fixed] Most specific claims beat less specific claims
- [fixed] Count all invalid protocol traffic
2020-11-03 17:49:35 +00:00
- [fixed] Fixed compile with musl
2020-11-07 11:34:51 +00:00
- [fixed] Fixed time format in logs
2020-10-31 09:12:19 +00:00
2020-10-30 21:23:48 +00:00
### v2.0.0 (2020-10-30)
2020-06-09 07:03:52 +00:00
2020-09-24 20:13:12 +00:00
- [added] **Add strong crypto, complete rewrite of crypto system**
- [added] Automatically claim addresses based on interface addresses (disable with --no-auto-claim)
- [added] Allow to give --ip instead of ifup cmd
- [added] Automatically set optimal MTU on interface
- [added] Warning for disabled or loose rp_filter setting
- [added] Add --fix-rp-filter to fix rp filter settings
2020-10-29 21:12:33 +00:00
- [added] Offer to migrate old configs
2020-09-24 20:13:12 +00:00
- [changed] **Complete change of network protocol**
- [changed] Negotiate crypto method per peer, select best method
- [changed] Make encryption the default, no encryption must be stated explicitly
- [changed] Changed default device type to TUN
- [changed] Rename subnet to claim
- [changed] Set peer exchange interval to 5 minutes
- [changed] Periodically send claims with peer list
2020-10-09 19:18:12 +00:00
- [changed] Changed Rust version to 1.47.0
2020-09-24 20:13:12 +00:00
- [removed] Remove network-id parameter
- [removed] Remove port config option in favor of --listen
### UNRELEASED v1.x.y
2020-06-09 07:03:52 +00:00
- [added] Added crypto option AES128
2020-06-24 13:28:16 +00:00
- [added] Default port for peers
2020-06-14 17:32:12 +00:00
- [changed] Updated dependencies
- [changed] Removed C code, now 100% Rust
2020-06-17 20:53:14 +00:00
- [fixed] Fixed keepalive for small timeouts
- [fixed] Fixed problem with port forwarding
- [fixed] Fixed problem with TUN on dynamic host addresses
2020-06-09 07:03:52 +00:00
2020-06-03 15:48:47 +00:00
### v1.4.0 (2020-06-03)
- [added] Added option to listen on specified IP
2020-06-03 15:42:43 +00:00
- [added] Added support for statsd monitoring
- [changed] No longer using two sockets for ipv4 and ipv6
2020-02-20 21:52:40 +00:00
- [changed] Warning for missing router is now info
- [changed] New warning on claimed addresses in learning mode
2020-05-29 06:37:29 +00:00
- [changed] Rewrote argument parsing
2020-06-03 15:42:43 +00:00
- [changed] Changed stats file format to YAML
- [changed] Using asciidoc for manpage
- [changed] Updated dependencies
2020-05-28 06:57:32 +00:00
- [fixed] Fixed problem that could lead to 100% cpu consumption
2020-06-03 13:49:06 +00:00
- [fixed] Fixed startup race condition
2020-02-20 21:52:40 +00:00
2020-01-25 12:56:21 +00:00
### v1.3.0 (2020-01-25)
2020-01-25 12:56:21 +00:00
- [added] Building for aarch64 aka arm64 (thanks to Ivan)
- [added] Added feature to disable special NAT support
- [changed] Improved port forwarding on quirky routers
- [changed] Reduced peer timeout to 5min to work better with NAT
2020-01-25 12:56:21 +00:00
- [changed] Improved builder scripts
- [changed] Updated dependencies
2019-12-29 12:03:48 +00:00
- [fixed] Fixed problem with growing stats file
### v1.2.1 (2019-12-22)
- [fixed] Fixed a problem with service restrictions
2019-12-20 13:50:24 +00:00
### v1.2.0 (2019-12-20)
2019-12-06 09:21:07 +00:00
- [added] Added service restrictions to systemd
2019-12-19 23:52:49 +00:00
- [changed] Rust version 1.40.0
- [changed] Also drop privileges in foreground mode
- [changed] Set builders to Ubuntu 16.04 and CentOS 7
- [changed] Set keepalive to 120 secs when NAT is detected
2019-12-19 15:09:52 +00:00
- [changed] Deleting beacon file at shutdown
2019-12-20 13:50:24 +00:00
- [changed] Updated dependencies
- [fixed] Added parameter keepalive to manpage
- [fixed] Fixed problems on stats file when dropping permissions
2019-12-19 15:08:51 +00:00
- [fixed] Deleting files before overwriting them
2019-12-19 15:13:03 +00:00
- [fixed] Fixed duplicate port bindings
2019-12-04 15:33:42 +00:00
### v1.1.0 (2019-12-04)
2019-12-04 08:32:35 +00:00
- [added] Exchange peer timeout and adapt keepalive accordingly
- [added] Reducing published peer timeout to 5 min when NAT is detected
- [added] Added more tests
2019-12-04 15:33:42 +00:00
- [changed] Rust version 1.39.0
2019-12-04 08:32:35 +00:00
- [changed] Updated dependencies
- [fixed] Fixed potential startup dependency issue
2019-12-04 15:33:42 +00:00
- [fixed] Fixed wrong base62 encoding
2019-12-04 08:32:35 +00:00
2019-03-21 17:02:41 +00:00
### v1.0.0 (2019-03-21)
2019-02-18 08:56:37 +00:00
2019-02-19 21:04:21 +00:00
- [added] Added ability to publish small beacons for rendezvous
2019-03-02 00:13:35 +00:00
- [added] Added build chain for packages
2019-03-01 23:50:55 +00:00
- [added] Added more tests
2019-02-18 08:56:37 +00:00
- [changed] Allow to build binary without manpage
2019-03-01 23:50:55 +00:00
- [changed] Rust edition 2018
- [changed] Rust version 1.33.0
- [changed] Updated dependencies
2019-02-19 21:04:21 +00:00
- [fixed] Fixed bug that could cause repeated initialization messages
2019-02-18 08:56:37 +00:00
2019-02-16 14:42:03 +00:00
### v0.9.1 (2019-02-16)
2019-02-18 08:56:37 +00:00
- [fixed] Fixed bug in new hex secret key functionality
2019-02-16 14:42:03 +00:00
2019-02-15 22:44:39 +00:00
### v0.9.0 (2019-02-15)
2019-01-04 11:32:48 +00:00
2019-02-15 21:42:13 +00:00
- [added] Added support for cross-compilation
2019-01-10 18:36:50 +00:00
- [added] Added keepalive option for nodes behind NAT
- [added] Added ability to write out statistics file with peers and traffic info
- [added] Added dummy device type that does not allocate an interface
2019-02-15 21:42:13 +00:00
- [added] Added ability to change /dev/tun path
2019-01-10 18:36:50 +00:00
- [changed] Using ring instead of libsodium
- [changed] Using PBKDF2 for shared keys (**incompatible**)
2019-02-15 21:42:13 +00:00
- [changed] Updated dependencies
2019-01-04 11:32:48 +00:00
- [fixed] Hashed magics now also consider first character (**incompatible**)
2019-01-10 18:36:50 +00:00
### v0.8.2 (2019-01-02)
- [changed] Using serde instead of rustc_serialize
2019-01-01 23:35:14 +00:00
- [changed] Updated libsodium to 1.0.16
- [changed] Updated dependencies
2019-01-01 23:35:14 +00:00
- [changed] Making clippy happy
2019-01-01 21:55:15 +00:00
- [fixed] Fixed wrong address
2017-05-09 07:27:44 +00:00
### v0.8.1 (2017-05-09)
- [added] Added more tests
- [changed] Updated dependencies
- [changed] Updated libsodium to 1.0.12
- [changed] Small fixes to make clippy happy
- [changed] Removed a layer of indirection from inner loop
- [fixed] Fixed two problems with routing table
2016-11-25 06:29:12 +00:00
### v0.8.0 (2016-11-25)
- [added] Support for automatic port forwarding via UPnP
- [added] Added `-s` shorthand for `--subnet`
- [added] Support for YAML config file via `--config`
2016-11-23 14:21:22 +00:00
- [added] Support for running in the background
- [added] Support for dropping permissions
- [added] Support for writing a pid file
- [added] Support for writing logs to logfile
- [changed] Not overriding recently learnt addresses in switch mode
- [changed] Caching resolved addresses to increase performance
- [changed] Configurable magic header is now used instead of Network-ID (**incompatible**)
- [changed] Clarified documentation on TUN netmasks
2016-08-12 06:39:46 +00:00
- [changed] Added timestamps to output
- [changed] Using new YAML config instead of old config files (**incompatible**)
- [changed] Prefer IPv4 over IPv6 when possible
- [changed] Updated dependencies
- [fixed] Fixed documentation of listen parameter
- [fixed] Fixed problem with multiple subnets
- [fixed] Fixed problem with interrupted poll after suspend to ram
2016-08-12 06:39:46 +00:00
- [fixed] Forgot to extend peer timeout on peer exchange
- [fixed] No longer broadcasting to additional addresses
2016-08-05 06:50:22 +00:00
### v0.7.0 (2016-08-05)
2016-07-06 19:14:09 +00:00
- [added] Added more tests
2016-06-30 08:05:37 +00:00
- [added] Added pluggable polling system
- [added] Added documentation
- [changed] Code cleanup
- [changed] Updated dependencies
- [changed] Turned some clippy warnings off
- [changed] Cross-compiling for ARM
2016-08-05 06:50:22 +00:00
- [changed] Updated libsodium to 1.0.11
- [removed] Removed Address remove code for prefix table
- [fixed] Reconnecting to lost peers when receiving from them or sending to them
- [fixed] Sending peer list more often to prevent timeouts
- [fixed] Removing learnt addresses of lost peers
2016-07-06 19:14:09 +00:00
- [fixed] Fixed possible crash in message decoding
2016-06-02 07:36:45 +00:00
### v0.6.0 (2016-06-02)
- [added] Exponential backoff for reconnect timeouts
2016-05-11 10:18:23 +00:00
- [added] Systemd compatible startup scripts
- [changed] Repeatedly resolving connect addresses to allow DynDNS
2016-05-02 07:05:34 +00:00
- [changed] Listening on IPv4 and IPv6
2016-05-02 06:35:11 +00:00
- [changed] Using SO_REUSEADDR to allow frequent rebinding
- [changed] Building and using local libsodium library automatically
2016-05-02 06:35:11 +00:00
- [changed] Updated dependencies
2016-04-05 13:36:06 +00:00
### v0.5.0 (2016-04-05)
2016-02-02 21:05:54 +00:00
- [added] Added license and copyright information
- [added] Added documentation for daemon config files
2016-02-02 21:05:54 +00:00
- [added] Script for performance measurements
2016-02-08 19:39:31 +00:00
- [added] Added more tests and benchmarks
- [changed] Daemon now detects network config files on its own
2016-02-02 21:05:54 +00:00
- [changed] Using display format for addresses
- [changed] Updated dependencies
- [changed] New measurements
2016-02-08 19:39:31 +00:00
- [changed] Only calling crypto_init once
- [changed] Passing listen address as &str
2016-03-29 08:45:54 +00:00
- [changed] Using FNV hash for better performance
- [changed] Using slice operations instead of loops
2016-04-05 20:07:25 +00:00
- [changed] Updated libsodium to 1.0.10
2016-04-05 13:48:28 +00:00
- [changed] Renamed default.net to example.net
2016-02-02 22:58:47 +00:00
- [fixed] Fixed wrong hex address formatting
- [fixed] Fixed peer exchange for more than 65000 peers
2016-02-08 19:39:31 +00:00
- [fixed] Initializing crypto for benchmarks
- [fixed] Removing learned addresses of lost peers
2016-02-02 21:05:54 +00:00
2016-02-02 10:32:47 +00:00
### v0.4.3 (2016-02-02)
2016-02-02 10:06:54 +00:00
- [changed] Updated libsodium to 1.0.8
- [fixed] Fixed problem with nodes broadcasting to themselves
2016-01-19 20:58:39 +00:00
### v0.4.2 (2016-01-19)
- [changed] Updated dependencies
- [changed] New measurements
- [changed] Using copy trait more often
- [fixed] Fixed deb changelog
2015-12-22 21:52:46 +00:00
### v0.4.1 (2015-12-22)
2015-12-22 21:39:02 +00:00
- [changed] Logging more verbosely
- [fixed] Removing NULL-bytes from interface name
2015-12-22 21:44:25 +00:00
- [fixed] Supporting hostnames as peers
2015-12-22 21:45:52 +00:00
- [fixed] No longer encrypting multiple times
2015-12-22 21:47:41 +00:00
- [fixed] Properly decoding protocol header when sending
- [fixed] Corrected size of read data
2015-12-10 08:53:14 +00:00
2015-12-22 21:52:46 +00:00
### v0.4.0 (2015-12-22)
2015-12-10 08:53:14 +00:00
2015-12-22 18:32:10 +00:00
- [added] Init script
2015-12-13 21:03:06 +00:00
- [changed] Removed last payload memcopy
2015-12-10 08:53:14 +00:00
- [changed] Using RNG to select peers for peers list exchange
- [changed] Updated dependency versions
- [changed] Updated documentation
- [fixed] Printing errors instead of panics in some cases
2015-12-22 18:32:10 +00:00
- [fixed] Build script for Debian packages
2015-12-10 08:53:14 +00:00
### v0.3.1 (2015-12-03)
- [added] Unique node ids to avoid connecting to self (**incompatible**)
- [fixed] Calling sync when writing to TUN/TAP device
### v0.3.0 (2015-12-02)
- [added] Support for AES256GCM encryption
- [added] Including current libsodium in builds
- [added] --crypto parameter to select encryption method
- [changed] Increased ChaCha20Poly1305 nonce from 8 to 12 bytes (**incompatible**)
- [changed] Updated dependency versions
- [changed] More tests
2016-07-02 09:24:49 +00:00
- [changed] Removed more "unsafe" blocks
2015-12-10 08:53:14 +00:00
- [fixed] Forgot to call `sodium_init`, huge performance increase
### v0.2.0 (2015-11-26)
- [added] Sending close message at the end
- [added] Support for IPv6 addresses
- [added] Support for ChaCha20Poly1305 encryption
- [removed] Support for ChaCha20HmacSha512256 encryption
- [changed] Complete rewrite of encryption code (**incompatible**)
- [changed] Removed unused code
- [changed] Some speed improvements
- [changed] Removed lots of "unsafe" blocks (**fixes security issue**)
2015-12-10 08:53:14 +00:00
- [changed] Added benchmarks
- [changed] Two step handshake in order to fix problems with inconsistent state
- [fixed] Pretty error messages instead of panics with traces
- [fixed] Pretty addresses instead of debug representation
### v0.1.0 (2015-11-25)
- First release