【问题标题】:Reverse ssh tunnel for p2p downloads用于 p2p 下载的反向 ssh 隧道
【发布时间】:2020-09-15 04:19:42
【问题描述】:
我正在寻找一种解决方案,我在云服务器上使用远程 bittorrent 客户端,然后通过 http 将文件下载到本地系统。这有望提高我的带宽并克服将我的 ip 列入黑名单(假设我在代理后面)。我的解决方案将与 seedr.cc 完全相同。我想提供的另一项改进是文件/目录可以同时在本地(客户端应用程序)部分下载。如果我的解决方案是客户端服务器应用程序,这也可以很容易地完成。现在,真正的问题是,假设我根本不想在服务器上下载文件/目录,而是直接在客户端上而不安装远程磁盘(客户端磁盘)。在这里,请记住服务器仅用于网络,根本不使用存储。你知道有什么可以帮助的吗?
【问题讨论】:
标签:
reverse-proxy
rsync
p2p
bittorrent
webtorrent
【解决方案1】:
让我先描述一下你的拓扑结构。
你建立一个服务器和一些客户端,客户端可以使用 p2p 下载文件。并且您希望客户端可以从服务器和其他客户端下载文件以加快速度。
首先,bt 下载可以提高您的速度,但限制来自您的 ISP。如果只买100Mb的带宽,是无法获得比它更高的速度的。
其次,如果这个拓扑可以帮助你,那么你可以构建这样一个系统。
有一个名为 libtorrent 的开源项目可以帮助您。它构建了整个系统,您可以使用它,也可以通过学习它来构建自己的系统。
form server 和 clients 都下载,需要有一个 peer manager 的设计,比较难,我也不能一概而论,需要自己做很多例子和优化。
【解决方案2】:
好吧,标题中的“rsync”有点误导,您在这里遇到了几个问题:远程必须是可访问的..所以有一个“活动隧道”回到您的客户将是一项繁重的任务
对于 incoming 部分:您可以将 lftp 用于种子https://lftp.yar.ru/torrent.html 并将每个用户分开,还可以帮助您进行配额等,建议:使用它screen 或 byobu 会话
下载部分:
- 也许使用 ramdisk (
mkdir /tmp/ramtamtam;mount -t tmpfs /dev/null /tmp/ramtamtam/ -o size=64M) 并让客户端访问它
- 使用 archivemount https://github.com/bramp/archivemount 并将其发送给客户端
- 通过 rclone 使用诸如 mega 之类的外部提供程序并让客户端访问它
- 一个简洁的选择是让客户端通过 torrent 本身使用自定义磁力链接访问您服务器上的 torrent,并将其添加到正在运行的 lftp 会话中,因为为此您可以使用 100% 下载https://webtorrent.io/
- 通过http下载也可以通过lftp的
mirror命令实现
【解决方案3】:
Bittorrent 客户端通常需要随机访问它们正在传输的数据,因为它们同时下载和上传,并且必须为来自远程对等方的随机请求提供服务。
这意味着如果您使用网络文件系统,那么 bittorrent 客户端的性能将受到上传和下载带宽以及提供存储的主机的延迟的限制。这可能会削弱云实例原本可以实现的性能。
相反,您可以使用具有临时存储作为加速器的云实例(此后称为服务器)。这可以通过让服务器和本地客户端都实现 bittorrent 来实现,但对从服务器到客户端的带宽给予优先处理。这样,服务器将从其他对等点下载数据,同时将其传输给客户端。服务器可以继续从其临时存储中播种 torrent,直到重新启动。