-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
illumos support #697
Comments
Thanks for doing the work! I used Illumos briefly, and would love to have Tailscale working on it :) To answer your questions:
|
If DO is an option, this will be pretty easy to get going. I have a pipeline for emitting images of OpenIndiana and OmniOS that will run in a droplet -- you can use the "import custom image" function and provide it a URL and it all pretty much just works.
Packaging is generally distribution-specific. If it builds and works out of the box, it will be pretty easy for OmniOS and OpenIndiana to include it in their build recipe repository that they use to build the binary packages they ship. For SMF you need a particular XML file that is analogous to a systemd unit file. The contents will, like a unit file, depend on where the binaries go in the file system, but can often be otherwise relatively similar or the same between the common distributions. |
DO is an option, as is Vultr. I should also add that for OSes we don't officially support (e.g. currently FreeBSD and OpenBSD, which work thanks to third-party contribs), our CI usually just cross-compiles the Go code to make sure things still build, but the unit tests don't run. Illumos would be a novelty for us in that department, in that we'd end up running a CI box for a platform we're not officially supporting. Maybe the simplest to get started would be to do cross-compile only in CI, and we can build out more over time. Operational stuff SGTM. We'd happily take patches for an SMF config, and whatever extra packaging niceties the downstream distros might want to keep in upstream (I don't know if they usually operate more like BSD Ports, where the distro packaging is disconnected from upstream). As I mentioned on Twitter, some additional challenges for illumos support are going to be in the bowels of the network engine, to get from "mostly works" to "every feature works" :
If those two pieces are missing, Tailscale will still mostly work, but some topologies will result in routing loops that break Tailscale, and illumos will only be usable as an end-host, not a subnet router. |
Opened WireGuard/wireguard-go#39 I will note that nshalman/wireguard-go@e06f6c5 seems to be necessary when trying to merge into the tailscale fork.
Thanks! That shows me failures to hunt down. :)
I have a rudimentary SMF manifest built with |
This is probably because you're using a version of golang < 1.15 |
Can confirm that upgrading to 1.15 fixes the problem. |
AFAICT, we have a number of Illumos active users on Tailscale. So I think this bug can be closed. Feel free to keep sending improvements, though. |
I don't think the code has actually landed upstream in your repo yet. Still, from an issue management perspective on your end, I'm fine with this being marked closed, as it can still be referenced in any future pull requests or I can open a new one when I (or someone else??) have the free time to work on it. |
Oh, I'll reopen. I just assumed it must've been in our tree if people were using it. So what tree are the Illumos users using? Or is it just 1 person with N nodes? (I didn't look) |
In terms of tree(s):
In terms of users, you'd have to look on your end. I account for 2 nodes. I haven't checked logs to see how many people have downloaded my binaries linked from https://blog.shalman.org/tailscale-for-illumos/ and even less insight into people who may have compiled it on their own. |
With help from @danderson, WireGuard/wireguard-go#39 is getting closer to being ready to land (waiting behind golang/sys#100) but there is still work do to on the tailscale side. I'm hacking away in a branch, but I think I'm going to have to borrow some stuff from the BSD side, and strangely enough, some of the quirks are similar to the Windows side (e.g. needs an IP address when adding a route.) Also, ipv6 doesn't seem to work on the illumos wireguard tun device yet. I'm hopeful it's a relatively straightforward change, but I don't know yet.) |
This will be helpful for illumos (tailscale#697) and should be safe everywhere else. Signed-off-by: Nahum Shalman <nahamu@gmail.com>
This will be helpful for illumos (tailscale#697) and should be safe everywhere else. Signed-off-by: Nahum Shalman <nahamu@gmail.com>
This will be helpful for illumos (#697) and should be safe everywhere else. Signed-off-by: Nahum Shalman <nahamu@gmail.com>
Is your feature request related to a problem? Please describe.
The
main
branch of tailscale/tailscale doesn't compile on/for illumos.Describe the solution you'd like
I have hosts where
GOOS=illumos
and I want to run Tailscale on them.Ideally I'd like to be able to just build from
main
.Describe alternatives you've considered
I have configured Wireguard manually, and I've used Algo, but Tailscale is pretty sweet.
Additional context
I have managed to hack together working binaries based on a fork of wireguard-go built on top of the work of someone else who does not have the bandwidth to get the changes upstream, but has no objection to them being upstreamed. My branch is here.
Attempting to merge
main
fully this evening fails with errors I haven't had time to debug yet:Some questions on my mind:
tailscale/wireguard-go
with a cleaned up commit to bring in illumos support?The text was updated successfully, but these errors were encountered: