[Feature] List client versions in node list.
Use case
After upgrading to 0.24 I see the following in the log unsupported client connected client_version=65 min_version=82, now this could have been there a while ago from 0.23 as well and the lack of support for an older tailscale client itself is not really a problem.
However, it seems neither the error message nor the node list show the tail scale client version, so I have no idea which client is causing this. Given that tailscale.com can show it I presume it's communicated to the control plane by the client.
Description
Please add the ability to find out the connected (or last seen) client version from headscale, ideally in the node list.
Contribution
- [ ] I can write the design doc for this feature
- [ ] I can contribute this feature
How can it be implemented?
No response
There has been discussions before, what would be nice would be something like (what I think/remember) the kubectl command does, we have the default as now, and you can pass it a --columns=col1,col2 which will extend it with more info.
One challenge is that we do not have access to the HostInfo (where the version lives) on the CLI side, there has been a few attempts, but no satisfactory method on doing the mixing of gRPC and JSON was found.
Maybe https://github.com/juanfont/headscale/issues/2305 can help with that?
Workaround
Run the following command on any device that has joined your tsnet:
tailscale debug netmap | jq -r '(.Peers[] | [.ComputedName, .Hostinfo.IPNVersion]) | @tsv'
You'll see the name and version of each peer.
Some relative discussion
- #1205
- #1938
- #2208
Thanks, to also include the version of the locally running client you may use
tailscale debug netmap | jq -r '(([.SelfNode] + .Peers)[] | [.ComputedName, .Hostinfo.IPNVersion, .Hostinfo.OS, .Hostinfo.OSVersion, .Hostinfo.Distro, .Hostinfo.DistroVersion]) | @tsv' | column -t
(I added some information about the OSes, which I find useful)