Back to News
Advertisement
Advertisement

⚡ Community Insights

Discussion Sentiment

78% Positive

Analyzed from 2382 words in the discussion.

Trending Topics

#tailscale#https#github#com#nat#source#using#open#domain#tailcat

Discussion (66 Comments)Read Original on HackerNews

bradfitzabout 1 hour ago
One fun use case: a coworker just whipped up this Minecraft mod using tailcat as its transport: https://github.com/tailscale/tailcat-for-minecraft

(just a cute demo, not intended for release or ongoing maintenance)

awakeasleepabout 1 hour ago
It would be amazing to have something like this for bedrock so people with consoles without online subscriptions could join a self hosted bedrock mc server
nullsanity8 minutes ago
They can! They just need a real computer, the real Minecraft game (Java), and then they can! it's so easy when you don't play the shitty mobile clone.
megamorfabout 3 hours ago
So this is somewhat similar to Iroh?

https://github.com/n0-computer/iroh

Arquabout 2 hours ago
https://github.com/n0-computer/pigeons offers the same but with SSH. I use it in my homelab extensivelly for access, tunneling smb, postgres and some other minor bits.
mikepurvisabout 2 hours ago
I enjoy that they supply a nix install/environment, similar to the main tailscale/tailscale repo. Is nix widespread or the standard dev environment at tailscale, or is it like a 10% option and most people just use Docker or whatever?
bradfitzabout 2 hours ago
It's not our standard dev environment but some of us use Nix. We don't really use Docker much, though. Mostly just "go test" etc.
aerzenabout 2 hours ago
I'd guess that there is an insignificant minority of people who strongly prefer nix over anything else.

And it might be because it is easy to provide and maintain compared to a .deb package.

swozeyabout 2 hours ago
When I was writing rust stuff a few years ago it seemed like nix was the hip cool thing all the up and coming rustaceans (mostly unemployed students trying to land faang jobs) were using. If you're not familiar with the rust community it's very different from other programming communities I've been in (python/go/ruby/etc). Almost felt like you'd be kicked out of their lunch table if you weren't using it, but I've only see it that ubiquitous there.

A lot of them, instead of learning the usual linuxii you'll be using in containers at work dive headfirst into nix.

spockz20 minutes ago
How much Tailscale is this still if the transport is based on wireguard, the control plane is something new with the keys based on the wireguard keys? Genuinely confused.
zrail10 minutes ago
I dug into it a bit because I had the same question. The network layer here is wrapping around the Tailscale daemon's magicsock, which is the thing that does all the DERPing and NAT hole punching. Tailcat builds sort of a fake control plane that does a one way key exchange over DERP (the Meow message type) between client and server, then both sides do the normal CallMeMaybe dance to connect.
aseippabout 2 hours ago
Just yesterday I was complaining that I wanted to SSH back to my homenet while at the office, on my office (not home) tailnet. I wrote something based on Iroh to do this, but it's one shot (ie not particularly generalized). Might be able to throw it away or redesign it with some inspiration from this! Thanks.
bradfitzabout 2 hours ago
There's an example in the README how to do exactly that :)
maisemabout 1 hour ago
I solved this problem by building/running a custom tailscale client that connects to two tailnets at the same time (https://github.com/maisem/tailmix)
linsomniac12 minutes ago
I was just wondering yesterday if it'd be possible to have a tailscale client, or multiple tailscale clients in their own network namespaces, that could connect to multiple networks.

The slightly tricky part would be managing a local NAT that blends the two networks, and also does MagicDNS to answer on those NATed IPs. If routes conflicted, I guess you'd have to pick one?

Seems very doable though.

linsomniac11 minutes ago
@bradfitz: Steal this idea ^^^ ;-)
dfishabout 2 hours ago
you could try rayfish.xyz, it is compatible with tailscale nowadays so you can run both tailscale and rayfish
codegladiatorabout 2 hours ago
why not try out some existing project already on top of iroh ?

I see a bunch here on awesome-iroh page

https://github.com/n0-computer/awesome-iroh

pbohunabout 2 hours ago
This is so cool! I mean, we really wouldn't need it if we had 100% ipv6 (no cgnat), but this is the next best thing. I think people underestimate the innovation that could happen if we had trivial p2p.
archietectabout 3 hours ago
It looks like a direct competitor for the recently launched bitbang-cli

