如何将多个标准化网络连接到一个公共网络?

网络工程 路由
2022-03-03 14:18:22

想象一下,如果你愿意,一系列定制的构建模块(建筑大小)。每个模块都设置有标准化的控制/自动化设备(PLC、VFD、HMI 等),这些设备在模块内通过基于以太网的工业协议(例如 EthernetIP、Modbus TCP)相互通信。由于每个模块都使用标准化的控制/自动化设备配置,模块 A 中的 PLC X 将具有与模块 B 中的 PLC X 相同的 IP 地址配置。

现在我们在一个站点安装了几个这样的模块,并希望将它们连接到一个带有站点范围的 SCADA HMI 和 Historian 的集中监控站(控制室)。由于每个模块都具有相同的配置(使用相同的 IP 地址),由于 IP 地址冲突,将它们简单地连接到公共网络是有问题的,由于额外的工作量,也不需要为所有模块上的每个以太网连接组件配置唯一的 IP 地址,损失配置标准化和人为错误的风险(例如,不希望模块 A 中的 PLC 意外控制模块 B 中的 20 个左右 VFD 之一)。

这是我想要反馈的部分(下)......

在我看来,一种解决方案是为每个模块配备一个支持 NAPT(网络地址端口转换)的设备(例如,路由器或支持 NAT/PAT 的交换机),我们将其称为路由器。路由器在连接到公共网络的接口上配置了唯一的 IP 地址,在连接到模块网络的接口上配置了标准化的 IP 地址。NAT/PAT 规则将被添加到路由器配置中,以允许通用 SCADA 系统访问模块设备(例如模块 PLC)。

任何人都可以建议对此实施进行改进(或指出流程)。我很想知道这个用例是否有更合适的网络技术(网桥、网关等)。

此外,我想实现扩展到模块的 VLAN,以允许分离控制网络(如上所述)、数据网络(用于模块内的可变计算设备)和业务网络。

2个回答

我会认为通过设计带来重叠寻址的网络设计是有害的像瘟疫一样避免它。在新的/全新的设计中,避免使用 NAT。想象一下当您发现其中一个应用程序不能很好地处理 NAT 和/或端口转发时的痛苦。

我建议(现在这变得自以为是,因此可能离题)

使用一些只有 IPv6 才能提供的功能,并为现代网络使用 IPv6。

  • 每个模块都有一个支持 IPv6 的路由器作为公共网络的入口/出口点。
  • 对模块,路由器根据需要暴露尽可能多的VLAN/子接口/子网,以完成业务/数据/控制“区域”的inta-module拆分。一些粗略的访问列表或防火墙(例如 ZBFW,如果它是 Cisco)确保流量不能在区域之间转发,而只能转发到/来自中央网络(或其相应的“区域”)。
  • 路由器充当公共网络中 DHCPv6 服务器的 DHCPv6-PD(前缀委托)客户端,请求适当大小的 IPv6 前缀的委托。
  • 使用适当的机制(即动态路由协议),中央网络然后确保新委托的前缀的路由信息​​被适当地传播(即参与公共网络的所有路由器最终都知道前缀2001:0db8:000a::/48现在可以通过路由器“A”到达,并且它们知道如何到达路由器“A”。)有许多不同的方法可以实现这一点,所有这些都取决于公共网络的构建方式(平面 LAN?以某种方式模拟/拉伸的广播域而不是 LAN?PPPoE 会话到一个数字集线器?一堆带有 PPP 的串行线路?MPLS L3-VPN?运营商提供的一些 MetroEthernet L2 服务?......可能性无穷无尽)。

然后,路由器和给定模块的系统确保模块内的每个系统都获得可预测的 IPv6 地址。

  1. 通过成为有状态的 DHCPv6 服务器,将租约分配为<DelegatedPrefix> + <ModuleInternalSubnetID> + <predefinedHostID>(虽然,这可能是一个挑战,但尝试基于 DHCPv6-PD 委托的网络前缀设置有状态的 DHCPv6 服务,而 HostID 部分是预配置/固定)
  2. 或者通过在终端系统上实现类似 Linux 的ip 令牌,终端系统执行 SLAAC 来学习当前的子网前缀,然后尝试它自己手动预定义的 HostID,使用它执行 DAD 并启动 IPv6 接口。

对于(有点)可预测的地址来说就这么多了,对于 IPv6,拥有可预测的地址并不能提供太多的附加值——它仍然是一堆没人能记住的十六进制数字。输入 DNS。

一些 DNS 魔术可能是可取的。一旦中央 DHCPv6 服务器将前缀分配2001:0db8:000a给路由器“A”,它就可以继续执行一个脚本,该脚本生成一组预先知道的 AAAA 记录,例如<oneOfTheKnownEndSystemNames>.moduleA.internal.myscadanet.tld,每个资源记录为2001:0db8:000a:<ModuleInternalSubnetID>:<givenHostID>. 这可能最好使用 DDNS(研究主题:动态 DNS 更新,而不是 DynDNS 风格的 HTTP 更新)。该脚本可能驻留在 DHCPv6 服务器本身上,而这又是唯一允许动态更新相邻 DNS 服务器的系统。

嗯。有点进步的一面,所有这一切。但仍然 - 这是2010年代。IPv6是一回事。与您的供应商交谈。

对于那些对工业环境中每台机器/模块 NAT 的主题和用例感兴趣的人。我提供了思科和罗克韦尔自动化联合制作的白皮书的链接(和附件)。

在融合的全厂以太网架构中部署网络地址转换