2020-01-17 07:23:54 -07:00
|
|
|
# Changelog
|
|
|
|
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
|
|
|
|
## [Unreleased]
|
|
|
|
|
2021-11-30 09:31:33 -07:00
|
|
|
### Added
|
|
|
|
|
|
|
|
- Warn when a non lighthouse node does not have lighthouse hosts configured. (#587)
|
|
|
|
|
2021-11-10 20:32:26 -07:00
|
|
|
## [1.5.0] - 2021-11-11
|
|
|
|
|
2021-06-07 16:06:59 -06:00
|
|
|
### Added
|
|
|
|
|
|
|
|
- SSH `print-cert` has a new `-raw` flag to get the PEM representation of a certificate. (#483)
|
2021-10-19 09:07:31 -06:00
|
|
|
|
2021-10-13 08:55:32 -06:00
|
|
|
- New build architecture: Linux `riscv64`. (#542)
|
2021-06-07 16:06:59 -06:00
|
|
|
|
2021-10-19 09:07:31 -06:00
|
|
|
- New experimental config option `remote_allow_ranges`. (#540)
|
|
|
|
|
2021-10-20 13:36:56 -06:00
|
|
|
- New config option `pki.disconnect_invalid` that will tear down tunnels when they become invalid (through expiry or
|
|
|
|
removal of root trust). Default is `false`. Note, this will not currently recognize if a remote has changed
|
|
|
|
certificates since the last handshake. (#370)
|
2021-11-03 20:53:28 -06:00
|
|
|
|
|
|
|
- New config option `unsafe_routes.<route>.metric` will set a metric for a specific unsafe route. It's useful if you have
|
2021-11-10 20:32:26 -07:00
|
|
|
more than one identical route and want to prefer one against the other. (#353)
|
2021-11-03 20:53:28 -06:00
|
|
|
|
2021-10-21 15:24:11 -06:00
|
|
|
### Changed
|
|
|
|
|
|
|
|
- Build against go 1.17. (#553)
|
2021-10-20 13:36:56 -06:00
|
|
|
|
2021-11-10 20:32:26 -07:00
|
|
|
- Build with `CGO_ENABLED=0` set, to create more portable binaries. This could
|
|
|
|
have an effect on DNS resolution if you rely on anything non-standard. (#421)
|
2021-11-04 12:20:44 -06:00
|
|
|
|
2021-11-08 11:36:31 -07:00
|
|
|
- Windows now uses the [wintun](https://www.wintun.net/) driver which does not require installation. This driver
|
|
|
|
is a large improvement over the TAP driver that was used in previous versions. If you had a previous version
|
|
|
|
of `nebula` running, you will want to disable the tap driver in Control Panel, or uninstall the `tap0901` driver
|
|
|
|
before running this version. (#289)
|
2021-11-09 18:24:24 -07:00
|
|
|
|
2021-11-09 09:49:54 -07:00
|
|
|
- Darwin binaries are now universal (works on both amd64 and arm64), signed, and shipped in a notarized zip file.
|
|
|
|
`nebula-darwin.zip` will be the only darwin release artifact. (#571)
|
2021-11-08 11:36:31 -07:00
|
|
|
|
2021-11-09 18:24:24 -07:00
|
|
|
- Darwin uses syscalls and AF_ROUTE to configure the routing table, instead of
|
|
|
|
using `/sbin/route`. Setting `tun.dev` is now allowed on Darwin as well, it
|
|
|
|
must be in the format `utun[0-9]+` or it will be ignored. (#163)
|
|
|
|
|
2021-10-19 09:07:31 -06:00
|
|
|
### Deprecated
|
|
|
|
|
|
|
|
- The `preferred_ranges` option has been supported as a replacement for
|
|
|
|
`local_range` since v1.0.0. It has now been documented and `local_range`
|
|
|
|
has been officially deprecated. (#541)
|
|
|
|
|
2021-06-03 11:04:04 -06:00
|
|
|
### Fixed
|
|
|
|
|
|
|
|
- Valid recv_error packets were incorrectly marked as "spoofing" and ignored. (#482)
|
|
|
|
|
2021-06-07 16:06:59 -06:00
|
|
|
- SSH server handles single `exec` requests correctly. (#483)
|
|
|
|
|
2021-10-01 10:43:33 -06:00
|
|
|
- Signing a certificate with `nebula-cert sign` now verifies that the supplied
|
|
|
|
ca-key matches the ca-crt. (#503)
|
|
|
|
|
2021-10-19 09:07:31 -06:00
|
|
|
- If `preferred_ranges` (or the deprecated `local_range`) is configured, we
|
|
|
|
will immediately switch to a preferred remote address after the reception of
|
|
|
|
a handshake packet (instead of waiting until 1,000 packets have been sent).
|
|
|
|
(#532)
|
2021-11-08 12:46:22 -07:00
|
|
|
|
2021-11-03 20:54:27 -06:00
|
|
|
- A race condition when `punchy.respond` is enabled and ensures the correct
|
|
|
|
vpn ip is sent a punch back response in highly queried node. (#566)
|
2021-10-19 09:07:31 -06:00
|
|
|
|
2021-11-08 12:46:22 -07:00
|
|
|
- Fix a rare crash during handshake due to a race condition. (#535)
|
|
|
|
|
2021-05-10 19:23:49 -06:00
|
|
|
## [1.4.0] - 2021-05-11
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
|
|
|
- Ability to output qr code images in `print`, `ca`, and `sign` modes for `nebula-cert`.
|
|
|
|
This is useful when configuring mobile clients. (#297)
|
|
|
|
|
|
|
|
- Experimental: Nebula can now do work on more than 2 cpu cores in send and receive paths via
|
|
|
|
the new `routines` config option. (#382, #391, #395)
|
2021-10-19 09:07:31 -06:00
|
|
|
|
2021-05-10 19:23:49 -06:00
|
|
|
- ICMP ping requests can be responded to when the `tun.disabled` is `true`.
|
|
|
|
This is useful so that you can "ping" a lighthouse running in this mode. (#342)
|
|
|
|
|
|
|
|
- Run smoke tests via `make smoke-docker`. (#287)
|
|
|
|
|
2021-10-19 09:07:31 -06:00
|
|
|
- More reported stats, udp memory use on linux, build version (when using Prometheus), firewall,
|
2021-05-10 19:23:49 -06:00
|
|
|
handshake, and cached packet stats. (#390, #405, #450, #453)
|
|
|
|
|
|
|
|
- IPv6 support for the underlay network. (#369)
|
|
|
|
|
|
|
|
- End to end testing, run with `make e2e`. (#425, #427, #428)
|
|
|
|
|
2020-09-24 16:34:08 -06:00
|
|
|
### Changed
|
|
|
|
|
2021-05-10 19:23:49 -06:00
|
|
|
- Darwin will now log stdout/stderr to a file when using `-service` mode. (#303)
|
|
|
|
|
|
|
|
- Example systemd unit file now better arranged startup order when using `sshd`
|
|
|
|
and other fixes. (#317, #412, #438)
|
2021-10-19 09:07:31 -06:00
|
|
|
|
2021-05-10 19:23:49 -06:00
|
|
|
- Reduced memory utilization/garbage collection. (#320, #323, #340)
|
|
|
|
|
|
|
|
- Reduced CPU utilization. (#329)
|
|
|
|
|
|
|
|
- Build against go 1.16. (#381)
|
|
|
|
|
|
|
|
- Refactored handshakes to improve performance and correctness. (#401, #402, #404, #416, #451)
|
|
|
|
|
|
|
|
- Improved roaming support for mobile clients. (#394, #457)
|
|
|
|
|
|
|
|
- Lighthouse performance and correctness improvements. (#406, #418, #429, #433, #437, #442, #449)
|
|
|
|
|
|
|
|
- Better ordered startup to enable `sshd`, `stats`, and `dns` subsystems to listen on
|
|
|
|
the nebula interface. (#375)
|
|
|
|
|
|
|
|
### Fixed
|
|
|
|
|
|
|
|
- No longer report handshake packets as `lost` in stats. (#331)
|
|
|
|
|
|
|
|
- Error handling in the `cert` package. (#339, #373)
|
|
|
|
|
|
|
|
- Orphaned pending hostmap entries are cleaned up. (#344)
|
|
|
|
|
|
|
|
- Most known data races are now resolved. (#396, #400, #424)
|
|
|
|
|
|
|
|
- Refuse to run a lighthouse on an ephemeral port. (#399)
|
|
|
|
|
|
|
|
- Removed the global references. (#423, #426, #446)
|
|
|
|
|
|
|
|
- Reloading via ssh command avoids a panic. (#447)
|
|
|
|
|
|
|
|
- Shutdown is now performed in a cleaner way. (#448)
|
|
|
|
|
|
|
|
- Logs will now find their way to Windows event viewer when running under `-service` mode
|
|
|
|
in Windows. (#443)
|
2020-09-24 16:34:08 -06:00
|
|
|
|
2020-09-22 10:21:12 -06:00
|
|
|
## [1.3.0] - 2020-09-22
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
|
|
|
- You can emit statistics about non-message packets by setting the option
|
|
|
|
`stats.message_metrics`. You can similarly emit detailed statistics about
|
|
|
|
lighthouse packets by setting the option `stats.lighthouse_metrics`. See
|
|
|
|
the example config for more details. (#230)
|
|
|
|
|
|
|
|
- We now support freebsd/amd64. This is experimental, please give us feedback.
|
|
|
|
(#103)
|
|
|
|
|
|
|
|
- We now release a binary for `linux/mips-softfloat` which has also been
|
|
|
|
stripped to reduce filesize and hopefully have a better chance on running on
|
|
|
|
small mips devices. (#231)
|
|
|
|
|
|
|
|
- You can set `tun.disabled` to true to run a standalone lighthouse without a
|
|
|
|
tun device (and thus, without root). (#269)
|
|
|
|
|
|
|
|
- You can set `logging.disable_timestamp` to remove timestamps from log lines,
|
|
|
|
which is useful when output is redirected to a logging system that already
|
|
|
|
adds timestamps. (#288)
|
|
|
|
|
|
|
|
### Changed
|
|
|
|
|
|
|
|
- Handshakes should now trigger faster, as we try to be proactive with sending
|
|
|
|
them instead of waiting for the next timer tick in most cases. (#246, #265)
|
|
|
|
|
|
|
|
- Previously, we would drop the conntrack table whenever firewall rules were
|
|
|
|
changed during a SIGHUP. Now, we will maintain the table and just validate
|
|
|
|
that an entry still matches with the new rule set. (#233)
|
|
|
|
|
|
|
|
- Debug logs for firewall drops now include the reason. (#220, #239)
|
|
|
|
|
|
|
|
- Logs for handshakes now include the fingerprint of the remote host. (#262)
|
|
|
|
|
|
|
|
- Config item `pki.blacklist` is now `pki.blocklist`. (#272)
|
|
|
|
|
|
|
|
- Better support for older Linux kernels. We now only set `SO_REUSEPORT` if
|
|
|
|
`tun.routines` is greater than 1 (default is 1). We also only use the
|
|
|
|
`recvmmsg` syscall if `listen.batch` is greater than 1 (default is 64).
|
|
|
|
(#275)
|
|
|
|
|
|
|
|
- It is possible to run Nebula as a library inside of another process now.
|
|
|
|
Note that this is still experimental and the internal APIs around this might
|
|
|
|
change in minor version releases. (#279)
|
|
|
|
|
|
|
|
### Deprecated
|
|
|
|
|
|
|
|
- `pki.blacklist` is deprecated in favor of `pki.blocklist` with the same
|
|
|
|
functionality. Existing configs will continue to load for this release to
|
|
|
|
allow for migrations. (#272)
|
|
|
|
|
|
|
|
### Fixed
|
|
|
|
|
|
|
|
- `advmss` is now set correctly for each route table entry when `tun.routes`
|
|
|
|
is configured to have some routes with higher MTU. (#245)
|
|
|
|
|
|
|
|
- Packets that arrive on the tun device with an unroutable destination IP are
|
|
|
|
now dropped correctly, instead of wasting time making queries to the
|
|
|
|
lighthouses for IP `0.0.0.0` (#267)
|
|
|
|
|
2020-04-08 17:52:24 -06:00
|
|
|
## [1.2.0] - 2020-04-08
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
|
|
|
- Add `logging.timestamp_format` config option. The primary purpose of this
|
|
|
|
change is to allow logging timestamps with millisecond precision. (#187)
|
|
|
|
|
|
|
|
- Support `unsafe_routes` on Windows. (#184)
|
|
|
|
|
|
|
|
- Add `lighthouse.remote_allow_list` to filter which subnets we will use to
|
|
|
|
handshake with other hosts. See the example config for more details. (#217)
|
|
|
|
|
|
|
|
- Add `lighthouse.local_allow_list` to filter which local IP addresses and/or
|
|
|
|
interfaces we advertise to the lighthouses. See the example config for more
|
|
|
|
details. (#217)
|
|
|
|
|
|
|
|
- Wireshark dissector plugin. Add this file in `dist/wireshark` to your
|
|
|
|
Wireshark plugins folder to see Nebula packet headers decoded. (#216)
|
|
|
|
|
|
|
|
- systemd unit for Arch, so it can be built entirely from this repo. (#216)
|
|
|
|
|
2020-03-27 12:26:39 -06:00
|
|
|
### Changed
|
|
|
|
|
2020-04-08 17:52:24 -06:00
|
|
|
- Added a delay to punching via lighthouse signal to deal with race conditions
|
|
|
|
in some linux conntrack implementations. (#210)
|
|
|
|
|
|
|
|
See deprecated, this also adds a new `punchy.delay` option that defaults to `1s`.
|
|
|
|
|
|
|
|
- Validate all `lighthouse.hosts` and `static_host_map` VPN IPs are in the
|
|
|
|
subnet defined in our cert. Exit with a fatal error if they are not in our
|
|
|
|
subnet, as this is an invalid configuration (we will not have the proper
|
|
|
|
routes set up to communicate with these hosts). (#170)
|
|
|
|
|
|
|
|
- Use absolute paths to system binaries on macOS and Windows. (#191)
|
|
|
|
|
|
|
|
- Add configuration options for `handshakes`. This includes options to tweak
|
|
|
|
`try_interval`, `retries` and `wait_rotation`. See example config for
|
|
|
|
descriptions. (#179)
|
|
|
|
|
|
|
|
- Allow `-config` file to not end in `.yaml` or `yml`. Useful when using
|
|
|
|
`-test` and automated tools like Ansible that create temporary files without
|
|
|
|
suffixes. (#189)
|
|
|
|
|
|
|
|
- The config test mode, `-test`, is now more thorough and catches more parsing
|
|
|
|
issues. (#177)
|
|
|
|
|
|
|
|
- Various documentation and example fixes. (#196)
|
|
|
|
|
|
|
|
- Improved log messages. (#181, #200)
|
|
|
|
|
|
|
|
- Dependencies updated. (#188)
|
2020-03-27 12:26:39 -06:00
|
|
|
|
|
|
|
### Deprecated
|
|
|
|
|
2020-04-08 17:52:24 -06:00
|
|
|
- `punchy`, `punch_back` configuration options have been collapsed under the
|
|
|
|
now top level `punchy` config directive. (#210)
|
|
|
|
|
|
|
|
`punchy.punch` - This is the old `punchy` option. Should we perform NAT hole
|
|
|
|
punching (default false)?
|
|
|
|
|
|
|
|
`punchy.respond` - This is the old `punch_back` option. Should we respond to
|
|
|
|
hole punching by hole punching back (default false)?
|
|
|
|
|
|
|
|
### Fixed
|
|
|
|
|
|
|
|
- Reduce memory allocations when not using `unsafe_routes`. (#198)
|
|
|
|
|
|
|
|
- Ignore packets from self to self. (#192)
|
2020-03-27 12:26:39 -06:00
|
|
|
|
2020-04-08 17:52:24 -06:00
|
|
|
- MTU fixed for `unsafe_routes`. (#209)
|
2020-03-27 12:26:39 -06:00
|
|
|
|
2020-01-17 10:29:42 -07:00
|
|
|
## [1.1.0] - 2020-01-17
|
|
|
|
|
2020-01-17 07:23:54 -07:00
|
|
|
### Added
|
|
|
|
|
|
|
|
- For macOS and Windows, build a special version of the binary that can install
|
|
|
|
and manage its own service configuration. You can use this with `nebula
|
|
|
|
-service`. If you are building from source, use `make service` to build this feature.
|
|
|
|
- Support for `mips`, `mips64`, `386` and `ppc64le` processors on Linux.
|
|
|
|
- You can now configure the DNS listen host and port with `lighthouse.dns.host`
|
|
|
|
and `lighthouse.dns.port`.
|
|
|
|
- Subnet and routing support. You can now add a `unsafe_routes` section to your
|
|
|
|
config to allow hosts to act as gateways to other subnets. Read the example
|
|
|
|
config for more details. This is supported on Linux and macOS.
|
|
|
|
|
|
|
|
### Changed
|
|
|
|
|
|
|
|
- Certificates now have more verifications performed, including making sure
|
|
|
|
the certificate lifespan does not exceed the lifespan of the root CA. This
|
|
|
|
could cause issues if you have signed certificates with expirations beyond
|
|
|
|
the expiration of your CA, and you will need to reissue your certificates.
|
|
|
|
- If lighthouse interval is set to `0`, never update the lighthouse (mobile
|
|
|
|
optimization).
|
|
|
|
- Various documentation and example fixes.
|
|
|
|
- Improved error messages.
|
|
|
|
- Dependencies updated.
|
|
|
|
|
|
|
|
### Fixed
|
|
|
|
|
|
|
|
- If you have a firewall rule with `group: ["one-group"]`, this will
|
|
|
|
now be accepted, with a warning to use `group: "one-group"` instead.
|
|
|
|
- The `listen.host` configuration option was previously ignored (the bind host
|
|
|
|
was always 0.0.0.0). This option will now be honored.
|
|
|
|
- The `ca_sha` and `ca_name` firewall rule options should now work correctly.
|
|
|
|
|
|
|
|
## [1.0.0] - 2019-11-19
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
|
|
|
- Initial public release.
|
|
|
|
|
2021-11-10 20:32:26 -07:00
|
|
|
[Unreleased]: https://github.com/slackhq/nebula/compare/v1.5.0...HEAD
|
|
|
|
[1.5.0]: https://github.com/slackhq/nebula/releases/tag/v1.5.0
|
2021-05-10 19:23:49 -06:00
|
|
|
[1.4.0]: https://github.com/slackhq/nebula/releases/tag/v1.4.0
|
2020-09-22 10:21:12 -06:00
|
|
|
[1.3.0]: https://github.com/slackhq/nebula/releases/tag/v1.3.0
|
2020-04-08 17:52:24 -06:00
|
|
|
[1.2.0]: https://github.com/slackhq/nebula/releases/tag/v1.2.0
|
2020-01-17 10:29:42 -07:00
|
|
|
[1.1.0]: https://github.com/slackhq/nebula/releases/tag/v1.1.0
|
2020-01-17 07:23:54 -07:00
|
|
|
[1.0.0]: https://github.com/slackhq/nebula/releases/tag/v1.0.0
|