https://github.com/richlegrand/bitbang-cli

tptacekabout 3 hours ago
This is smart. It's Magic Wormhole but for generalized connectivity, not just file transfer.
doomroboabout 2 hours ago
Yes, though MW has the important distinction that it uses short human-readable session identifiers. This means MW supports file transfer where the out-of-band channel is just a phone call. This is also why it needs PAKE as opposed to the simpler cryptography used in tailcat
tptacekabout 1 hour ago
Not a huge lift to stick a PAKE in this protocol, though I'm dubious that it'd be much of a win. The PAKE + nameplate system in Wormhole makes a lot of sense, because you're doing one very specific thing with that system (moving a file from point A to point B). Here you're booting up servers; you're almost always going to have a non-voice channel to set up with.
ignoramous32 minutes ago
> This is also why it needs PAKE as opposed to the simpler cryptography used in tailcat

May be my idea of simpler cryptography is incorrect, but PAKEs like CPace do seem simpler than public key primitives in Noise.

tptacek28 minutes ago
A PAKE is more complicated than Noise. Noise is fussy (for good reasons) but relatively simple.
ipdashcabout 2 hours ago
Looks dope, though I'm surprised, is Tailscale fine with their DERP servers being used by non-customers like this? (Yes, it's a Tailscale project, but doesn't require login.) I vaguely assumed there was an auth step before you could use one as a relay. They mention a rate limit, but still
bradfitzabout 1 hour ago
Yes, it's been our CEO Avery's position for ~6.5 years now that we should run DERP servers on the internet for the public good. (rate-limited)

