Live data from Hacker News

Show HN: P2P remote desktop – an alternative to TeamViewer / AnyDesk

github.com

71–80 of 100 posts

Re: Show HN: P2P remote desktop – an alternative to TeamViewer / AnyDesk

#71
post #6

Am I the only one that has long since given up traditional desktop streaming software like TeamViewer/AnyDesk and the like for game streaming software (Parsec, Rainway, Steam Remote Play, etc) that just happen to offer desktop streaming because they can? The actual streaming tech in those feels worlds ahead in terms of quality/efficiency/stability/latency. And the UX has generally felt better as well with much more s…

Parsec doesn't support remoting into a Linux machine, so that was the dealbreaker for me.

You can use https://github.com/loki-47-6F-64/sunshine which uses the same protocol as Nvidia GameStream, and you can access it with https://moonlight-stream.org/

Re: Show HN: P2P remote desktop – an alternative to TeamViewer / AnyDesk

#73
post #5

This is one thing I'm surprised the open source community hasn't developed a popular alternative for: Teamviewer. The core idea is simple: a video stream from one computer to another, with mouse and keyboard controls sent the other way. Connection negotiation can be done Magic Wormhole style, via basic STUN, encryption can be done in a number of ways. Add some clipboard and P2P file transfer features and you've got m…

Code signing for Windows is a pain for anything self hosted. I tried every open source, self-hosted option I could find last week and none of it was usable. IIRC the only one that had signed executables was Remotely and it was a 150MB client that bundles .NET. All the rest seem to copy the terrible design of on demand code signing and that doesn’t work. If you get an EV certificate for instant SmartScreen reputation…

You don’t need to code sign on the fly in order to append “config” data to an authenticode executable.

I’ve never done it myself but there was a posting here about 8 years ago about how Dropbox distributed their installer and I took a quick look at it: https://news.ycombinator.com/item?id=8204454

Re: Show HN: P2P remote desktop – an alternative to TeamViewer / AnyDesk

#75

The NAT traversal logic here is really basic and won't hold up well in practice. A good chunk of NAT devices will pick external port based on [src ip/port, dst ip/port] combo, not just [src ip/port], so "WAN IP/port" you get from STUN will get you nothing useful. Not by itself. STUNs should be used for discovering the pattern in NAT port overloading logic and then using it to predict which port your peer will use tow…

These are very cool p2p projects with nice NAT traversals.

https://syncthing.net/ https://github.com/hyperswarm/hyperswarm (whole family hypercore, hyperdrive, hyperswarm, ...)

Re: Show HN: P2P remote desktop – an alternative to TeamViewer / AnyDesk

#76

The NAT traversal logic here is really basic and won't hold up well in practice. A good chunk of NAT devices will pick external port based on [src ip/port, dst ip/port] combo, not just [src ip/port], so "WAN IP/port" you get from STUN will get you nothing useful. Not by itself. STUNs should be used for discovering the pattern in NAT port overloading logic and then using it to predict which port your peer will use tow…

I loved Hamachi!

What do you suggest as a learning resource for things like this? The STUN RFC's? The Stevens' networking book?

Re: Show HN: P2P remote desktop – an alternative to TeamViewer / AnyDesk

#77
post #75

The NAT traversal logic here is really basic and won't hold up well in practice. A good chunk of NAT devices will pick external port based on [src ip/port, dst ip/port] combo, not just [src ip/port], so "WAN IP/port" you get from STUN will get you nothing useful. Not by itself. STUNs should be used for discovering the pattern in NAT port overloading logic and then using it to predict which port your peer will use tow…

These are very cool p2p projects with nice NAT traversals. https://syncthing.net/ https://github.com/hyperswarm/hyperswarm (whole family hypercore, hyperdrive, hyperswarm, ...)

Syncthing uses the same logic that OP criticized. There is no rendezvous server from a NAT traversal perspective and also no port prediction.

All peers simply lookup their external port via STUN and publish this information.

Re: Show HN: P2P remote desktop – an alternative to TeamViewer / AnyDesk

#78
post #76

The NAT traversal logic here is really basic and won't hold up well in practice. A good chunk of NAT devices will pick external port based on [src ip/port, dst ip/port] combo, not just [src ip/port], so "WAN IP/port" you get from STUN will get you nothing useful. Not by itself. STUNs should be used for discovering the pattern in NAT port overloading logic and then using it to predict which port your peer will use tow…

I loved Hamachi! What do you suggest as a learning resource for things like this? The STUN RFC's? The Stevens' networking book?

It's not a terribly complicated subject, but you do need a fair understanding of IP and UDP. TCP too, because it is possible to establish direct TCP connection through two NATs using the symmetrical open clause of the TCP handshake. Looks like magic when you see it work for the first time.

Stevens' book is a must read, yes, but it has nothing even on NAT (iirc), leave alone on working around it. Look at how NAT works, what types of it exist, etc. Then look at "hole punching". For bonus points skim through p2p-hackers mailing list archives from 2003 and thereabouts.

Very little has changed in this area since mid-00's, people just rediscover and re-implement the same thing over and over again. Few get it 100% right (IMO) due to sticking to prediction being done client-side. That's inferior to the server doing it, because it gets you more precise timing and better prediction rate.

Re: Show HN: P2P remote desktop – an alternative to TeamViewer / AnyDesk

#79

Earlier quoted context omitted.

Code signing for Windows is a pain for anything self hosted. I tried every open source, self-hosted option I could find last week and none of it was usable. IIRC the only one that had signed executables was Remotely and it was a 150MB client that bundles .NET. All the rest seem to copy the terrible design of on demand code signing and that doesn’t work. If you get an EV certificate for instant SmartScreen reputation…

SmartScreen becomes less of a pain when people start downloading the software more. In fact, if you don't have a lot of downloads, SmartScreen will block your executable even if you pay for the privilege of signing your executables! If you sign your executable + config files on the fly, you end up with SmartScreen warnings all over the shop! A possible solution would be to distribute the client through something like…

> In fact, if you don't have a lot of downloads, SmartScreen will block your executable even if you pay for the privilege of signing your executables!

There's more nuance here which OP is alluding to. If you form a corporation and get an EV cert, you will not get a SmartScreen block, not even on your very first download. Immediate SmartScreen reputation is the point of getting an EV cert for this; Microsoft says this explicitly. If you get an OV cert (the only kind that an individual developer can get!), you will get blocked and will have to build reputation.

As an individual open source developer, I have an OV signing cert :( At least it shows my name on the SmartScreen prompt.

Re: Show HN: P2P remote desktop – an alternative to TeamViewer / AnyDesk

#80
post #5

This is one thing I'm surprised the open source community hasn't developed a popular alternative for: Teamviewer. The core idea is simple: a video stream from one computer to another, with mouse and keyboard controls sent the other way. Connection negotiation can be done Magic Wormhole style, via basic STUN, encryption can be done in a number of ways. Add some clipboard and P2P file transfer features and you've got m…

We use Remotely at work and it's amazing: https://github.com/immense/Remotely
Post reply on HN