guest@tailnet:~/setup

guest@tailnet:~/setup$ cat guide.md

tailscale_setup

// put a linux host on your tailnet as a subnet-router + exit-node — then reach it, and the whole LAN behind it, from any device, anywhere.

laptop phone desktop laptop server
[ 01 ] account + tailnet
  • Go to login.tailscale.comGet started / Sign up
  • Log in with SSO (Google / GitHub / Microsoft) — this automatically creates your tailnet
  • The free plan is enough for personal use
[ 02 ] find the local network's cidr

Look at the network on your main interface, then use that CIDR in step 03.

shell
$ ip -4 route | grep -v default
# e.g.: 192.168.1.0/24 dev eth0 ...  ->  the CIDR is 192.168.1.0/24
powershell
Get-NetRoute -AddressFamily IPv4 | Select-Object DestinationPrefix
# find your LAN row, e.g. 192.168.1.0/24  (ipconfig also shows IP + mask)
terminal
ifconfig | grep "inet "
# inet 192.168.1.42 netmask 0xffffff00 ...  ->  0xffffff00 = /24, CIDR 192.168.1.0/24
[ 03 ] host (server)

3.1 — install

shell
$ curl -fsSL https://tailscale.com/install.sh | sh
$ sudo systemctl enable --now tailscaled

3.2 — authenticate (open the printed URL in a browser and approve)

shell
$ sudo tailscale up --ssh

3.3 — enable IP forwarding (needed for subnet router / exit node)

shell
$ 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

3.4 — set hostname

shell
$ sudo tailscale set --hostname=example-server   # pick any name you like

3.5 — advertise subnet + exit node (replace CIDR with the one from step 02)

shell
$ sudo tailscale set --advertise-routes=192.168.1.0/24 --advertise-exit-node
# 192.168.1.0/24 is only an example — use your own CIDR from step 02

3.6 — get the host's IP

shell
$ tailscale ip -4      # example output -> 100.101.102.103

1 — install

Download the client from tailscale.com/download, install it, and sign in with your account.

2 — advertise subnet + exit node

powershell (admin)
tailscale set --advertise-routes=192.168.1.0/24 --advertise-exit-node
# 192.168.1.0/24 is only an example — find yours with: ipconfig

No IP-forwarding / sysctl step here — that's Linux-only. Exit node can also be toggled from the tray icon → Exit Node.

3 — optional: set a hostname

powershell
tailscale set --hostname=example-server

4 — get the host's IP

powershell
tailscale ip -4

1 — install (App Store or Standalone GUI variant)

Install from tailscale.com/download or the App Store, then sign in.

2 — run as exit node

menu bar
  • Tailscale icon → Exit NodeRun Exit Node (you must be an admin to allow it)

3 — advertise subnet routes

Enable the CLI first: Tailscale menu → Settings → turn on CLI. Then:

terminal
tailscale set --advertise-routes=192.168.1.0/24
# 192.168.1.0/24 is only an example — find yours with: ifconfig

4 — get the host's IP

terminal
tailscale ip -4
good to know
  • The macOS exit node runs in userspace routing — slower and less optimized than Linux's kernel routing.
  • Keep the Mac awake: System Settings → Energy → prevent automatic sleeping, or the exit node drops offline.
  • Running the open-source tailscaled variant instead? Follow the Linux tab.

Whichever OS you pick, still approve the routes and exit node in the admin console — that's step 04.

[ 04 ] admin console

At login.tailscale.com:

console actions
  • DNSEnable MagicDNS
  • Machines → the host → three-dot menu:
    • Disable key expiry
    • Edit route settings → check the subnet + Use as exit nodeSave
[ 05 ] clients

Install Tailscale and log in with the same account. On Windows / macOS / iOS / Android the Use subnets and Exit Node toggles live in the app's menu — and advertised routes are accepted by default there.

[ 06 ] verify
shell
$ tailscale status      # who's on the network, direct/relay, exit node
$ tailscale ip -4
$ curl ifconfig.me      # through the exit node -> the host's public IP
tailnet/setup mesh vpn on wireguard 06 steps click [copy] — prompt & comments stripped