But these are a separate fleet (https://tailcat.dev/derpmap.json) separate from our usual ones, and not using "tailscale.com" in DNS or SNI anywhere.

smwabout 1 hour ago
Repo suggests that they're running their own (rate-limited) DERP servers.

edit:

Which are probably tailscale's, as it's under tailscale/ github org?

water-drummerabout 1 hour ago
Woah this is cool!

I've been making a mesh vpn like radmin vpn or hamachi that does not need a central authority server and most importantly, can run on all major OS thanks to wireguard-go.

petcatabout 3 hours ago
I did the homemade version of this for years just with SSH forwarding and nginx reverse proxy
nateguchiabout 3 hours ago
but without nat traversal...
petcatabout 2 hours ago
Is NAT traversal actually that big of a feature? The category of people that would use a tool like this already knows many ways to do it without NAT getting in the way.
9dev30 minutes ago
Unless you have some kind of dynamic DNS with a background daemon, you'll be bothered by NAT eventually. And even then it's hardly as convenient. With Tailscale, I can sit on a rooftop bar in the Medina of Marrakech, connect my phone to the public WIFI, and access my laptop in the hotel WIFI across town. Or production infrastructure on a highly secured server somewhere on the other side of the planet. All without compromising security, and all devices involved just pick the shortest physical link to each other.

It's really pretty cool.

frollogaston30 minutes ago
It's not a given that you always have some server without NAT in the way. Even if you do, it might bottleneck or add latency to the two ends trying to talk. I've been there.
Advertisement
rugmaabout 3 hours ago
Wush was already doing something similar (using tailscale under the hood)

https://github.com/coder/wush

cpuguy83about 4 hours ago
Interesting. I thought about doing this immediately after reading their old blog[1] post on punching through NAT some time ago.

Just a combo of never getting around to it and friends talking me out of it b/c of existing alternatives such as wormhole[2].

[1] https://tailscale.com/blog/how-nat-traversal-works

[2] https://github.com/magic-wormhole/magic-wormhole

gz5about 3 hours ago
i like that it removes tailscale proprietary.

if that is goal then why not go 100% open source to eliminate the ts derp control as well and get full sovereignty?

like netbird, openziti, zerotier, etc.

bradfitzabout 3 hours ago
(Author here)

The DERP server is already open source and tailcat can use any DERP server you run: https://github.com/tailscale/tailscale/tree/main/cmd/derper#...

We just provide some default ones (https://tailcat.dev/derpmap.json) to get started if you're not bandwidth-sensitive. But you don't have to use them.

Update: I added more explicit docs about this to https://github.com/tailscale/tailcat#bring-your-own-derp-rel...

gonzalohmabout 3 hours ago
Or just use wireguard directly. I get it that it's a pain in the ass to configure it, but there are plenty of open source config generators
bradfitzabout 3 hours ago
(Author here)

WireGuard doesn't do NAT traversal. That's the main thing this adds. And this also adds a CLI tool + library to do streams over WireGuard w/o installing kernel routings, requiring root, etc.

fodkodrasz40 minutes ago
IPSec may be a pain... but WireGuard is as simple as it gets in my opinion. Yeah, you may need to know basic IP concepts, like MTU...

NAT traversal is a different topic, WG won't help in that, and that can actually be a pain. I guess we should be using IPv6 already, and this tool would be largely redundant already. (not completely, encrypted access to isolated networks is a valid use case)

derkades15 minutes ago
Even without NAT, the same hole punching techniques must be used for IPv6 since there is usually a firewall blocking inbound traffic. Only in CGNAT type scenarios where the network behind NAT is still "WAN" will be helped by IPv6.
zikduruqeabout 2 hours ago
> it's a pain in the ass to configure it

Public/private key pairs are hard? It's no more terrible than other projects that require configs.

gonzalohm27 minutes ago
For me the complicated part was understanding the IP assignment for peers and how to set that up correctly
mystifyingpoiabout 3 hours ago
> pain in the ass to configure it

Idk? I found it pretty easy to configure by blindly following the tutorials and copy-pasting keys. The only footgun is the keepalive setting, which will screw up the tunnel if one end is behind NAT, that tripped me hard, but besides this, no issues at all.

aitchnyuabout 2 hours ago
Umm, we have a full opensource Tailscale stack now?
raggiabout 2 hours ago
always have! our darwin and windows clients are closed source, but they wrap the oss implementation in github.com/tailscale/tailscale and you can see and even use all the same hooks yourself.

the control plane is closed source, but headscale is an open source alternative that we embrace and encourage people to use if it meets their needs/desires

1970-01-01about 2 hours ago
As 'cattail' is not officially taken, I have to assume they are oblivious to having a little fun.
MrDrMcCoyabout 3 hours ago
Looks like a Wireguard stunnel replacement, which is very useful!
mrsssnakeabout 2 hours ago
Tool like this exposes big problem with the current shape of the Internet, I believe.

Everything should be possible with just plain netcat and IP stack. Someone asks about NAT holepunching, encryption, static IDs, permissions, etc., yes this is what Internet lacks and why every P2P app reinvents it over and over again.

codruterdeiabout 3 hours ago
A bit off topic: it’s just insane how I used to watch this guy’s http2 in Go yt video 10 years ago, and he’s still very relevant to this day! Cheers Brad!
cpuguy83about 3 hours ago
Also created memcached, livejournal... Brad has a long list of impressive work.
ethagnawl5 minutes ago
Oh, wow. I had no idea. I've gotten a ton of use out of memcached over the years. Thanks for all your efforts, Brad!
quaintdevabout 3 hours ago
I wish his perkeep project was mature and stable.
bradfitzabout 3 hours ago
Same.

But Tailscale keeps sucking me in with new stuff to do. :(

forrestthewoods19 minutes ago
I have a really dumb ignorant question.

What is a data plane? What is a control plane? I don’t genuinely understand what these words mean :(

LoganDarkabout 2 hours ago
What's the risk of malware using this for C&C or otherwise? Hackers love communication channels that are difficult to take down individually.
TZubiriabout 3 hours ago
>"like netcat, but over Tailscale's data plane"

Half of the Software offering nowadays seems to be selling vendor lock-in at no added value and then making a profit.

Sure there's always some negligible added value, and then they reinvent a whole stack for their ecosystem. In the case of tailscale the added value seems to be avoiding going into your router and activating port forwarding? It looks like negative added value to me. Someone that tells you "don't do NAT traversal, just open a port" would be highly valuable, but saying no doesn't seem to be trendy, and is certainly not an easy sell.

bradfitzabout 3 hours ago
(Author here)

There's no vendor lock-in here and no payment or account required. If Tailscale as a company fails, tailcat keeps working if you run your own DERP server. It's just open source code, not a hosted service.

TZubiriabout 2 hours ago
It's an official tailscale product no?

Fwiw, I don't think vendor lock-in is a bad thing, but being open source doesn't mean there's no vendor-lock in. If a client builds their system on top of an open source technology, then switching away from that dependency would have a cost, even if that cost is engineering man-hours.

If tailscale does not work out of the box with netcat, and requires a custom additional dependency to work, it raises the question that tailscale will not work out of the box with other tools like tcpdump or stunnel and apache, and I will need to install other custom dependencies like taildump, tailtunned, tailapache.

When compared to other solutions that integrate without additional effort, installing vendor-specific dependency forks/clones means that there is an additional vendor lock-in.

mystifyingpoiabout 3 hours ago
> In the case of tailscale the added value seems to be avoiding going into your router and activating port forwarding?

Well, ignoring the tone... kinda yeah? I mean, if port forwarding works for you, and you have public IPv4, and you have no CGNAT, and you need a connection only between 2 hosts, then port forwarding is actually a half-decent idea. However, it's not what Tailscale excels at.

TZubiriabout 2 hours ago
> if port forwarding works for you

> port forwarding is actually a half-decent idea

You make it sound like both options are equally valid, and as if port-forwarding were some esoteric technology. It's not, one is good, the other is bad.

5 years ago I had a similarly bland position, live and let live, I'd go to a client that was using a Ddns (zapto.org) for production loads serving thousands of customers. 5 Years later, I see them constantly facing SSL issues, and network issues, and even if they weren't it's still the wrong way to do things.

We have to stand for something, get an IP address, get a domain. If you don't have either of those, raise funds, get a budget, speak to people, you can't tech your way out of some things, I know we are hackers, but sometimes the solution is not hacking. Yes we should develop the power to do things even without approval from institutions and without collaboration from the central NIC, or the domain holder, etc... But we should refrain from using that power and actually integrate with domain holders, actually get IPv4/IPv6 blocks.

There's many reasons why you would use a ddns or similar tech, lack of budget, lack of main domain holder approval, lack of NIC approval, lack of ISP approval. In all cases, you are way better off by actually going the other way instead of using a ddns.

1- no budget: Get a budget, a domain is like 15$/yr. a 1024 IPv4 block leased from a NIC is like 600-2500$/year, so the cost of a Host or ISP is 0.6$ to 2.5$, maybe they charge you a margin and you end up paying 5$ to 50$/yr? If this is an issue, maybe your project should die, how much is your time worth? Fund your projects accordingly, or let them die. If this is someone elses project, they cannot afford you.

2- ISP: Call your ISP, if they can't help you access your router, or port forward or whatever, hang up, call again. If your solution is to use a ddns instead of picking up the phone, you have overtrained your hard tech skills and need to work on your soft skills. Speak to a human, you won't get very far if you never speak to humans. This is not a niche thing, we call it port-forwarding but it's how TCP and IP work in general, this is the stuff of the internet, if you can't do something as basic as that, you are never gonna make it, sorry.

3- Domain holder: If you work for a client, and they have a domain, but you don't know who holds it, or where the passwords are. Don't jump to a ddns or buying another domain, integrate, investigate, do an inventory. At the very least buy another domain, a ddns is just cheap to the point of being unprofessional, see 1.

There's a 4th excuse that I'll handle as well:

4- I'm just testing, this is just a throwaway project: Even if it is, you are still underfunding your bets if you don't even have a domain and standalone non-firewalled IP, even if reusing an existing domain and host, we are talking about like 5$ per month. Imagine a professional of any class that cannot afford a tool worth 5$, even a plumber has a toolkit with a screwdriver in it.

Even if you share a link to your project to a friend, if it says hsabhsabdsa.tailscale.net or bjsdbsajdbsa.vercel.app , you are already neutering your project. You can skip this 'phase', it's not necessary for a project to go through all phases, especially if a vendor is trying to convinve you that you should go through this phase, skip it, tell them no, build it right even for your day 1 demo, it's better than having a pre-day 1 demo that has low quality and does things wrong.

MattCruikshankabout 3 hours ago
...this is a github repo. Pointing to an open source project. That is not forced to use any vendor-specific systems to function.
TZubiriabout 2 hours ago
It's a pattern that occurs in commercial software yes, but Open Source has its own version of building mirror ecosystems. Collaborating to bleeding edge issues on robust infrastructure is very hard, so junior engineers that want to collaborate in open source (often for reputation building) can do so in these mirror ecosystems, it's an added bonus if they believe that they are contributing to the bleeding edge instead of rebuilding an enantiomer tech stack.
Advertisement