Some years ago I wrote an application that has remote management functionality like Team Viewer. It allows you to see and optionally control a user’s Desktop remotely. The application was written to work on a LAN, with plans to make it usable across the internet in the future. I never go around to it as it’s not really an easy task given that I would have had to design ways to get around NAT in routers and firewalls.
However, I recently discovered TailScale and loved how easy and fast it was to set up. Remote management is a big deal for us as it helps us to solve problems with clients from the comfort of our home. We also use Team Viewer and Remote Desktop for this purpose and TailScale has solved a lot of issues for us related to security, port forwarding and firewalls. Now I want to use my own software for remote management since I can easily tailor it to our needs specifically. Team Viewer and Remote Desktop are good but they have a few gripes that could be avoided by using the software that I wrote mentioned in the first paragraph. Thanks to TailScale, I don’t have to worry about firewalls and forwarding ports which would make deployment very easy. My application is already designed to work with a LAN so it fits perfectly with TailScale’s networking topology which is basically a LAN that’s layered on top of the internet.
However, there is a big piece missing which is broadcasting. My program is actually two programs. One is a server-like Windows Service which listens for broadcasts on the LAN. It is also the piece that allows remote viewing and remote control. The other piece is a client which sends broadcasts to discover which computers on the LAN has the service. I can easily select which computers I want to see and control from the client. In other words, broadcasting is how I’m able to find my service on LAN machines.
I’ve read from the TailScale documentation that it doesn’t set up broadcast domains which means I cannot use broadcasting for discovery in a TailScale VPN. Currently, I’m toying with the idea of simply doing a scan of the entire network but I would like to avoid this since as far as I can tell, a TailScale subnet could have something like 16 million possible unique hosts. I really don’t want to have to resort to such a barbaric way of doing things. I’ve also looked at the API which seem to have promise since it can give you a list of devices on a network but this turned out to be a dead end since I cannot find a way to tell it to specifically search the network that the current computer is logged into.
Perhaps there is a way to do what I want efficiently. If there is, I would like someone to point me in that direction. Thanks in advance.