在具有相同子网的networking之间共享驱动器

我有两个物理上分离和独特的networking。 它们都有相同的子网192.168.1.0 netmask 255.255.255.0。 我需要分享两个networking的驱动器。 我的主机都是Linux。 在一台PC上设置两个nics到同一个子网是不行的。 不,我不能改变其中一个networking的networkingIP,这当然是最简单的解决scheme。 使用两台PC,其中一台尝试从另一台重新导出NFS共享不起作用,因为NFS不允许重新导出NFS共享。 我尝试使用虚拟机(VMWARE),它解决了所有的连接问题,但不能NFS导出types为vmhgfs的共享文件夹。 当然,这不是一个独特的情况。

我不能编辑networking,因为试图NFS挂载这个共享驱动器的设备是他们的embedded式代码硬编码的飞机“黑盒子”,在一个networking上执行192.168.1.10:/diskB的NFS挂载,192.168.1.11:/diskB在另一个networking上。 飞机上有两个冗余networking。 在真实的飞机上有一个可以完成这个任务的盒子,通过这些硬编码的IP地址同时服务于两个networking。 我试图模拟这个盒子,因为得到一个飞行箱将花费一年(所有当前生产分配给实际的飞机)。

您的问题是IPv6中已经解决的许多IPv4问题之一。 在这方面,我将您的问题看作是如何在IPv6世界中支持传统的纯IPv4设备的问题。

有了这个问题的观点,这是我将如何解决它:

至less从内核的angular度来看,运行服务器只能是IPv6。 运行用户模式程序,在单个物理networking接口上与IPv4进行通信,然后在虚拟networking接口上将其转换为IPv6,从而将内容传输到内核。

您可以运行与您需要支持的物理networking接口数量一样多的此程序实例。 程序的每个实例都负责一个单独的networking接口。 您需要为程序的每个实例分配一个/ 96 IPv6范围,这是一个可以忽略不计的IPv6地址数量。

使用这种方法,我以前实现了一个NAT64程序,它允许我在一个具有相同前缀和相同网关地址的两个独立的IPv4networking上使用一台机器作为客户机。

您的问题稍有不同,因为客户端和服务器的angular色似乎与我需要解决的用例相比已经交换了。 这意味着解决scheme会略有不同,但它也可能是一个稍微简单的解决scheme,因为它可能是无状态的,不需要连接跟踪。

程序的参数如下:

  • 使用哪个networking接口
  • 程序在这个接口上有哪个IPv4地址
  • 它在虚拟接口上具有哪个/ 96个IPv6前缀

该程序需要接收其IPv4地址的ARP请求并对其进行响应。 它需要为任何需要与之通信的客户端执行ARP查询并caching响应。 它需要在IPv4和IPv6之间翻译数据包。

IPv4和IPv6之间的地址映射如下所示:

  • 从IPv4到IPv6预先configuration了/ 96到地址。
  • 从IPv6到IPv4比较地址的前96位与configuration的前缀。
    • 如果匹配,则删除前96位来查找IPv4地址
    • 如果没有匹配,则build立一个没有路由到主机响应

正确的答案是

  • 将两个物理上分离的networking放在不同的IPnetworking上,并使用路由器在它们之间路由,
  • 或者在二层交换机上使用VLAN来join两个物理上分离的networking。

另一个解决scheme是在一个或两个networking上使用NAT来连接它们。

您的虚拟机解决scheme听起来像它必须双归属,这可能会解决一些问题,但您可能会看到一些路由问题。 您始终可以在除vmhgfs之外的FS中格式化共享分区。

更新:使用无类别IP子网划分(CIDR),25位。 将networkingA推到子网的底部,B推到最上面。 您可能必须重新build立一个或两个networking的IP。 在第三个networking中设置存储设备(为了Pete的缘故,使用不同的私有子网)。将存储设备导出到每个25位CIDRnetworking。

Update2:使用云存储。

如果你不能做任何这些build议,我开始相信你正在试图在你不是pipe理员的networking中设置一些东西。

您可以尝试调整与黑匣子交谈的接口上的子网,给它一个192.168.1.12的IP,一个255.255.255.248的子网和一个广播192.16.1.15

然后设置另一个接口的IP为192.168.1.100,并给它一个255.255.255.248的子网,其广播192.16.1.103

好吧,所以我设法让我的早期失败之一工作。 我在RHEL7主机上创build了一个虚拟机(VMware)。 我还安装了RHEL7作为客户操作系统。 在主机上,我在一个网卡上有IP 192.168.1.10。 另一个NIC已打开,但在主机中没有分配IP。 相反,虚拟机使用IP 192.168.1.11为它build立了桥接网卡。 然后,我创build了我的diskB的“共享文件夹”,并将其作为/ diskB在我的虚拟机中键入vmhgfs。 我在主机上启用了nfs,并正在导出/ diskB。 现在这是诀窍。 在VM中,我不能使用内核nfsd,而是build立一个用户空间NFS守护进程unfsd。 然后,我以root用户身份在VM exporting / diskB上运行这个unfsd。 现在两个networking都很开心,两个networking上的客户端都可以看到另一个networking上的客户端所做的更改。