Hi there rodents,
I might need your help here to find something which seems to be as rare as a diamond.
Let me explain:
today me and my friends decided we finally needed to setup a vpn to play lan games, expose services like synchronized film streaming etcetera.
As per my advice, since low latency and ease of use are a must, we settled on wireguard.
After the vpn was on, we realized some games could not be played due to them strictly using broadcast to do participants discovery/connection. A shame, but we’ll just play something else.
Then someone proposed we search a solution to ease the pain we have in sharing files.
Since half my friends have a slow internet connection, uploading to a server and then downloading back would require too much time, so we opted for direct transfer programs.
alternativeto.net proposed programs as lanXshare, dukto R6, nitroshare, all of which unfortunately make use of broadcast to find peers on the network.
As already discovered, broadcast doesn’t work in the vpn, so we have no idea what software we could use that doesn’t connect to the cloud, nor forces us to have a share service on the server which hosts the wireguard central node.
I would like to avoid using ssh or ftp on everyone pc as well, since the majority of them uses windows and only have basic computer skills.
Does anyone have a program or even a tip which could help?
Thanks in advance!
All about open source! Feel free to ask questions, and share news, and interesting stuff!
Community icon from opensource.org, but we are not affiliated with them.
BeeBeep~~___~~
Have a look at ZeroTier as an alternative to WireGuard for LAN connections. It’s also open source and has worked fine for me and friends when we used to play Among Us back when their servers were bad.
Well, it seems you found a solution to our problems, though I would have liked to see something working in traditional vpns as well!
I waited for a bunch of more tech savy friends to come online and then we started thinkering.
We all had our problems at first, not because of zerotier but because of our system configs.
I, for example had to add broadcast and multicast input rules in iptables (I perfer having iptables block what is not used), then I had to add those routes to the virtual nic. The latter was more of a pain to discover, but fortunately tcpdump helped me find out when packets were travelling or not.
Some of the others had some technical difficulties with the windows network settings: the “fix” which is discussed in the zerotier knowledge base was making their zerotier nic go bonkers.
It turns out, for some unknown reason, windows was deleting the netmask after the priority was raised for the nic. They just put it back in place.
Now, since both broadcast and multicast work (tried with tcpdump and multiple games), we tried installing nitroshare to share files as initially wanted and it worked like a charm!
Ohh I had to do that as well! I forgot to mention it :/. I use
ufw
so I just didto get broadcast working (
ztwfumnihc
is the zerotier interface). I didn’t look into multicast because we didn’t really need it.I don’t know much more about networking/iptables so not sure what the difference is with what you did, but I think it’s the same.
That sounds weird. I used it with a lot of people back then (>10), and no one ever came across this (if I’m understanding the issue correctly). When it didn’t work we just reinstalled and rebooted a few times, and it usually fixed it. Either that or we were really lucky :P
Awesome! I’m glad it worked well for your usecase! :)
I must say I was reluctant to try zeroTier because I misunderstood its ethics.
One of the point I really wanted to have for granted was self reliance and I thought it wan’t the case with zeroTier.
I was wrong, so thank you for your comment, you got me motivated to read the manual with more attention and I’m going to try it later this day!
It could be not only a problem solver for some games like civilization 6 and among us, but also effectively for softwares like snapdrop ;)
deleted by creator
Having just read it, I also recommend the manual on their site to get a more in-depth knowledge of how the system works.
zeroTier manual
Not sure if this helps but…
There is onionshare that let’s you share files of any size securely and anonymously…
And seafile a sync and share solution. You might need to setup a local server though.
Thanks for your contribution but unfortunately both are not suited for our use case.
seafile requires a central server where files are stored.
I could setup seafile or even nextcloud for my friends, but then I we would be in a similar situation to when we uploaded to google drive first: even for an upload that would only be used one time, we would need to wait the upload to finish and then wait for the download. That’s double the time it would take a p2p transfer.
On the other hand, onion share is p2p, but requires tor browser to be used, which needs to be connected to the tor network, and transferring gigs of data on tor is not exactely the fastest option on the market.
Not sure about how WebRTC works exactly, but maybe you should check Snapdrop.net. Or maybe something like Syncthing.
After a lot of trial and error, I gave up trying to setup webwormhole.
These are the problems I encountered:
Unfortunately I can’t even properly lend a hand because I don’t know go at all, I can only read the source code for the most part and figure things out.
Back to the beginning, yay…
I think I just found the solution.
While completely new and maybe not audited, I just tried web wormhole and it seems to fit my needs.
It is written in go (I decisely prefer go over nodejs) and it’s foss. repo.
I tried passing large files between devices in different networks (using the “demo” site), they were not blocked (so there’s not bandwith or size limit, the server appears to truly act only as a signaler) and the hashes matched.
I’m going to put it on my server (which is the central vpn node) and see if it works as expected, then I’ll post my results. I really hope it works!
Well, I don’t think syncthing is very well suited for a sporadic, temporary connection.
I also tried snapdrop but it turns out that it works by matching the public ip of the two parts (seen in a github issue).