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