Top
Best
New

Posted by nderjung 12 hours ago

Tailcat – Like netcat, but over Tailscale’s data plane(github.com)
514 points | 95 commentspage 2
petcat 11 hours ago|
I did the homemade version of this for years just with SSH forwarding and nginx reverse proxy
nateguchi 11 hours ago|
but without nat traversal...
petcat 10 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.
9dev 8 hours 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.

frollogaston 8 hours 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.
rugma 11 hours ago||
Wush was already doing something similar (using tailscale under the hood)

https://github.com/coder/wush

cpuguy83 12 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

wxw 5 hours ago||
I just set up Tailscale as I've been hosting more personal apps off a small Hetzner VM and wanted a really simple personal networking solution. Works great, would recommend.
humanlity 2 hours ago||
That's how I dreamed, Thanks tailscale
gz5 11 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.

bradfitz 11 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...

gonzalohm 11 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
bradfitz 11 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.

fodkodrasz 8 hours 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)

derkades 8 hours 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.
zikduruqe 10 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.

gonzalohm 8 hours ago||
For me the complicated part was understanding the IP assignment for peers and how to set that up correctly
mystifyingpoi 11 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.

aitchnyu 10 hours ago||
Umm, we have a full opensource Tailscale stack now?
raggi 10 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

codruterdei 11 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!
bradfitz 11 hours ago||
Still working on Go's http2 10 years later :)

Recently: https://github.com/golang/go/commit/128a36cf0367c46daff2528d...

https://github.com/golang/go/commit/3c0665e551be23e62167f625...

cpuguy83 11 hours ago||
Also created memcached, livejournal... Brad has a long list of impressive work.
ethagnawl 8 hours 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!
quaintdev 10 hours ago|||
I wish his perkeep project was mature and stable.
bradfitz 10 hours ago||
Same.

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

ipdashc 9 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
bradfitz 9 hours 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.

ipdashc 5 hours ago||
Fair enough. Thank you!
smw 9 hours 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?

ekarulf 7 hours ago||
I use mosh over WebSockets to have a long lived connection to my home network.

I bet I could simplify out the WebSocket-to-UDP proxy by leaning into tailcat's dataplane and just speak straight UDP.

water-drummer 9 hours 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.

More comments...