docs(changelog): add highlight for libp2p AllAddrs behavior change (#11183)
go-libp2p v0.47.0 [1] returns addresses from all interfaces when listening on 0.0.0.0, improving VPN/WireGuard/Tailscale connectivity. note impact for users without the server profile. [1] https://github.com/libp2p/go-libp2p/releases/tag/v0.47.0
Marcin Rataj committed
Feb 9, 2026 at 07:09 UTC
0fed2c35c31c0b486ec41cb769a963af5fc34595
1 file changed
+16
docs/changelogs/v0.40.md
+16
@@ -30,6 +30,7 @@ This release was brought to you by the [Shipyard](https://ipshipyard.com/) team.
30
- [🔖 New `ipfs name get|put` commands](#-new-ipfs-name-getput-commands)
31
- [📋 Long listing format for `ipfs ls`](#-long-listing-format-for-ipfs-ls)
32
- [🖥️ WebUI Improvements](#-webui-improvements)
33
+ - [📢 libp2p announces all interface addresses](#-libp2p-announces-all-interface-addresses)
34
- [📦️ Dependency updates](#-dependency-updates)
35
- [📝 Changelog](#-changelog)
36
- [👨👩👧👦 Contributors](#-contributors)
@@ -297,6 +298,21 @@ The Inspect button now resolves `/ipfs/` and `/ipns/` paths to their final CID b
298
299
> 
300
301
+#### 📢 libp2p announces all interface addresses
302
+
303
+go-libp2p [v0.47.0](https://github.com/libp2p/go-libp2p/releases/tag/v0.47.0) includes a rewritten routing library ([`go-netroute`](https://github.com/libp2p/go-netroute/pull/64)) that fixes interop with VPN and WireGuard/Tailscale setups. A side effect: when listening on `0.0.0.0`, libp2p now returns addresses from all network interfaces instead of just the primary one ([go-libp2p#3460](https://github.com/libp2p/go-libp2p/issues/3460)).
304
+
305
+This means easier connectivity and less manual configuration for most desktop, VPN, and self-hosted users. However, if you don't run with the [`server` profile](https://github.com/ipfs/kubo/blob/master/docs/config.md#server-profile) and have an empty [`Addresses.NoAnnounce`](https://github.com/ipfs/kubo/blob/master/docs/config.md#addressesnoannounce), your node may now announce internal addresses (e.g. Docker bridge `172.17.0.0/16` or Tailscale `100.64.0.0/10`) to the DHT. In the default setup, AutoNAT will probe and mark unreachable ones as offline and they won't be listed, but you can also filter them out explicitly.
306
+
307
+To check what your node announces and filter out unwanted ranges:
308
+
309
+```console
310
+$ ipfs swarm addrs local
311
+$ ipfs config --json Addresses.NoAnnounce '["/ip4/172.17.0.0/ipcidr/16"]'
312
+```
313
+
314
+The [`server` profile](https://github.com/ipfs/kubo/blob/master/docs/config.md#server-profile) already [filters common private ranges](https://github.com/ipfs/kubo/blob/master/config/profile.go#L24-L43) via `Addresses.NoAnnounce`.
315
+
316
#### 📦️ Dependency updates
317
318
- update `go-libp2p` to [v0.47.0](https://github.com/libp2p/go-libp2p/releases/tag/v0.47.0) (incl. [v0.46.0](https://github.com/libp2p/go-libp2p/releases/tag/v0.46.0))