Skip to content

Tailscale network

Routes

Show details including routes:

tailscale status --json

Show advertised routes by current node:

tailscale debug prefs | jq .AdvertiseRoutes

Advertise routes on node:

tailscale set --advertise-routes=192.168.223.20/32,192.168.223.21/32

This route advertisement needs to get approved in the Headscale UI! All other nodes need to accept routes advertised by other nodes (see below).

Accept

Show if client is accepting routes advertised by oder nodes:

tailscale debug prefs |jq .RouteAll

Accept all routes advertised by other nodes:

sudo tailscale set --accept-routes

Show advertised routes by peers:

tailscale status --json \
  | jq '.Peer[] | "\(.HostName) \((.PrimaryRoutes // ["-"])[])"' | sort

Subnet router

In cases where you can't install Tailscale on every device on your physical network, you can set up a subnet router to access these devices from your tailnet. Subnet routers respect features like access control policies.

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

nftables

This commit adds nftable rule injection for tailscaled. If tailscaled is started with envknob TS_DEBUG_USE_NETLINK_NFTABLES = true, the router will use nftables to manage firewall rules.