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

我们devise了一个设备作为一个设备使用,但是使用内部的以太网ipv4与内部的不是基于linux的ipv4通信外设进行通信,就像我们使用pci或usb所做的那样。 现在出现外部networking接口必须能够接受任何ipv4地址的问题。 我们应该如何将IP地址归属于内部接口和外设? 有一个过程必须能够与内部外设和外部世界进行通信,从而与两个networking进行通信。

我们已经尝试使用SO_BINDTODEVICE将套接字绑定到特定的接口,而对于内部外设使用169.254.0.0范围,但是只要我们的外部接口也有一个地址在该范围内(使用zeroconf协议),我们再也收不到我们外设的数据包了。

我已经想到了替代方法,使用linuxnetworking命名空间或者限制环回接口的地址范围,以便能够将127.0.0.0networking的一部分用于我们的内部外围设备,但是我感到困惑。 这些方法有什么缺陷,我们还没有尝试过。

你可能会考虑使用IPv6。 IPv6具有链接本地地址 ,非常适合您的使用情况。 它们的作用范围是给定的链路,所以如果不同链路上的两台主机使用相同的IPv6链路本地地址,那么就没有问题了。

看来,100.64.0.0/10地址范围是为我需要的使用保留的(只要我的产品不用于运营商级的NAT场景)。 从维基百科 :“这个地址块[100.64.0.0/10]不应该在专用networking或公共互联网上使用:它只能用于运营商networking的内部操作。