使用以太网 IPv4 作为内部总线,同时允许外部接口使用完整的 IPv4 地址范围

使用以太网 IPv4 作为内部总线,同时允许外部接口使用完整的 IPv4 地址范围

我们设计了一个设备,用作一个设备,但内部使用以太网 ipv4 与内部(而非基于 linux 的 ipv4 外围设备)进行通信,就像我们使用 pci 或 usb 所做的那样。现在的问题是外部网络接口必须能够接受任何 ipv4 地址。我们应该如何将 ip 地址分配给内部接口和外围设备?有一个进程必须能够与内部外围设备和外部世界进行通信,从而与两个网络进行通信。

我们已经尝试使用 SO_BINDTODEVICE 将套接字绑定到外围设备的特定接口,同时对内部外围设备使用 169.254.0.0 范围,但是一旦我们的外部接口也具有该范围内的地址(使用 zeroconf 协议),我们就不会再接收来自外围设备的数据包。

我已经想到了其他方法,使用 Linux 网络命名空间或限制环回接口的地址范围,以便能够将 127.0.0.0 网络的一部分用于我们的内部外围设备,但我很困惑。这些方法是否存在我们尚未尝试过的缺陷。

答案1

您可能考虑使用 IPv6。IPv6 已链路本地地址非常适合您的用例。它们的作用域是给定的链接,因此如果不同链接上的两个主机使用相同的 IPv6 链接本地地址,也不会有问题。

答案2

看来 100.64.0.0/10 地址范围是为我需要的用途保留的(只要我的产品不用于运营商级 NAT 场景)。从维基百科:“此地址块 [100.64.0.0/10] 不应用于私有网络或公共互联网:它仅供运营商网络的内部操作使用。”

相关内容