通过 Internet 在分布式系统中的 ZMQ 套接字之间进行通信

Communicating between ZMQ sockets in a distributed system over the internet

我一直在从事分布式系统项目,我的系统部分是 p2p。我的问题超级简单,我不知道人们通常是怎么解决的,因为我没有这方面的经验,我对这一切都很陌生。

我想在两个客户端之间通过互联网进行通信,这两个客户端都有 ZMQ 套接字

在我的本地网络或我的机器上,它们似乎工作正常,但在通过 Internet 通信时,我从未收到消息。我将其列入候选名单有两个原因:

1 ) NAT - 它不允许我的消息到达客户端主机,有谁知道如何解决 ZMQ 中的 NAT 问题,我听说过 TCP 漏洞打孔等,Web 开发人员和其他处理此问题的人通常如何管理此问题?

2 ) ZMQ 套接字无法通过互联网通信,即使通信严格在两个 ZMQ 套接字之间进行,而不是 BSD 套接字等。我不确定这个不过

如果有人在这方面有专业知识,我将不胜感激,这将帮助我前进,谢谢!

2 ) ZMQ sockets can not communicate over the internet, even if the communication is strictly between the two ZMQ sockets

好吧,2 ) 很简单,ZeroMQ 套接字显然可以在 Internet 上工作。

没有什么要补充的了。

1 ) The NAT - it is not letting my message reach the client host,

1 ) 值得更多关注:

是的,当本地 LAN 路由器连接到单个 public(已注册、协调的 IPv4 / IPv6 地址)时,NAT 可能就位。

接下来,游戏中可能会有另一个 show-stopper,FireWall,放置在一个或多个位置 (!) -- 可以是本地的(O/S 操作,可以检查,如果管理员级别登录到 localhost ),或者一个,集成到任何 Gateway/Proxy/Policy 执行中。

在任何情况下,您的本地管理员都应该进行彻底的设计审查,负责本地主机-O/S和网络基础设施元素以及网络范围内负责的安全经理/工程师(s).

如何?”部分:

这种(主要)复杂性正是 Game Studios 试图避免用户在解决这些复杂性时头疼并尝试提供一些逃避策略的原因。

对于一个简单的一对一案例:
确实可以使用一组规则进行端口转发设置(如果防火墙 + 网关工程允许)并且您的 ZeroMQ 连接可能会被定向到
tcp://<public-IP>:<_a_port#_known_to_be_FWDed_to_a_target_HOST_>地址。

更多,但仍然是单位:
这种情况对于单个连接设置来说似乎很容易,但如果需要有单位或数十个目标主机,网关(路由器)/防火墙管理员打开越来越多的端口的意愿就会相当有限安全边界的一侧。这里另一个技巧可能会有所帮助 - 使用标准 ssh-tools,其中连接可以利用所谓的本地端口转发和远程端口转发,并且互连享受单端口通过防火墙+网关,内容加密保护。当然,双方都需要更多的管理工作,但是,如果这些努力和稍微增加的延迟(添加加密 + 解密处理)不会破坏您的游戏内 UX 延迟计划,那么这是一种已知且明智的方法。

欲知更多,以上几个单位:
有一个重新使用临时但威胁安全的双面剑的选项 - 多人共享 (!) VPN,它解决了全球 "visibility" 问题(通常与一些中央(是它发布与否)服务提供映射和身份验证服务协调器)。本地主机端应用程序只是开始看到另一个 "local" 接口,在其 IPv4 / IPv6 地址方面不协调,但这个私有共享 VPN 似乎加入了所有玩家,看起来好像所有这些都共享一个通用的 IP 网络,有效地绕过了通用网络实践的所有 security/firewalling 努力——同时也是它实施的最大风险(更不用说委托人的风险远程、中央、authorisation/mapping 服务提供商中的 SPOF,是他们公开或隐藏的一组动机)。

自从多人游戏开始销售以来,游戏行业对所有这些问题感到恐慌(对于 2018/Q2 玩家可能看起来 自从 以来)并且该行业正在努力完全避免所有这些与复杂性相关的痛苦,因为大多数购买游戏的青少年预计不会同时获得耐心的坚持(系统地设计正确的设置)和足够深入的知识(以便了解所有游戏设置或重新配置的位置和内容的系统范围详细信息,以解锁安全的端到端在线游戏内可见性)。

对于确实是多对多的情况:
一个很好的例子始于 1990 年末/ 2000 年初,当时 IL-2 Sturmovik 的飞行员和虚拟中队社区全天候运行 24/7/365 "since ever"。他们使用社区赞助的 HyperLobby 一个 调解节点 来为所有感兴趣的成员一劳永逸地解决所有这些复杂问题。 HyperLobby 轻量级 client/server 服务基础设施正在执行所有端口转发映射设置和其他服务器端中介肮脏的黑客攻击,所有这些对 Pilot(s) 都是不可见的,并提供了额外的方法来管理 IL 的许多连接的多人游戏剧院-2、F/A-18、Su-27 Flanker、CFS、荣誉勋章等等,比我今天努力记住的还要多(在高峰时段超过数万个连接的 Pilot IIRC)。为真正的全球在线社区(有幸在伪历史 VFSQ 服务,成员跨越 13 个时区 - 来自夏威夷、巴西、U.S、U.K 的伟大声音设计和数十年来的杰出努力., 法国、德国、意大利、希腊到土耳其 - 与来自日本、澳大利亚、新西兰和许多其他地方的志同道合的朋友一起飞行,环游全球 - 无论是 East/West 前线 + 太平洋战区全球协调的周末活动- 任务重建到非常具有历史意义的细节或在 V-Day-s 周年纪念日享受纪念游行立交桥)-- ~致敬~ Jiri Fojtasek,干得好! -- 这有助于说明前进/遵循的方式(因为许多年轻的游戏门户确实遵循了这条路径)。