You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- SSH / RDP / VNC into your home or work laptop from anywhere, without port forwarding or exposing anything to the internet
46
47
- reach selfhosted services (Nextcloud, Home Assistant, Bitwarden, ...) privately
47
48
- route traffic through a remote device as a SOCKS5 proxy — useful for bypassing regional blocks
49
+
- route *all* your traffic through a remote device at the IP layer — a full-tunnel VPN gateway / exit node
48
50
- LAN-style multiplayer gaming across the internet
49
51
- keep an old Android phone accessible for apps that only run there (e.g. with [scrcpy](https://github.com/Genymobile/scrcpy))
50
52
@@ -65,6 +67,7 @@ Tradeoffs worth knowing about:
65
67
66
68
- fully peer-to-peer, no coordination server — see [Why Anywherelan](#why-anywherelan) above
67
69
- route traffic through a device as a SOCKS5 proxy
70
+
- route **all** your traffic through a device — full-tunnel VPN gateway / exit node
68
71
- automatic NAT traversal via libp2p; falls back to community relays when a direct path isn't possible
69
72
- TLS 1.3 encryption (QUIC or TCP+TLS)
70
73
- built-in DNS: reach devices at `work-laptop.awl` instead of typing IPs
@@ -114,7 +117,7 @@ awl's transport security comes from [libp2p](https://docs.libp2p.io/).
114
117
115
118
awl ships in two desktop flavors:
116
119
117
-
-**`awl-tray`** — desktop build with a system-tray indicator: status at a glance, start/stop/restart, peer list. Use this for regular desktop usage.
120
+
-**`awl-tray`** — desktop build with a system-tray indicator: status at a glance, start/stop/restart, peer list, and quick exit-node selection (SOCKS5 proxy / VPN gateway). Use this for regular desktop usage.
118
121
-**`awl`** — headless server build, no GUI. Use this for servers and embedded devices.
119
122
120
123
Both share the same web UI and the same [CLI](#terminal-based-client).
@@ -242,6 +245,7 @@ In addition to the per-application SOCKS5 proxy, awl can route **all** of your I
242
245
-**macOS / Windows / other:****not supported yet** — awl will refuse to start with VPN gateway enabled. Windows-side code exists but is unfinished; see `vpn/sockmark/sockmark_windows.go` and `vpn/routes/nat_windows.go` for the open work items.
243
246
- IPv6 traffic is not tunnelled through the gateway in either direction (it is forwarded as a regular awl peer packet instead).
244
247
- Both client and exit-node sides require **CAP_NET_ADMIN** on Linux. AWL needs that already to bring up the TUN, so there is no extra capability to grant.
248
+
- The exit node sets up NAT through the host's `iptables` binary, which must be installed (on modern distros it resolves to `iptables-nft`). AWL only sees rules on whatever backend that binary uses; rules created against the other backend by unrelated software are invisible to it.
245
249
246
250
### Use a friend as your exit node (client side)
247
251
@@ -254,9 +258,8 @@ In addition to the per-application SOCKS5 proxy, awl can route **all** of your I
254
258
awl cli gateway client use --name="peer-name"
255
259
# or: awl cli gateway client use --pid=<peer-id>
256
260
```
257
-
Calling `client use` again with a different peer atomically switches to the new gateway.
258
-
3.**Restart `awl`** for the change to take effect. The OS-level routes and the libp2p socket marking that prevent the gateway from looping back through itself are wired up only at startup.
259
-
4. Verify:
261
+
This applies immediately — no restart needed. The OS-level routes and the libp2p socket marking that keep the gateway from looping back through itself are installed at runtime. Calling `client use` again with a different peer atomically switches to the new gateway. (On the Android app the change is applied by re-establishing the `VpnService` in place, also without restarting awl.)
262
+
3. Verify:
260
263
```bash
261
264
awl cli gateway status
262
265
curl ifconfig.me # should show the exit node's public IP
@@ -265,23 +268,22 @@ In addition to the per-application SOCKS5 proxy, awl can route **all** of your I
You can also flip these settings from the web UI / system-tray menu, or by editing `config_awl.json` directly while awl is stopped (`gateway.enabled`, `gateway.exitNodePeerID`).
274
+
You can also flip these settings from the web UI or the system-tray menu — both expose the exit-node picker and the "Serve as VPN gateway" toggle — or by editing `config_awl.json` directly while awl is stopped (`gateway.enabled`, `gateway.exitNodePeerID`).
273
275
274
276
### Serve as an exit node
275
277
276
278
To allow others to route their internet traffic through this device:
277
279
278
-
1.Set `gateway.serveAsVPNGateway: true` in `config_awl.json`(it is **off by default** — see "Why off by default" below) and restart awl. Equivalent: `awl cli gateway server enable` (and `awl cli gateway server disable` to turn it back off).
280
+
1.Enable it with `awl cli gateway server enable` (and `awl cli gateway server disable` to turn it back off), or set `gateway.serveAsVPNGateway: true` in `config_awl.json`while awl is stopped. It is **off by default** — see "Why off by default" below. You can also use the "Serve as VPN gateway" toggle in the web UI or system tray.
279
281
2. For each friend you want to permit, also tick *Allow as exit node* in their per-peer settings (or `awl cli peers allow_exit_node --name=… --allow=true`). The same flag governs SOCKS5; if you want different per-peer policies for SOCKS5 vs VPN gateway, file a request and we'll split it.
280
-
3.Restart awl. On startup AWL will:
282
+
3.Enabling exit-node mode applies immediately (no restart). AWL will:
281
283
- flip `net.ipv4.ip_forward` on,
282
284
- install a dedicated `AWL-FORWARD` iptables chain that DROPs traffic to your LAN/CGNAT/link-local subnets and ACCEPTs the rest,
283
285
- add a `MASQUERADE` rule for the awl subnet,
284
-
- reverse all of the above on a clean shutdown.
286
+
- reverse all of the above when you disable it or on a clean shutdown.
285
287
4. Connected friends can now pick you in their `gateway list` output once the next status exchange propagates the new state (≤ 5 minutes, or on next reconnect).
0 commit comments