【问题标题】:Point to point network connection through firewalls通过防火墙的点对点网络连接
【发布时间】:2012-02-11 03:33:58
【问题描述】:

我想在不同位置的两台计算机之间建立网络连接(RTP 或 UDP),每台计算机都位于 NAT 调制解调器/防火墙后面。我不希望对防火墙进行任何修改。

我的工作假设是我需要一个机器人可以在两台计算机都可以访问的地方(例如互联网服务器上的 shell 帐户)。每台计算机都连接到机器人,机器人允许两台计算机更新和查询状态并交换数据。

就目前而言这没问题,但这意味着所有数据都通过机器人传输。有没有一种方法可以在没有机器人的情况下连接两台计算机,或者如果失败,则在建立连接后允许机器人退出数据交换?我的感觉是没有办法做到这一点,但是我的 TCP/IP 有点生疏了……

【问题讨论】:

标签: network-programming ip rtp nat


【解决方案1】:

如果您认为 NAT/防火墙上没有任何内容,那么您是正确的。

据我所知,例如打孔不适用于重载 NAT (PAT),因为源端口由 NAT 设备随机化,并且它映射/匹配目标公共地址和拾取的源端口选举。

UPnP 可能有效,但您需要再次假设它存在并在 NAT 设备上启用。

在我看来,如果你想成为通用的,你只有两个选择: 1. 配置 NAT。 2.使用代理(你提到的机器人)。 例如,Skype 使用第二个,但通过将每个 Skype 客户端用作潜在代理(可能仅当它检测到它不在 NAT 后面或不受其限制时)以分布式方式进行。

【讨论】:

  • 谢谢,我来看看打孔(虽然你说它不起作用,但我应该知道更多)。 UPnP 不是用于专用网络中的服务发现吗?我的场景是在公共网络上。
  • 如果我理解正确,UPnP 用于私有网络以允许元素之间的协商。在这种情况下,为了允许客户端更新他需要打开以进行通信的端口上的路由器/防火墙(实际上,自动修改路由器或防火墙),如果这样做,两个客户端可以交换他们可以通过的端口可以到达(交换可能会通过代理发生)。
猜你喜欢
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 2011-07-31
  • 2020-04-20
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 2012-03-28
相关资源
最近更新 更多