From 280ed86975775bcb58653c5f1dfbe8252877c512 Mon Sep 17 00:00:00 2001 From: Ryan Freeman Date: Fri, 20 Jun 2025 22:50:24 +0100 Subject: [PATCH] New post --- .../enable-subnet-routes.png | Bin 0 -> 25984 bytes .../page.mdx | 79 ++++++++++++++++++ components/ui/Code.tsx | 2 +- 3 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 app/writing/using-tailscale-and-subnet-routers-to-access-legacy-devices/enable-subnet-routes.png create mode 100644 app/writing/using-tailscale-and-subnet-routers-to-access-legacy-devices/page.mdx diff --git a/app/writing/using-tailscale-and-subnet-routers-to-access-legacy-devices/enable-subnet-routes.png b/app/writing/using-tailscale-and-subnet-routers-to-access-legacy-devices/enable-subnet-routes.png new file mode 100644 index 0000000000000000000000000000000000000000..1d134274de906924cb8b5f5c4d58579db938943c GIT binary patch literal 25984 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ె@6B|fwK7aT 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 + + +Recently, I ran into some trouble accessing an old CCTV system on my network. The P2P feature stopped working, which meant I could no longer connect to it remotely. + +I considered setting up port forwarding and dynamic DNS to regain access on the go. However, this would involve exposing the system to the Internet and given how vulnerable these devices can be, I didn't want to take that risk. + +So what were my options? Well I thought about installing the Tailscale client on the system, in this way I could access it securely from anywhere. However, I couldn't SSH into the device, so this wasn't an option. + +## Subnet routers + +After some more research, I discovered a Tailscale feature called [subnet routers](https://tailscale.com/kb/1019/subnets). This feature allows you to configure a device in your Tailscale network to act as a gateway for routing traffic to devices located in other subnets. + +This was the perfect solution as it allows you to access services on legacy devices without installing the Tailscale client. Furthermore, I could access the CCTV system securely via Tailscale without having to expose it to the Internet. + +### Setting it up + +Setting up the subnet router was straightforward, I chose an existing device in my Tailscale network which was running Ubuntu server. The first step was to enable IP forwarding on the device, essentially this allows the system to forward packets between different interfaces. + +```bash +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 +``` + +This command works for most Debian-based Linux distributions, but check the Tailscale documentation if it doesn't work for you. + +### Advertise subnet routes + +Next up, I used the Tailscale cli on the same device to advertise what subnets it's going to route traffic to. + +```bash +sudo tailscale set --advertise-routes=192.168.178.0/24 +``` + +If you want your subnet router to route traffic to more than one subnet you should provide a comma-separated list of subnets. + +### Enable subnet routes from the admin console + +Finally, I went to the [Tailscale admin console](https://login.tailscale.com/welcome) and enabled the subnet routes for my device. It should look similar to the screenshot below. + + + +And that's it, with the subnet router properly configured I am able to access the CCTV system from anywhere as long as I'm connected to the Tailscale network. + +As an aside, you may want to disable key expiry on the subnet router via the admin console, so that you don't lose access to your legacy device when the key expires. + +## Conclusion + +In this article, I talked about how I used a Tailscale feature called subnet routers, which enabled me to configure a device in my Tailscale network to forward traffic to a legacy device that was unable to connect directly to Tailscale. \ No newline at end of file diff --git a/components/ui/Code.tsx b/components/ui/Code.tsx index a555d8c..9b887ad 100644 --- a/components/ui/Code.tsx +++ b/components/ui/Code.tsx @@ -19,7 +19,7 @@ export function Code({children}: { children: ReactNode }) { return (