从防火墙后面连接两台计算机

Jon*_*nah 2 firewall bittorrent port tunnel

BitTorrent Sync 最近的出现让我很好奇它们是如何在两台联网的计算机之间实现可靠的点对点连接的。

在我有限的理解和研究范围内,我的理解是,如果至少在一端没有开放的传入端口,计算机将无法通过端口隧道连接。这是真的?如果是这样,那么这是否意味着同步跟踪器也充当隧道?这是否意味着过多的流量正在访问他们的服务器?

还是有另一种方法可以实现?我发现了这个相关的问题(如何在 NAT 和防火墙后面 ssh 两台计算机,而无需第三台计算机),但没有给出没有隧道的完全可靠的解决方案。

Jou*_*eek 5

我认为我们混淆了 NAT 和防火墙

让我们从最坏的情况开始。你有一个正确配置的防火墙,除了基本端口之外的所有东西都被双向锁定。除非您正在使用这些端口之一(并且没有人不使用),否则您将无法连接防火墙对面的两个系统。这就是像这样的工具有用的地方。

大多数家庭防火墙并没有那么严格——它们不允许许多传入端口,但允许大多数外部端口。因此,如果连接是从网络内部发起的,您可以连接到任意资源。许多隧道方法都依赖于此 - 例如您的“经典”反向 ssh 实现。

NAT 不是防火墙。所有它是让你连接多个系统,本地IP地址范围,以一个外部IP地址。顺便说一句,这几乎总是与防火墙配对,让您可以执行诸如阻止和转发端口之类的操作。在 NAT 的情况下,您可以转发端口(或使用 upnp,即使它现在不流行)或使用家庭防火墙将使用的许多机制。

现在我已经从我的系统中获得了所有这些,我们可能正在研究的过程是“打孔”,并且在大多数情况下是某种TCP 打孔(因为 UDP 是一种选择,我没有看到任何表明同步使用另一种传输机制),它还具有通过 upnp 进行端口映射的选项 - 从经验来看,速度更快。虽然种子可以容忍没有端口转发,但它不能很好地工作。同样,在最坏情况下的系统上,它根本不起作用。Torrents 不是魔法。

机会是所有的洪流跟踪所做的是(很像传统的跟踪器),让你知道你想要的文件是在特定的客户端,告诉双方通话,然后得到的出路。