What's Changed
This release adds invite links, .awl names on Android and a macOS app. It also fixes TCP hole punching and several security issues, and reduces background traffic to offline peers.
Notable changes:
- Invite links. Send a link or show its QR code, and the device that opens it joins without a manual accept. Works in the web UI, the Android app and the CLI. Both devices need v0.20.0.
.awlnames on Android.ping laptop.awlandhttp://nas.awlnow work from your phone, unless Private DNS is set to a hostname.- macOS app. awl-tray is now
Anywherelan.appin a.dmg, for Apple Silicon and Intel. - TCP hole punching fixed. It didn't work on Linux, Windows and Android since v0.18.0, so more connections went through relays.
- Less background traffic. On a laptop with 10 offline peers, DHT traffic dropped by up to 10x.
- Friend requests. Android notifications now work, pending requests are shown in the peer list, and blocked peers can be unblocked.
- Security fixes in the SOCKS5 exit node and in friend requests, see GHSA-fg78-6vg7-9m4c. Thanks to @EQSTLab for the report.
- Thanks to @NNdroid for experimental IPv6 support and @kg6zvp for the Linux tray icon fix! :heart:
The full list of changes is in [CHANGELOG.md](https://github.com/anywherelan/awl/blob/v0.20.0/CHANGELOG.md#0200.
Upgrade notes
- macOS: v0.19.0 can't see this update, because Check for updates was broken there. Quit awl, download the
.dmgand drag Anywherelan onto Applications. On the first launch macOS blocks the app: allow it in System Settings → Privacy & Security → Open Anyway. Your config in~/Library/Application Support/anywherelanis kept. If you keptconfig_awl.jsonnext to the old binary, move it there first. From now on, updates on macOS are manual: the tray tells you about a new version and opens its download page. - macOS 12 and older are no longer supported.
- Devices on v0.19.0 and older have no link: to add one, paste its peer ID into Add peer.
- SOCKS5 exit node: devices that use yours as a SOCKS5 exit node can no longer reach your LAN or your other awl peers through it. For LAN access through an exit node, follow #268. The exit node enforces the new rules, so update the exit node. A new client works with older exit nodes.
- SOCKS5 address: new installs listen on
127.0.0.1:1066instead of127.0.0.66:8080. Existing configs keep their address. If another app needs port 8080, changesocks5.listenAddressinconfig_awl.jsonand restart awl. - Domain names: names are normalized when the config loads. If two of your peers had the same name, such as
NASandnas, the one added later becomesnas_0.awl. Checkawl cli peers statusafter upgrading.
Changelog:
- Upgrade Vietnamese Bootstrap to new server with 8 thread CPU by @pftmclub in https://github.com/anywherelan/awl/pull/265
- awldns: resolve .awl names on Android via a netstack DNS interceptor by @pymq in https://github.com/anywherelan/awl/pull/264
- config: rework saving to be atomic and asynchronous by @pymq in https://github.com/anywherelan/awl/pull/266
- feat(linux): add IPv6 support for VPN gateway by @NNdroid in https://github.com/anywherelan/awl/pull/262
- invites: add invite links for automatic peer acceptance by @pymq in https://github.com/anywherelan/awl/pull/269
- fix: tray icon path was not returned properly by @kg6zvp in https://github.com/anywherelan/awl/pull/273
- macOS: build awl-tray as an .app bundle in a .dmg by @pymq in https://github.com/anywherelan/awl/pull/279
- tunnel: IPv6: make opt-in, validate peer addresses, block IPv6 on the gateway client again by @pymq in https://github.com/anywherelan/awl/pull/282
- all: update Go 1.26.4 --> 1.26.8, update dependencies by @pymq in https://github.com/anywherelan/awl/pull/283
- p2p: fix TCP hole punching broken by socket marking by @pymq in https://github.com/anywherelan/awl/pull/284
- p2p: back off reconnects to unreachable peers and bootstrap nodes, cutting DHT traffic by @pymq in https://github.com/anywherelan/awl/pull/285
- api: add peers/unblock endpoint by @pymq in https://github.com/anywherelan/awl/pull/286
- auth_status: fix peers staying "not confirmed" after adding each other by @pymq in https://github.com/anywherelan/awl/pull/287
- cli: handle incoming requests and blocked peers, rework help by @pymq in https://github.com/anywherelan/awl/pull/288
- ci: lint and build all release platforms by @pymq in https://github.com/anywherelan/awl/pull/289
- Limit auth requests, fix peer domain names and startup failures by @pymq in https://github.com/anywherelan/awl/pull/290
- socks5: block local addresses on the exit node, bypass it for .awl and localhost by @pymq in https://github.com/anywherelan/awl/pull/291
- Change default SOCKS5 address to 127.0.0.1:1066, start when the port is taken, check updates every 48h by @pymq in https://github.com/anywherelan/awl/pull/292
- cmd/gomobile-lib: return the running config from GetConfig by @pymq in https://github.com/anywherelan/awl/pull/293
- docs: add changelog and security policy, update README for v0.20.0 release by @pymq in https://github.com/anywherelan/awl/pull/294
Android app and web UI (awl-flutter):
- android: route device DNS through the awldns interceptor in https://github.com/anywherelan/awl-flutter/pull/38
- Add invite links in https://github.com/anywherelan/awl-flutter/pull/39
- Fix copy buttons on the web build over plain HTTP in https://github.com/anywherelan/awl-flutter/pull/40
- Redesign the blocked peers screen and add unblocking in https://github.com/anywherelan/awl-flutter/pull/41
- Offline errors and diagnostics export in https://github.com/anywherelan/awl-flutter/pull/42
- Fix friend request notifications and list incoming requests in the app in https://github.com/anywherelan/awl-flutter/pull/43
New Contributors
- @NNdroid made their first contribution in https://github.com/anywherelan/awl/pull/262
- @kg6zvp made their first contribution in https://github.com/anywherelan/awl/pull/273
Full Changelog: https://github.com/anywherelan/awl/compare/v0.19.0...v0.20.0 Milestone: v0.20.0
Installation
For instructions on how to install anywherelan see readme.
Android
Desktop version (awl-tray)
Windows binary builds
awl-tray-windows-386-v0.20.0.zip
awl-tray-windows-amd64-v0.20.0.zip
awl-tray-windows-arm64-v0.20.0.zip
Windows 7 binary builds
awl-tray-windows7-386-v0.20.0.zip
awl-tray-windows7-amd64-v0.20.0.zip
macOS app
(arm64 — Apple Silicon, amd64 — Intel)
awl-tray-macos-amd64-v0.20.0.dmg
awl-tray-macos-arm64-v0.20.0.dmg
Linux binary builds
awl-tray-linux-386-v0.20.0.tar.gz (github.com)
awl-tray-linux-amd64-v0.20.0.tar.gz (github.com)
awl-tray-linux-arm-v0.20.0.tar.gz (github.com)
awl-tray-linux-arm64-v0.20.0.tar.gz (github.com)
awl-tray-linux-mips-v0.20.0.tar.gz (github.com)
awl-tray-linux-mipsle-v0.20.0.tar.gz (github.com)
Server version (awl)
Linux binary builds
awl-linux-386-v0.20.0.tar.gz (github.com)
awl-linux-amd64-v0.20.0.tar.gz (github.com)
awl-linux-arm-v0.20.0.tar.gz (github.com)
awl-linux-arm64-v0.20.0.tar.gz (github.com)
awl-linux-mips-v0.20.0.tar.gz (github.com)
awl-linux-mipsle-v0.20.0.tar.gz (github.com)
Windows binary builds
awl-windows-386-v0.20.0.zip
awl-windows-amd64-v0.20.0.zip
awl-windows-arm64-v0.20.0.zip
Windows 7 binary builds
awl-windows7-386-v0.20.0.zip
awl-windows7-amd64-v0.20.0.zip
Checksums (SHA-256)
Verify a downloaded file with sha256sum -c (or shasum -a 256 -c). Anywherelan's builds are reproducible — see Reproducible builds.
bc0cc5deb77ec67215a01a9a78655ed889661bc539ae0f005b9dc9e775e3557c awl-android-v0.20.0.apk
0c1440590d38e103fb106cc279bf7031eb9c9630e4be00d1e64a8f1b28ebfb6a awl-linux-386-v0.20.0.tar.gz
fe1a004ca9e050cabfe158ae33c6a0760d89e4dbadaa735a0966042a8cbd0ff7 awl-linux-amd64-v0.20.0.tar.gz
404b79a2fe9703d94a21850410d776b9af0ef9dd7d88dc57c937134b198c2fdd awl-linux-arm-v0.20.0.tar.gz
b1e7bc967a03697bd799414ececca0dfe0a0232e362b9397918afee186557840 awl-linux-arm64-v0.20.0.tar.gz
40d7e0013f54e505c661442cb22e9ae9ece96da2a363d61ccff80b27550ddc54 awl-linux-mips-v0.20.0.tar.gz
a18a2cbd16d3c1f152392e6471671e0bf23bf72b5362b434a6c65bf1ed69868b awl-linux-mipsle-v0.20.0.tar.gz
20916b35e63664aa9e5d1c1e48872024ef06490c35f14dd828f5301e378fee77 awl-tray-linux-386-v0.20.0.tar.gz
7bfc5bf498cdaaab7cb03a28264d3845b5db22f6c0f766c53cc81735b78caf7a awl-tray-linux-amd64-v0.20.0.tar.gz
e94aecd9896c9f299bf412938a5879742386c2d8e2cffa556d1d093a18ac940c awl-tray-linux-arm-v0.20.0.tar.gz
603683d4901066a08f813064e6bd98075b097dd51c60e19757d4051ac09fbaf8 awl-tray-linux-arm64-v0.20.0.tar.gz
309002b45a3c09656a352fc017ff236f7e35bc6ed0796e7e235afba3196dad98 awl-tray-linux-mips-v0.20.0.tar.gz
a245754f4a7f2f0e2f4007749efbd39588fb1a5e77b815e2c7d68a1dedad69e2 awl-tray-linux-mipsle-v0.20.0.tar.gz
df46bac24eab6a390c8ff48c98cab0776c9b04fcf3a074fc036aae0480e9c26b awl-tray-macos-amd64-v0.20.0.dmg
5b403929c9ffd8d874bd6d9debc81caaa6804ff9eaf9caf710b3acd5b51cd364 awl-tray-macos-arm64-v0.20.0.dmg
aa125443e1a2a5df45fa22c46affcd8cae69ef6156ca5911c3e3d3cc3378976b awl-tray-windows-386-v0.20.0.zip
8cf4fea030a5fbb749c9629009a4f630eac0fb74504159ccd677e174475b0e49 awl-tray-windows-amd64-v0.20.0.zip
1626fa22b9d85f57bfeba534dffe94918549d5578952a46899b4035064dc83b2 awl-tray-windows-arm64-v0.20.0.zip
b92fc4468a537ad7ff500af530f0094eea8ebed3ef43ef175e27ee3d1ea4553e awl-tray-windows7-386-v0.20.0.zip
7dafa79cae63802a0ccbcb9a3e570633a7c8d0c9a926b6b5c4426db76f37e8a0 awl-tray-windows7-amd64-v0.20.0.zip
02060df7bf935ccb86b975b7f9c615f7dd4d09430f50c37ed8253f200dcfe724 awl-windows-386-v0.20.0.zip
7d149668cf45d1aa9439cef88e75c73dc323adfb5d8f099c5fdbebe438e17918 awl-windows-amd64-v0.20.0.zip
2445876054a8e83ee5c7ac365831bf46db71287d752dc33d9bacf9bee14d9dba awl-windows-arm64-v0.20.0.zip
a25b3e3541b663a1700cf276e4c37d70e685d0b759f580253e14d1637aac340a awl-windows7-386-v0.20.0.zip
20979a46e97cfc7de55b2cb0d73a43cc66fc659df2de33f5cd2444ac0e5b0d8b awl-windows7-amd64-v0.20.0.zip