Get started
Login
© 2024

Exit nodes (route all traffic)

Exit nodes capture all your network traffic. To configure Tailscale to only route specific subnets (the more common configuration), refer to subnet routers instead.

The exit node feature lets you route all non-Tailscale internet traffic through a specific device on your Tailscale network (known as a tailnet). The device routing your traffic is called an exit node.

Exit nodes are available for all plans.

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. The overlay network configuration is ideal for most people who need secure communication between sensitive devices (such as company servers or home computers), but don't need extra layers of encryption or latency for their public internet connection.

A diagram showing four devices in a Tailscale overlay network. A laptop is making a direct connection to google.com.

However, there might be times when you want Tailscale to route your public internet traffic. For example, you might want to route all your public internet traffic if:

  • You're in a cafe with untrusted Wi-Fi.
  • You're traveling overseas and need access to an online service (such as banking) only available in your home country.
A diagram showing four devices in a Tailscale overlay network where one is highlighted in blue and designated as an exit node. The laptop makes its connection to google.com through the Desktop device designated as an exit node.

You can route all your public internet traffic by setting a device on your network as an exit node. When you route all traffic through an exit node, you're effectively using default routes (0.0.0.0/0, ::/0), similar to how you would if you were using a typical VPN.

Configure an exit node

For security purposes, you must opt-in to exit node functionality. For example:

  • Every device must explicitly opt-in to using an exit node.
  • A device must advertise that it's willing to be an exit node.
  • An Owner, Admin, or Network admin must allow a device to be an exit node for the network.

Prerequisites

Before you can configure an exit node, you must:

  • Set up a Tailscale network, called a tailnet.
  • Ensure both the exit node and devices using the exit node run Tailscale v1.20 or later.
  • Ensure the exit node is a Linux, macOS, Windows, or Android device.
  • Ensure you allow (intended) users to use the exit node.

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 create an access rule that includes exit node uses in the autogroup:internet. They do not need access to the exit node itself to use the exit node.

The following example configuration 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:member"], "dst": ["autogroup:internet:*"] },

Install the Tailscale client

Download and install Tailscale onto the exit node machine. Each of the three macOS variants supports running an exit node.

There are three ways to run Tailscale on macOS. This document only applies to the macOS App Store and Standalone (GUI) versions. If you use tailscaled on macOS, use the Linux instructions.

From the Tailscale client installed on the device you plan to use as an exit node, select Exit Node > Run Exit Node.

If the device is authenticated by a user who can approve exit nodes in autoApprovers, the exit node will automatically be approved.

Allow the exit node from the admin console

This step is not required if using autoApprovers.

You must be an Admin to allow a device to be an exit node.

Open the Machines page of the admin console and locate the exit node device. You can identify the Exit Node badge in the machines list or use the property:exit-node filter to list all devices advertised as exit nodes.

From the ellipsis icon menu of the exit node, open the Edit route settings panel, and enable Use as exit node.

Use the exit node

Each device must enable the exit node separately. The instructions for enabling an exit node vary depending on the device's operating system.

You can use an exit node from the menu bar. Open the Tailscale menu and select Exit Nodes. (If you are running a Tailscale client version earlier than v1.60.0, the menu string to select is Use exit node.) Then, select the machine name of the exit node device to use.

To allow direct access to your local network when routing traffic through an exit node, select Allow Local Network Access.

The option to use an exit node only displays if there's an available exit node in your tailnet.

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 turn off routing through the exit node by selecting None from the exit node list.

Caveats

Tailscale support for running exit nodes on macOS is new and still undergoing optimization. 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, refer to Kernel vs. netstack subnet routing & exit nodes.

Sleeping

When running an exit node, you currently must 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.