github.com/slackhq/nebula
v1.11.1
#163 most downloaded on Go modules
slackhq/nebula
What this package is like to depend on
Last release 2 days ago
21 Aug 2026
Ships fairly regularly
a new release about every 1 weeks
Nearly every release is documented
notes for 30 of 30 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
293 releases · first in 2019
86 releases in the last 12 months
see the full history below
Release timeline
293 releases · Nov 2019 to Aug 2026Releases
latest 60 of 293-
v1.11.121 Aug 2026Release notes
Open source →See the v1.11.1 milestone for a complete list of changes.
Changed
- IPv6 packets whose next header is a protocol Nebula does not parse (SCTP, GRE, IP-in-IP, etc.) are now
classified as that protocol with no ports, closing a firewall bypass where a crafted payload could steer
the classifier into reading one as TCP/UDP and matching a TCP/UDP rule. These packets are now matched as
their true protocol, so only aproto: anyrule allows them. If you carry one of these protocols over the
overlay, confirm aproto: anyrule covers it before upgrading, it may have been passing only through this
bypass. (#1840) - Drop the dependency on
github.com/cyberdelia/go-metrics-graphite, which has been unmaintained for over ten
years, by inlining the small amount of code Nebula used. (#1832)
Fixed
- The ICMPv6 type was read from the wrong byte when classifying IPv6 packets, so the echo identifier used
for conntrack was never picked up. (#1840) - Enforce outbound message counter limits so a tunnel is rehandshaked before the counter can wrap, preventing
nonce reuse. This is unreachable in practice, but is enforced as a defense-in-depth measure. (#1841) - Prevent
nebula-cert cafrom running out of memory on 32bit systems when generating encrypted private keys. (#1834) - Tolerate
ErrDumpInterruptedwhen listing tun addresses on Linux, so a transient interrupted netlink dump
no longer aborts startup. (#1835)
Release notes
Open source →This tag was signed with the committer’s verified signature .
wadey Wade Simmons
GPG key ID: E6A335D7C5B6971A
Verified Learn about vigilant mode .
Release notes
Open source →See the v1.11.1 milestone for a complete list of changes.
Changed
- IPv6 packets whose next header is a protocol Nebula does not parse (SCTP, GRE, IP-in-IP, etc.) are now
classified as that protocol with no ports, closing a firewall bypass where a crafted payload could steer
the classifier into reading one as TCP/UDP and matching a TCP/UDP rule. These packets are now matched as
their true protocol, so only a
proto: anyrule allows them. If you carry one of these protocols over the overlay, confirm aproto: anyrule covers it before upgrading, it may have been passing only through this bypass. (#1840) - Drop the dependency on
github.com/cyberdelia/go-metrics-graphite, which has been unmaintained for over ten years, by inlining the small amount of code Nebula used. (#1832)
Fixed
- The ICMPv6 type was read from the wrong byte when classifying IPv6 packets, so the echo identifier used for conntrack was never picked up. (#1840)
- Enforce outbound message counter limits so a tunnel is rehandshaked before the counter can wrap, preventing nonce reuse. This is unreachable in practice, but is enforced as a defense-in-depth measure. (#1841)
- Prevent
nebula-cert cafrom running out of memory on 32bit systems when generating encrypted private keys. (#1834) - Tolerate
ErrDumpInterruptedwhen listing tun addresses on Linux, so a transient interrupted netlink dump no longer aborts startup. (#1835)
- IPv6 packets whose next header is a protocol Nebula does not parse (SCTP, GRE, IP-in-IP, etc.) are now
-
v1.11.1-0.20260821233340-9c5d7016489c21 Aug 2026 pre-releaseNothing published for this version
-
v1.11.1-0.20260821165738-edc3c5e0188621 Aug 2026 pre-releaseNothing published for this version
-
v1.11.1-0.20260804001204-aa1338b9848d04 Aug 2026 pre-releaseNothing published for this version
-
v1.11.1-0.20260803225344-599620f6ab7c03 Aug 2026 pre-releaseNothing published for this version
-
v1.11.1-0.20260731190928-6d124d04414e31 Jul 2026 pre-releaseNothing published for this version
-
v1.11.1-0.20260723220202-72bf1112094023 Jul 2026 pre-releaseNothing published for this version
-
v1.11.023 Jul 2026Release notes
Open source →See the v1.11.0 milestone for a complete list of changes.
Breaking
- Logging has switched from logrus to Go's structured
slog. Log output changes: levels are upper case
(level=INFO), trace prints aslevel=DEBUG-4, timestamps are always RFC3339Nano andlogging.timestamp_format
is ignored, and some messages were reworded. Review any log parsing before upgrading. This is also an API break
for embedders, as constructors now take a*slog.Logger. (#1672, #1734, #1621) firewall.inbound_actionandfirewall.outbound_action(used to set reject vs. drop policy) were each being
applied to the opposite direction, that is now corrected. This only affects how blocked packets are answered, not
which packets the firewall allows or denies. If you set either of these you are getting the behavior of the other
one today and likely want to swap them before upgrading. (#1798)- On Windows, Nebula now installs WFP PERMIT filters for the nebula adapter and the listener port by default. WFP
sits below Windows Defender Firewall, so any WDF inbound rules you rely on for either will no longer apply. Set
tun.windows_bypass_wdfandlisten.windows_bypass_wdfto false to leave WDF in charge. (#1710) - On Windows, the nebula device is now set to the
privatenetwork category instead of whatever Windows decided,
which is usuallyPublic. This makes the host firewall less restrictive on the overlay. Set
tun.network_categorytounsetto keep the old behavior. (#1710) - Reject packets for non-TCP now use ICMP code 13, communication administratively prohibited, instead of code 3,
port unreachable. Anything keying off the old code needs updating. (#1766, #1768) - The SSH debug server's profiling commands are now confined to
sshd.sandbox_dir, which defaults to
$TMP/nebula-debug. Relative paths resolve inside it and absolute paths outside it are rejected, so anything
scriptingstart-cpu-profile,save-heap-profile, orsave-mutex-profilewith a path elsewhere needs the
directory set. The directory is not created for you. (#1622)
Added
- Sign the Windows release binaries. (#1718)
- Generate IPv6 reject packets, matching the existing IPv4 behavior. (#1766, #1767, #1768)
- Accept
-innebula-certto read from stdin or write to stdout. (#1714) - Search for both
config.ymlandconfig.yamlin service and command line modes. (#1717) - Add version labels to the Docker/OCI images. (#1772)
- Rebind the listener and re-query lighthouses on macOS when the underlay network changes, so devices moving
between wifi and wired or between networks recover without waiting for dead tunnel detection. Controlled by
listen.rebind_on_network_change(defaulttrue, not reloadable). (#1816)
Changed
- Reload the firewall when the unsafe networks in the certificate change. (#1719)
- Reconfigure, start, and stop the stats listener on a config reload instead of requiring a restart. (#1670)
- Update a static host's addresses when they change on reload. (#1713)
- Don't require a port on ICMP firewall rules. (#1609)
- Connection track ICMP traffic. (#1602)
- Return
NODATAinstead ofNXDOMAINfrom the DNS server for a name that exists but has no record of the
requested type, so clients that queryAAAAfirst (busybox/Alpine) fall through toA. (#1668) - Record the local host's details in the DNS server. (#1716)
- Install Windows unsafe routes as link routes. (#1709)
- Reduce relay handshake log spam, and only log a handshake send error at error level when the remote list
changes. (#1733, #1765, #1810) - Start, stop, and reload subsystems (DNS, stats, conntrack, ssh, punchy) cleanly without leaking goroutines. (#1640, #1654, #1661, #1667, #1669, #1708, #1806, #1815)
Controlis now safe to stop and wait on from any lifecycle state, and a newControl.Waitblocks until nebula
has fully stopped and returns the first fatal reader error. Failed starts release the udp sockets and tun fd
instead of leaking them. (#1794)- Trigger an immediate lighthouse update when reconnecting to or adding a lighthouse instead of waiting for the next update tick. (#1645)
- Bring the Darwin and OpenBSD tun implementations in line with the other BSDs. (#1703)
- Update to build against go v1.26. (#1818)
- Various dependency updates. (#1586, #1587, #1604, #1617, #1618, #1627, #1628, #1629, #1652, #1664, #1665, #1697, #1721, #1732, #1742, #1743, #1750, #1763, #1771, #1782, #1800, #1807)
Fixed
- Fix a data race on a host's remote address that could send packets to the wrong address during a roam. (#1773)
- Fix tunnels that could permanently escape connection manager monitoring. (#1752)
- Fix a crash when reloading the SSH server's trusted keys. (#1787)
- Fix hostmap corruption when a host has multiple overlay addresses. Each address now gets its own list instead of
a single shared chain, which also fixes two latent bugs on the add and makePrimary paths. (#1788, #1790) - Apply
remote_allow_listIPv4 rules to 4-in-6 mapped addresses. (#1786) - Don't panic in the DNS server on a short or empty query name. (#1635)
- Advance the replay window on relayed packets so a relay drops replayed frames instead of re-forwarding them. (#1751)
- Fix a race in relay state handling. (#1753)
- Lock replay window updates so concurrent readers can't corrupt it. (#1802)
- Reject malformed handshakes more reliably, including invalid ed25519 key lengths. (#1601, #1756)
- Properly handle
closetunnelpackets. (#1638) - Fix an IPv6 extension-header length overflow that could make the firewall parse the wrong protocol and ports. (#1789)
- Fix relay re-establishment when a handshake arrives over a relay entry that a one-sided teardown left
Disestablished, which silently dropped every send until dead tunnel detection forced a re-handshake. (#1805) - Don't build new relay state on a tunnel that was just discarded. (#1796)
- Don't delete the wrong pending hostinfo in the handshake manager. (#1811)
- Don't call the packet reader after a UDP error on Darwin. (#1755)
- Open the FreeBSD tun device non blocking. (#1666)
Release notes
Open source →See the v1.11.0 milestone for a complete list of changes.
Breaking
- Logging has switched from logrus to Go's structured
slog. Log output changes: levels are upper case (level=INFO), trace prints aslevel=DEBUG-4, timestamps are always RFC3339Nano andlogging.timestamp_formatis ignored, and some messages were reworded. Review any log parsing before upgrading. This is also an API break for embedders, as constructors now take a*slog.Logger. (#1672, #1734, #1621) firewall.inbound_actionandfirewall.outbound_action(used to set reject vs. drop policy) were each being applied to the opposite direction, that is now corrected. This only affects how blocked packets are answered, not which packets the firewall allows or denies. If you set either of these you are getting the behavior of the other one today and likely want to swap them before upgrading. (#1798)- On Windows, Nebula now installs WFP PERMIT filters for the nebula adapter and the listener port by default. WFP
sits below Windows Defender Firewall, so any WDF inbound rules you rely on for either will no longer apply. Set
tun.windows_bypass_wdfandlisten.windows_bypass_wdfto false to leave WDF in charge. (#1710) - On Windows, the nebula device is now set to the
privatenetwork category instead of whatever Windows decided, which is usuallyPublic. This makes the host firewall less restrictive on the overlay. Settun.network_categorytounsetto keep the old behavior. (#1710) - Reject packets for non-TCP now use ICMP code 13, communication administratively prohibited, instead of code 3, port unreachable. Anything keying off the old code needs updating. (#1766, #1768)
- The SSH debug server's profiling commands are now confined to
sshd.sandbox_dir, which defaults to$TMP/nebula-debug. Relative paths resolve inside it and absolute paths outside it are rejected, so anything scriptingstart-cpu-profile,save-heap-profile, orsave-mutex-profilewith a path elsewhere needs the directory set. The directory is not created for you. (#1622)
Added
- Sign the Windows release binaries. (#1718)
- Generate IPv6 reject packets, matching the existing IPv4 behavior. (#1766, #1767, #1768)
- Accept
-innebula-certto read from stdin or write to stdout. (#1714) - Search for both
config.ymlandconfig.yamlin service and command line modes. (#1717) - Add version labels to the Docker/OCI images. (#1772)
- Rebind the listener and re-query lighthouses on macOS when the underlay network changes, so devices moving
between wifi and wired or between networks recover without waiting for dead tunnel detection. Controlled by
listen.rebind_on_network_change(defaulttrue, not reloadable). (#1816)
Changed
- Reload the firewall when the unsafe networks in the certificate change. (#1719)
- Reconfigure, start, and stop the stats listener on a config reload instead of requiring a restart. (#1670)
- Update a static host's addresses when they change on reload. (#1713)
- Don't require a port on ICMP firewall rules. (#1609)
- Connection track ICMP traffic. (#1602)
- Return
NODATAinstead ofNXDOMAINfrom the DNS server for a name that exists but has no record of the requested type, so clients that queryAAAAfirst (busybox/Alpine) fall through toA. (#1668) - Record the local host's details in the DNS server. (#1716)
- Install Windows unsafe routes as link routes. (#1709)
- Reduce relay handshake log spam, and only log a handshake send error at error level when the remote list changes. (#1733, #1765, #1810)
- Start, stop, and reload subsystems (DNS, stats, conntrack, ssh, punchy) cleanly without leaking goroutines. (#1640, #1654, #1661, #1667, #1669, #1708, #1806, #1815)
Controlis now safe to stop and wait on from any lifecycle state, and a newControl.Waitblocks until nebula has fully stopped and returns the first fatal reader error. Failed starts release the udp sockets and tun fd instead of leaking them. (#1794)- Trigger an immediate lighthouse update when reconnecting to or adding a lighthouse instead of waiting for the next update tick. (#1645)
- Bring the Darwin and OpenBSD tun implementations in line with the other BSDs. (#1703)
- Update to build against go v1.26. (#1818)
- Various dependency updates. (#1586, #1587, #1604, #1617, #1618, #1627, #1628, #1629, #1652, #1664, #1665, #1697, #1721, #1732, #1742, #1743, #1750, #1763, #1771, #1782, #1800, #1807)
Fixed
- Fix a data race on a host's remote address that could send packets to the wrong address during a roam. (#1773)
- Fix tunnels that could permanently escape connection manager monitoring. (#1752)
- Fix a crash when reloading the SSH server's trusted keys. (#1787)
- Fix hostmap corruption when a host has multiple overlay addresses. Each address now gets its own list instead of a single shared chain, which also fixes two latent bugs on the add and makePrimary paths. (#1788, #1790)
- Apply
remote_allow_listIPv4 rules to 4-in-6 mapped addresses. (#1786) - Don't panic in the DNS server on a short or empty query name. (#1635)
- Advance the replay window on relayed packets so a relay drops replayed frames instead of re-forwarding them. (#1751)
- Fix a race in relay state handling. (#1753)
- Lock replay window updates so concurrent readers can't corrupt it. (#1802)
- Reject malformed handshakes more reliably, including invalid ed25519 key lengths. (#1601, #1756)
- Properly handle
closetunnelpackets. (#1638) - Fix an IPv6 extension-header length overflow that could make the firewall parse the wrong protocol and ports. (#1789)
- Fix relay re-establishment when a handshake arrives over a relay entry that a one-sided teardown left
Disestablished, which silently dropped every send until dead tunnel detection forced a re-handshake. (#1805) - Don't build new relay state on a tunnel that was just discarded. (#1796)
- Don't delete the wrong pending hostinfo in the handshake manager. (#1811)
- Don't call the packet reader after a UDP error on Darwin. (#1755)
- Open the FreeBSD tun device non blocking. (#1666)
- Logging has switched from logrus to Go's structured
-
v1.10.4-0.20260729200425-a5cb635db49329 Jul 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260721233233-58f3b6fda7b121 Jul 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260717201645-147c202c27aa17 Jul 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260713164959-6c3972f464df13 Jul 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260713134042-861d3aabd71813 Jul 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260710170217-86733864fe7f10 Jul 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260709234814-5ecdd4eaa90d09 Jul 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260708153838-f671406b822808 Jul 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260708014326-c1eea118f4e808 Jul 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260701211214-02471b41211201 Jul 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260629174713-58ab7250f54f29 Jun 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260623182128-184cdc85864323 Jun 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260618160719-81afed439e4e18 Jun 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260616205114-7d3166a19df716 Jun 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260613015258-8fb18c4ac28013 Jun 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260610160323-2e9117da5bc010 Jun 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260603142527-b041f306cb2e03 Jun 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260522151953-3a95495c635522 May 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260522135237-c610b712afc522 May 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260508194319-398d67e2da3408 May 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260507200252-0f23fe048d0c07 May 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260507181841-f9fcb74365b107 May 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260507181533-1dd3eae8eb5b07 May 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260507163026-c82db210ef7a07 May 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260507153126-c774fd92dafd07 May 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260506162327-4fb5cdb4faaa06 May 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260504151258-b7e9939e921a04 May 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260501182138-33c2d7277c3a01 May 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260427172524-1ab1f71dba7b27 Apr 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260427144147-d0f02ba8734327 Apr 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260424181242-5f890dbc341024 Apr 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260424175720-ad0b87c9f85f24 Apr 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260421203332-e753e6e93c2121 Apr 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260420210826-e80b9830a3a720 Apr 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260403133718-f8587956babc03 Apr 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260325165937-91d1f4675ad025 Mar 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260323151540-9f1aef53fae923 Mar 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260316210740-1aa1a0476f6b16 Mar 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260219051937-51308b845b6f19 Feb 2026 pre-releaseNothing published for this version
-
v1.10.4-0.20260213185519-e8bb874e14e213 Feb 2026 pre-releaseNothing published for this version
-
v1.10.306 Feb 2026Release notes
Open source →Security
- Fix an issue where blocklist bypass is possible when using curve P256 since the signature can have 2 valid representations.
Both fingerprint representations will be tested against the blocklist.
Any newly issued P256 based certificates will have their signature clamped to the low-s form.
Nebula will assert the low-s signature form when validating certificates in a future version. GHSA-69x3-g4r3-p962
Changed
- Improve error reporting if nebula fails to start due to a tun device naming issue. (#1588)
Release notes
Open source →Security
- Fix an issue where blocklist bypass is possible when using curve P256 since the signature can have 2 valid representations. Both fingerprint representations will be tested against the blocklist. Any newly issued P256 based certificates will have their signature clamped to the low-s form. Nebula will assert the low-s signature form when validating certificates in a future version. GHSA-69x3-g4r3-p962
Changed
- Improve error reporting if nebula fails to start due to a tun device naming issue. (#1588)
- Fix an issue where blocklist bypass is possible when using curve P256 since the signature can have 2 valid representations.
-
v1.10.3-0.20260128160336-42bee7cf179f28 Jan 2026 pre-releaseNothing published for this version
-
v1.10.3-0.20260127190349-78885007d4a627 Jan 2026 pre-releaseNothing published for this version
-
v1.10.3-0.20260127184135-e4f8166f1a7627 Jan 2026 pre-releaseNothing published for this version
-
v1.10.221 Jan 2026Release notes
Open source →Release notes
Open source →Fixed
- Fix panic when using
use_system_route_tablethat was introduced in v1.10.1. (#1580)
Changed
- Fix some typos in comments. (#1582)
- Dependency updates. (#1581)
- Fix panic when using
-
v1.10.2-0.20260120161520-e1e92f017ce220 Jan 2026 pre-releaseNothing published for this version
-
v1.10.116 Jan 2026Release notes
Open source →See the v1.10.1 milestone for a complete list of changes.
Fixed
- Fix a bug where an unsafe route derived from the system route table could be lost on a config reload. (#1573)
- Fix the PEM banner for ECDSA P256 public keys. (#1552)
- Fix a regression on Windows from 1.9.x where nebula could fall back to a less performant UDP listener if
non-critical ioctls failed. (#1568) - Fix a bug in handshake processing when a peer sends an unexpected public key. (#1566)
Added
- Add a config option to control accepting
recv_errorpackets which defaults toalways. (#1569)
Changed
Release notes
Open source →See the v1.10.1 milestone for a complete list of changes.
Fixed
- Fix a bug where an unsafe route derived from the system route table could be lost on a config reload. (#1573)
- Fix the PEM banner for ECDSA P256 public keys. (#1552)
- Fix a regression on Windows from 1.9.x where nebula could fall back to a less performant UDP listener if non-critical ioctls failed. (#1568)
- Fix a bug in handshake processing when a peer sends an unexpected public key. (#1566)
Added
- Add a config option to control accepting
recv_errorpackets which defaults toalways. (#1569)
Changed
- Various dependency updates. (#1541, #1549, #1550, #1557, #1558, #1560, #1561, #1570, #1571)
-
v1.10.1-0.20260113060244-88379b89f5c613 Jan 2026 pre-releaseNothing published for this version
-
v1.10.1-0.20260109163509-69259e6307b009 Jan 2026 pre-releaseNothing published for this version
-
v1.10.1-0.20251210163936-3ec527e42cec10 Dec 2025 pre-releaseNothing published for this version
-
v1.10.004 Dec 2025Release notes
Open source →See the v1.10.0 milestone for a complete list of changes.
NOTE: If you use
unsafe_routes, please read the note in the Changed section aboutdefault_local_cidr_any. You may need to update your firewall rules in order to maintain connectivity.Added
- Support for ipv6 and multiple ipv4/6 addresses in the overlay.
A new v2 ASN.1 based certificate format.
Certificates now have a unified interface for external implementations.
(#1212, #1216, #1345, #1359, #1381, #1419, #1464, #1466, #1451, #1476, #1467, #1481, #1399, #1488, #1492, #1495, #1468, #1521, #1535, #1538) - Add the ability to mark packets on linux to better target nebula packets in iptables/nftables. (#1331)
- Add ECMP support for
unsafe_routes. (#1332) - PKCS11 support for P256 keys when built with
pkcs11tag (#1153, #1482)
Changed
- NOTE:
default_local_cidr_anynow defaults to false, meaning that any firewall rule
intended to target anunsafe_routesentry must explicitly declare it via the
local_cidrfield. This is almost always the intended behavior. This flag is
deprecated and will be removed in a future release. (#1373) - Improve logging when a relay is in use on an inbound packet. (#1533)
- Avoid fatal errors if
rountinesis > 1 on systems that don't support more than 1 routine. (#1531) - Log a warning if a firewall rule contains an
anythat negates a more restrictive filter. (#1513) - Accept encrypted CA passphrase from an environment variable. (#1421)
- Allow handshaking with any trusted remote. (#1509)
- Log only the count of blocklisted certificate fingerprints instead of the entire list. (#1525)
- Don't fatal when the ssh server is unable to be configured successfully. (#1520)
- Update to build against go v1.25. (#1483)
- Allow projects using
nebulaas a library with userspace networking to configure theloggerand build version. (#1239) - Upgrade to
yaml.v3. (#1148, #1371, #1438, #1478)
Fixed
- Fix a potential bug with udp ipv4 only on darwin. (#1532)
- Improve lost packet statistics. (#1441, #1537)
- Honor
remote_allow_listin hole punch response. (#1186) - Fix a panic when
tun.use_system_route_tableistrueand a route lacks a destination. (#1437) - Fix an issue when
tun.use_system_route_table: truecould result in heavy CPU utilization when many thousands of routes
are present. (#1326) - Fix tests for 32 bit machines. (#1394)
- Fix a possible 32bit integer underflow in config handling. (#1353)
- Fix moving a udp address from one vpn address to another in the
static_host_map
which could cause rapid re-handshaking with an incorrect remote. (#1259) - Improve smoke tests in environments where the docker network is not the default. (#1347)
Release notes
Open source →See the v1.10.0 milestone for a complete list of changes.
Added
- Support for ipv6 and multiple ipv4/6 addresses in the overlay. A new v2 ASN.1 based certificate format. Certificates now have a unified interface for external implementations. (#1212, #1216, #1345, #1359, #1381, #1419, #1464, #1466, #1451, #1476, #1467, #1481, #1399, #1488, #1492, #1495, #1468, #1521, #1535, #1538)
- Add the ability to mark packets on linux to better target nebula packets in iptables/nftables. (#1331)
- Add ECMP support for
unsafe_routes. (#1332) - PKCS11 support for P256 keys when built with
pkcs11tag (#1153, #1482)
Changed
- NOTE:
default_local_cidr_anynow defaults to false, meaning that any firewall rule intended to target anunsafe_routesentry must explicitly declare it via thelocal_cidrfield. This is almost always the intended behavior. This flag is deprecated and will be removed in a future release. (#1373) - Improve logging when a relay is in use on an inbound packet. (#1533)
- Avoid fatal errors if
rountinesis > 1 on systems that don't support more than 1 routine. (#1531) - Log a warning if a firewall rule contains an
anythat negates a more restrictive filter. (#1513) - Accept encrypted CA passphrase from an environment variable. (#1421)
- Allow handshaking with any trusted remote. (#1509)
- Log only the count of blocklisted certificate fingerprints instead of the entire list. (#1525)
- Don't fatal when the ssh server is unable to be configured successfully. (#1520)
- Update to build against go v1.25. (#1483)
- Allow projects using
nebulaas a library with userspace networking to configure theloggerand build version. (#1239) - Upgrade to
yaml.v3. (#1148, #1371, #1438, #1478)
Fixed
- Fix a potential bug with udp ipv4 only on darwin. (#1532)
- Improve lost packet statistics. (#1441, #1537)
- Honor
remote_allow_listin hole punch response. (#1186) - Fix a panic when
tun.use_system_route_tableistrueand a route lacks a destination. (#1437) - Fix an issue when
tun.use_system_route_table: truecould result in heavy CPU utilization when many thousands of routes are present. (#1326) - Fix tests for 32 bit machines. (#1394)
- Fix a possible 32bit integer underflow in config handling. (#1353)
- Fix moving a udp address from one vpn address to another in the
static_host_mapwhich could cause rapid re-handshaking with an incorrect remote. (#1259) - Improve smoke tests in environments where the docker network is not the default. (#1347)
- Support for ipv6 and multiple ipv4/6 addresses in the overlay.
-
v1.9.8-0.20251028195351-d6c5c00ef75f28 Oct 2025 pre-releaseNothing published for this version