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

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

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

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

或者还有其他方法可以实现这一点吗?我发现了这个问题(如何在没有第三台计算机的情况下通过 NAT 和防火墙连接两台计算机) 与之相关,但没有给出不采用隧道技术的完全可靠的解决方案。

答案1

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

让我们从最坏的情况开始。你有一个正确配置的防火墙,一切除了必要的端口被双向锁定外。除非你正在使用其中一个端口(没有人不使用),否则你无法连接防火墙两侧的两个系统。这就是像很有用。

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

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

现在我已经把这些都说出来,我们可能要看的过程是‘打孔' 在大多数情况下,TCP 打洞(因为 UDP 是一个选项,而且我没有看到任何迹象表明同步使用其他传输机制),它还有一个通过 upnp 进行端口映射的选项 - 从经验来看,这种方式更快。虽然 torrents 可以容忍没有端口转发,但这种方式效果不佳。同样,在最坏情况下的系统上,它根本无法工作。Torrents 不是魔法。

机会是全部torrent 跟踪器所做的是(与传统跟踪器非常相似)让你知道你想要的文件在特定的客户端,告诉双方进行对话,然后让开。

相关内容