On occasion I find myself needing to send a file at least a few gigabytes in size to a friend across our slow ISPs but haven’t found a satisfying solution. I usually end up creating a private torrent with the announce address of my own IP. Even though it’s slow - it basically never reaches my max upload speed for some reason, it is at least resilient if there are ever any network glitches.
Does anyone else face this same challenge?
EDIT: Thank you for the awesome suggestions! I have some homework to do on these
Syncthing
You can use syncthing to transfer files across the internet? How? I thought it was only for local networks
It just works, there’s no “how”. Take one of the devices outside, connect to the internet, done.
Er, wait, are you using Syncthing for its intended purpose of syncing files across devices on your local network? And then exposing that infrastructure to the internet? Or are you isolating Syncthing instances?
Syncthing is not limited to local network. It’s hole punching is one of the major features
The fact that Syncthing seems to solve CGNAT on its own has me wondering why there are not more solutions for the server/home side.
Why does Wireguard or any other VPN not work like Tailscale or Zerotier?
Why don’t torrent clients can’t work with IPv6 to seed more?
Why doesn’t Plex adopt a similar mechanic like Syncthing to expose the media over the Internet instead of being a prisoner of CGNAT?
I know I am just throwing different options with my personal frustrations lol, but I hope you get what I am trying to mean, Plex, torrent and home VPN users shouldn’t become masters at networking, especially when the documentation for the tools IS NOT ENOUGH.
Why does Wireguard or any other VPN not work like Tailscale or Zerotier?
tailscale and zerotier are wireguard, but with a public server that helps with NAT. Syncthing uses a public server for that too.
wireguard was specifically made to be as simple and minimalistic as possible.
Why don’t torrent clients can’t work with IPv6 to seed more?
is there such a problem? honest question. But I think that might be a different issue
Why doesn’t Plex adopt a similar mechanic like Syncthing to expose the media over the Internet instead of being a prisoner of CGNAT?
maybe they just don’t see working on it profitable enough
tailscale and zerotier are wireguard, but with a public server that helps with NAT. Syncthing uses a public server for that too.
wireguard was specifically made to be as simple and minimalistic as possible.
Zerotier wasn’t always Tailscale was it?
is there such a problem? honest question. But I think that might be a different issue
You need to be connectable to download from all the peers, likewise non connectable users can’t download from you, and how do you become connectable? By opening your ports, something that might seem archaic from somebody who has totally embraced IPv6.
maybe they just don’t see working on it profitable enough
Yeah maybe.
Just to clarify, I have several workarounds for the 3 issues that have involved spending more money or not to get rid of CGNAT.
-
For the 1st one… Well I already mentioned it, I am a ZT and Tailscale user, I did try Wireguard from a VPS once though, but I didn’t like that I was entirely dependant of my upload speed, maybe I had my Iptables wrongly configured but I usually got faster speeds just using ZT or Tailscale (I didn’t need to relay in the US VPS server).
-
For Torrenting… I actually haven’t found a solution to use IPv6… I did use a container client to use my VPS at that time though, it being Digital Ocean and thus getting a DMCA letter for downloading TWD me being a LATAM user was… A kinda funny experience, with that said I stopped that project immediately, it was fun to give back to the community with my 24/7 NAS always seeding though.
-
For the last point… Well, I do use ZT and Tailscale to access the server myself, but when I want to expose it, I usually do it with a reverse proxy pointing out to my IPv6 address, and more recently using a Tailscale funnel, I haven’t tried it thoroughly, but at least it seems to connect without using Plex’s relays.
As you can see, one needs to be well prepared with workarounds to deal with CGNAT.
Zerotier wasn’t always Tailscale was it?
it is not tailscale. but also it seems I was wrong and its not wireguard either
You need to be connectable to download from all the peers, likewise non connectable users can’t download from you, and how do you become connectable? By opening your ports, something that might seem archaic from somebody who has totally embraced IPv6.
I know what opening ports is, I only have v4. But weren’t they speaking about difficulties with v6? or is it that you still need to open ports for v6, in the firewall or something?
-
Syncthing is designed to be used over the internet, it’s why it supports NAT hole punching, relay servers, and discovery servers.
Syncthing has public releays enabling it to work (dunno if one or none need to be public) without both parties being exposed.
I mean… exposed to each other, sure, but they’re all exposed to Syncthing and the public relays.
Super easy. Spin up an OpenVPN server, forwarding the right ports to your server. Now spin up an Apache server with the folder your file’s in as server root. Send the client config for your VPN to your friend, along with the local address of your HTTP server. Now they can install the OpenVPN client on their PC and download the file from your HTTP server. Once you’re done, tear down all your servers, and don’t forget to unforward the ports. Couldn’t be easier.
/s
Okay can you explain why thats a sarcastic answer? Is one of those first three steps way harder than I think it is?
Cause that’s not simple or easy at all. It takes a fair bit of knowledge to set up all of these things.
I have non-ironically gotten responses like this
RFC 2549: https://www.rfc-editor.org/rfc/rfc2549
This problem was solved years ago: https://spectrum.ieee.org/pigeonbased-feathernet-still-wingsdown-fastest-way-of-transferring-lots-of-data
Wormhole.app, can’t recall if they have a limit atm
I use wormhole, but when I’ve wanted to use that website for receiving, I can never tell how to do it.
Can you actually use that site to receive files?
Whoever uploaded them has to send you a link to them. It does have a limit of 10gb, but it’s pretty reliable in my experience.
So just like when you send a file you fwd a link, someone tfering files to you must provide the link. They expire in a maximum of 24 hours though so do be aware of that.
I was trying to send from a wormhole app, which I now see doesn’t work with the website.
Me and my friend used netcat to transfer 30 GB of files put into a zip. Very fun, would not recommend
My largest file transfer I have done via USB disk. You simply don’t transfer multiple terabytes over the net.
Nextcloud is great for this
I use an ancient HTTP File Server program called HFS from Rejetto. Very light weight. Supports making user accounts and whatnot if you want.
I usually just turn it on for a transfer and don’t leave it up these days, but still comes in handy on occasion.
I really like Wormhole for this exact purpose.
You could try wormhole. It makes a direct connection.
I have a minio instance that I use to distribute files
wormhole
is good; also its CLI.Reminds me I had been needing to find something for this too. Looks like I had thought about using Croc.