Linux 如何区分ZeroMQ数据包与正常流量
我正在模拟以下场景: 有两个路由器,A和B,都可以访问互联网,也可以通过内部专用网络(基本上是它们之间的以太网电缆)相互连接。它们分别服务于N个客户端(每个路由器作为其自己的客户端网络)。路由器通过专用网络通过ZeroMQ发布者-订阅者方案相互发送类似keepalive的消息 此外,当A拥塞时,它必须向其客户端发送流量 到B(反之亦然),这将把流量转发到Internet 从而“帮助”拥挤的路由器(暂时) 考虑到这两个路由器都是Linux,我认为将A的默认网关更改为B的专用网络接口IP足以将流量搅动到B(通过公共内部专用网络) 但是,当B从A的客户端接收流量时,必须小心不要将包含ZeroMQ应用程序之间交换的消息的包转发到Internet(外部网络) 我的问题是:在收到的数据包中,B如何知道并区分来自客户端数据包(来自A)的ZeroMQ消息 使用iptables/nfqueue捕获数据包,然后分析数据包?如果是这样,将如何识别发送到ZeroMQ应用程序的数据包 这都是考虑到B将把连接到专用网络的接口中接收到的所有数据包转发到互联网(up) 注意:我不知道这是否与问题相关,但在订户应用程序中,会对收到的消息应用筛选器。每个以“network_zmq”开头的消息都由订阅者捕获 编辑:我也在A和B之间交换ICMP数据包(ping)(这是我的场景中的一个要求)。这意味着从A到B的ICMP请求也不得转发到Internet Q:如何区分ZeroMQ数据包与正常流量 回答一个简单的问题并不容易。ZeroMQ不仅仅是发送一些数据包 ZeroMQ数据包可以使用(如果通过L3+网络基础设施)几种不同的传输类ELinux 如何区分ZeroMQ数据包与正常流量,linux,networking,zeromq,Linux,Networking,Zeromq,我正在模拟以下场景: 有两个路由器,A和B,都可以访问互联网,也可以通过内部专用网络(基本上是它们之间的以太网电缆)相互连接。它们分别服务于N个客户端(每个路由器作为其自己的客户端网络)。路由器通过专用网络通过ZeroMQ发布者-订阅者方案相互发送类似keepalive的消息 此外,当A拥塞时,它必须向其客户端发送流量 到B(反之亦然),这将把流量转发到Internet 从而“帮助”拥挤的路由器(暂时) 考虑到这两个路由器都是Linux,我认为将A的默认网关更改为B的专用网络接口IP足以将流量搅
{tcp://pgm://epgm://vmci://}
如果在这种需要下,如果将其配置为设置用于这种标记的活动声明的-label.setsockopt(ZMQ_-TOS,aToS_值)
设置IP标头的ToS字段(区分服务(DS)和显式拥塞通知(ECN)字段
Q:B如何在收到的数据包中知道并区分来自客户端数据包(来自A)的ZeroMQ消息
这一部分比较难。弱的、基于ToS的检测是可能的,如上所述,其余的数据包处理取决于L3+路由器软件功能,而不是ZeroMQ
如果来自A的某些客户端数据包具有与用于标记源自ZeroMQ的流量的ToS标签相同的ToS标签,则典型的L3+路由器软件没有机会区分这些情况(它可能会构建一些试探法和“猜测”,但从那时起,L3+路由器软件主要以性能为中心(在I/F之间尽可能快地移动数据包),不是“完全可编程”-用户定义的嗅探平台,也不是自适应策略实施平台)
构建ZeroMQ代理(中间人)可以帮助您解决注入MITM节点不会违反任何具有法律约束力的义务的情况