Exit Nodes (route all traffic)
The exit node feature lets you route all non-Tailscale internet traffic through a specific device on your network. The device routing your traffic is called an “exit node.”
By default, Tailscale acts as an overlay network: it only routes traffic between devices running Tailscale, but doesn’t touch your public internet traffic, such as when you visit Google or Twitter. This is ideal for most people, who need secure communication between sensitive devices (company servers, home computers), but don’t need extra layers of encryption or latency for their public internet connection.
However, there may be times when you do want Tailscale to route your public internet traffic: in a cafe with untrusted Wi-Fi, or when traveling overseas and needing access to an online service (such as banking) only available in your home country.
By setting a device on your network as an exit node, you can use it to route all your public internet traffic as needed, like a consumer VPN.
If you’ve ever used default routes (0.0.0.0/0, ::/0) with other VPNs or native WireGuard®, exit nodes are Tailscale’s equivalent. Exit nodes use default routes under the hood.
Configuring an exit node
Let’s walk through how to configure an exit node for your network. For security purposes, every device must explicitly opt in to using the exit node:
- A device must advertise that it’s willing to be an exit node.
- An Owner, Admin, or Network admin must allow it to be an exit node for the network.
- And then other devices on your network can use that exit node as they’d like.
Prerequisites
-
Before you begin this guide, you’ll need a Tailscale network set up and configured with at least two devices. Read our getting started guide if you need help with this.
-
Ensure both the exit node and devices using the exit node are running Tailscale v1.20 or later.
-
Ensure your exit node is a Linux, macOS, Windows, or Android device.
-
If your tailnet is using the default ACL, users of your tailnet already have access to any exit nodes that you configure. If you have modified your ACL, ensure you have created an ACL rule that grants access to
autogroup:internet
to users who you wish to use exit nodes. They do not need access to the exit node itself in order to use the exit node. Here’s an example line to add to your ACL that allows all users access to the internet through an exit node:// All users can use exit nodes // If you are using the default ACL, this rule is not needed because the // default ACL allows all users access to the internet through an exit node { "action": "accept", "src": ["autogroup:members"], "dst": ["autogroup:internet:*"] },
Step 1: Advertise a device as an exit node
Android
From the device you’d like to use as an exit node, in the Tailscale client, select the Run exit node menu item.
Linux
Enable IP forwarding
If your Linux system has a /etc/sysctl.d
directory, use:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
Otherwise, use:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf
If your Linux node uses firewalld
, you may need to
also allow masquerading due to a
known issue. As a workaround, you can allow masquerading with this command:
firewall-cmd --permanent --add-masquerade
Other distros may require different steps.
When enabling IP forwarding, ensure your firewall is set up to deny traffic
forwarding by default. This is a default setting for common firewalls like ufw
and firewalld
, and ensures your device doesn’t route traffic you don’t intend.
Advertise the device as an exit node
From the device you’d like to use as an exit node, re-run tailscale up
with
the --advertise-exit-node
flag, along with any other flags you normally use:
sudo tailscale up --advertise-exit-node
macOS
tailscaled
on macOS, the instructions are the same as Linux.From the device you’d like to use as an exit node, in the Tailscale client, select the Run exit node menu item under the Exit node submenu.
Windows
From the device you’d like to use as an exit node, in the Tailscale client, select the Run exit node menu item under the Exit node submenu.
If the device is authenticated by a user who can approve exit nodes in autoApprovers
, then the exit node will automatically be approved.
Step 2: Allow the exit node from the admin console
This step is not required if using autoApprovers
.
An admin in your network must now allow this device to be used as an exit node.
Open the machines page in the admin console, and locate the
exit node device. You can look for the Exit Node badge in the machines list,
or use the attribute:exit-node
filter
to see all devices claiming to be exit nodes.

Look for the ’exit node’ badge to see devices advertising as exit nodes.
Once you’ve found the machine, from the
menu, open the Edit route settings panel, and enable the Use as exit node option.

Step 3: Use the exit node
You can now use the exit node from devices in your network. Each device must enable the exit node separately.
Instructions differ depending on the OS:
Android
You can use an exit node from the
menu in the top-right of the screen.

From this menu, select Use exit node and then choose the exit node you’d like to use. If you want to allow direct access to your local network when traffic is routed via an exit node, select Allow LAN access. You can also select None to disable use of an exit node.
iOS
You can use an exit node from the
menu in the top-right of the screen.

From this menu, select Use exit node and then choose the exit node you’d like to use. You can also select None to disable use of an exit node.
Linux
Re-run tailscale up with the --exit-node=
flag, passing
the Tailscale 100.x.y.z IP address of the exit node.
sudo tailscale up --exit-node=<exit-node-ip>
You can find the IP address for the device from the admin console, or by running
tailscale status
.
Alternatively, set --exit-node-allow-lan-access
to true to allow direct access to your local network
when traffic is routed via an exit node.
sudo tailscale up --exit-node=<exit-node-ip> --exit-node-allow-lan-access=true
macOS
You can use an exit node from the menu bar. Open the Tailscale menu and navigate to Use exit node. From here you can select the exit node device you’d like to use by its machine name.

If you want to allow direct access to your local network when traffic is routed via an exit node, select Allow local network access.
Windows
You can use an exit node from the system tray menu. Click on Tailscale icon and navigate to Use exit node. From here you can select the exit node device you’d like to use by its machine name.

If you want to allow direct access to your local network when traffic is routed via an exit node, select Allow local network access.
Step 4: Done!
You can verify that your traffic is routed by another device by checking your public IP address using online tools. You should see the exit node’s public IP rather than your local device’s IP.
You can disable routing through the exit node at any time by selecting None from the same menu used in step 3.
Caveats
Android
Tailscale support for running exit nodes on Android is new and still being optimized. The device should be plugged in if it will be used as an exit node for an extended period of time. Android exit nodes are limited to userspace routing.
Userspace
On Android, the exit node is implemented in userspace, which differs from the default Linux exit node implementation and is not as mature or fully optimized. For details, see Kernel vs. Userspace Subnet Routing & Exit Nodes.
macOS
Tailscale support for running exit nodes on macOS is new and still being optimized. macOS exit nodes are limited to userspace routing and require you to prevent your device from sleeping to maintain a connection.
Userspace
On macOS, the exit node is implemented in userspace, which differs from the default Linux exit node implementation and is not as mature or fully optimized. For details, see Kernel vs. Userspace Subnet Routing & Exit Nodes.
Sleeping
When running an exit node, you currently need to prevent the computer from going to sleep if you want the exit node to remain available.
In macOS System Preferences, under Energy Saver, select Prevent computer from sleeping automatically when the display is off.
Windows
Tailscale support for running exit nodes on Windows is new and still being optimized. Windows exit nodes are limited to userspace routing, require DNS in a system thread, and require you to prevent your device from sleeping to maintain a connection.
Userspace
On Windows, the exit node is implemented in userspace, which differs from the default Linux exit node implementation and is not as mature or fully optimized. For details, see Kernel vs. Userspace Subnet Routing & Exit Nodes.
DNS
When Tailscale is operating as an exit node, it also runs a DNS server for peers behind the exit node to use as their DNS server.
Tailscale’s DNS server implementation on Windows currently occupies a system thread (and thus system memory) for each ongoing DNS query. For low numbers of concurrent queries, this is fine, but it might be problematic for heavily used exit nodes.
Sleeping
When running an exit node, you’ll probably want to check “Run Unattended”, so Tailscale continues to run even after you log out (or the machine reboots, such as for Windows updates).
You also currently need to prevent the computer from going to sleep if you want the exit node to remain available.