![TCP 标头如何在跟踪器系统中通过公共 IP 宣布 LAN IP?](https://linux22.com/image/1379217/TCP%20%E6%A0%87%E5%A4%B4%E5%A6%82%E4%BD%95%E5%9C%A8%E8%B7%9F%E8%B8%AA%E5%99%A8%E7%B3%BB%E7%BB%9F%E4%B8%AD%E9%80%9A%E8%BF%87%E5%85%AC%E5%85%B1%20IP%20%E5%AE%A3%E5%B8%83%20LAN%20IP%EF%BC%9F.png)
**我在 VPS 服务器上托管了一个 xbtit 跟踪器。我上传了一个文件,我的朋友在局域网上下载了它。但是在下载过程中,他并没有获得他应该获得的局域网速度。在 Peer 中检测到的是他的公网 IP 而不是他的局域网 IP。所以他的下载速度很慢。
TCP 标头如何在跟踪器系统中通过公共 IP 公布 LAN IP?有没有小的 php 代码?
当我在 LAN 上托管服务器时,没有出现过这样的问题。所有使用此跟踪器的用户都是我的 ISP LAN 用户。所以我需要某种方法,以便在 peerlist 中他们的 LAN IP 能够通过公共 IP 被检测到
请有人帮帮我
答案1
不幸的是,你想要的并不是真正实用的(我可以理解为什么有人给了它 -1,尽管那不是我)。
我会尝试为你解释一下——
当(家用)计算机位于 LAN 上时,它们通常共享一个“无效”的地址范围,然后路由器将其重写为有效的 IP 地址 - 这一过程称为 NAT - 您的 LAN 似乎就是这种情况。
Web 服务器使用 TCP(通常在端口 80 上)。大多数 Web 服务器将能够根据两个因素提供有关连接到它的计算机的信息 - 它收到的数据(据称来自路由器而不是计算机)和 Web 客户端提供的标头。这些因素都不包括客户端的 LAN 地址(其中 LAN 地址已进行 NAT)- 事实上,这样做将是一个(在大多数情况下)毫无价值的安全漏洞。这是您遇到的根本问题。
因此,您问题下一部分的答案是“不,您不能编写一段 PHP 来公布本地 IP,因为它永远不会收到本地 IP”。此外,这样做会违背 Bittorrent 的精神 - 抱歉,但使用 BT EXTERNALLY 共享文件以供本地使用超出了其设计参数 - 这类问题可以通过文件共享来解决。
如果您想解决这个问题,您需要将 Tracker 移入 LAN 或通过 VPN 将外部 VPS 连接到 LAN,以便“击败”位置之间的 NAT。也就是说,如果您问这些问题,那么在开始设置适合您的 VLAN 之前,您可能需要学习很多东西。
答案2
确实,您的问题没有任何切实可行的解决方案。
不过,我只能想到一种解决您问题的替代方法。
您可以在本地网络上设置一个 bittorrent 跟踪器,并告诉主跟踪器(位于 www 上)在下载 torrent 时自动添加本地 torrent 跟踪器的公告 url。
这是可能的php。您使用的脚本xbtit
使用一种名为BEncode
和BDecode
。您可以在 BEncoding 过程中添加或删除跟踪器 URL。
您可以编写一些 php 代码来检查下载器的请求 URL 是否在您的 IP 范围内。如果匹配,您可以在数组中添加本地跟踪器的公告 URL "announce-list"
。配置您的本地 torrent 跟踪器以跟踪任何用户的任何 torrent。请参阅XBTT 文档。
现在,您 LAN 内的本地网络用户即可下载 torrent 并在本地网络内获得公告、相互连接并下载。
答案3
在您的追踪器设置上
勾选允许外部种子
取消勾选禁用 DHT
取消勾选私人抓取
取消勾选私信