我正在模拟以下情况:
有两个路由器 A 和 B ,它们都可以访问Internet,并且还通过内部专用网络(基本上是它们之间的以太网电缆)相互连接。它们每个服务N个客户端(每个路由器作为其自己的客户端网络)。路由器通过 ZeroMQ 发布者-订阅者方案通过专用网络互相发送类似keepalive的消息。
此外,当 A 拥塞时,它必须向其客户发送流量 到 B (反之亦然),它将把该流量转发到Internet 从而“暂时”“帮助”拥塞的路由器。
考虑到两个路由器都是Linux,我想将 A 的默认网关更改为 B 的专用网络接口IP足以将流量引入 B (通过公共内部专用网络)。
但是,当 B 从 A 的客户端接收流量时,必须小心不要将包含消息的软件包转发到Internet(外部网络)在ZeroMQ应用程序之间交换。
我的问题是: B 如何在接收到的数据包中了解并区分来自客户端数据包(来自 A 的ZeroMQ消息) )?
用iptables / nfqueue捕获然后分析数据包?如果是这样,将如何识别发往ZeroMQ应用程序的数据包?
这都是考虑到 B 会将在连接到专用网络的接口中收到的所有数据包转发到Internet(上)。
注意::我不知道这是否与问题有关,但是在订阅者应用程序中,过滤器应用于收到的消息。订户捕获以“ network_zmq”开头的每条消息。
编辑:我还在 A 和 B 之间交换ICMP数据包(ping)(这是我的要求)。这意味着从A到B的ICMP请求也不能转发到Internet。