系统
我有一个 ARM Linux(内核 3.17)供现场使用,它有多个 NIC,例如 eth0、eth1 和 wlan0。在左侧,我需要使用 PC0 来配置 ARM Linux,以便它可以更改其行为,例如记录数据的频率、打开通道的电源等。它还允许现场人员配置 eth1 的 IP 地址,以便客户的设备可以从 ARM Linux 系统读取数据。我应该监听 eth0 以及 eth1 来执行简单的数据检索(例如 ftp)。
PC0 <---left side---> [eth0 ARM Linux eth1]<---right side:a bunch of devices>
要求
- 我们使用eth0来配置,而不是串口、USB,以简化编码。所以我们使用两个以太网(和一个 Wi-Fi)。在启动 Linux 时,使用脚本静态分配 Eth0 IP。
- 我们无法预测客户将在 eth1 上指定什么 IP。他们在 PC0 上使用我们的 GUI 软件来指定这一点。他们不使用 DHCP 服务器。
- 左侧只有一个PC0。右侧还有许多其他设备。客户甚至可能不希望我们使用 PC 在右侧参与。所以我们必须使用eth0来配置ARM Linux设备,而不是使用eth1。
- 左侧永远不应该到达右侧。它们应该是隔离的网络。它们都是局域网。没有一个会到达互联网。 ARM Linux 不是网桥或路由器。
- ARM Linux 应用程序仅侦听,然后在请求时做出响应。它从不发起任何事情。回复应仅通过请求传入的同一 NIC。
问题
由于我们为 eth0 和 PC0 预定义了 IP,因此我们的客户可能会意外地为其网络使用相同的子网。我们有很多客户,所以这种情况可能会发生。
- Linux 和 TCP 堆栈会混淆吗?有没有办法让它仍然顺利运行?
- 如果我们的 PC0 不小心与右侧设备之一的 IP 相同怎么办? Linux 和 TCP 堆栈现在会混淆吗?有什么办法让它工作吗?
- 如果我的 eth0 与右侧设备之一具有相同的 IP 地址怎么办?
- 如果 eth0 与 eth1 具有相同的 IP 怎么办?
我知道这种情况听起来很愚蠢,但我只是大声思考,以便我可以预见任何问题并避免它们。因此,如果 eth0 和 eth1(以及 Wi-Fi)存在很多问题需要隔离在同一子网中,我可能会告诉我们的客户我们保留一个特殊的子网,他们不应该使用它。