Linux添加路由错误

这里是这些Linux和IP:

  • LinuxA:eth0 188.9.5.2,tun0 10.0.0.1
  • LinuxB:eth0 188.8.6.3,tun0 10.0.0.2
  • LinuxC:eth0 188.9.7.4
  • LinuxD:eth0 10.62.8.5

在LinuxA上,我可以ping到LinuxB的10.0.0.2。

在LinuxB上,我可以ping到LinuxA的10.0.0.1。

在LinuxA上,我启用了这些:

/proc/sys/net/ipv4/ip_forward = 1 /proc/sys/net/ipv4/conf/tun0/forwarding = 1 

在LinuxC上,我添加这样的路由

 route add -net 10.0.0.0 netmask 255.255.255.0 gw 188.9.5.2 

并确认LinuxC可以同时ping到10.0.0.1和10.0.0.2

但是,在LinuxD上,当执行LinuxC上使用的route add命令(注意,LinuxD可以ping到188.9.5.2)时,出现“SIOCADDRT:Network is unreachable”的错误。

请有人可以帮我解决这个路由/网关问题?

@dmourati,谢谢你的回复。 这4个Linux都在专用networking中,尽pipe188.xxx IP不是按照RFC的私有IP范围(即将被迁移)。

看来,Linux D只有一个RFC 1918专用地址。 因此,Linux D将无法直接达到188.9.5.2。

编辑

我build议把所有的服务器放到RFC 1918的地址空间里,或者全部放在公共networking上。 一旦你有了sorting,重新审视你最初提出的隧道/路由问题。

LinuxD无法直接使用该地址连接到Linux C. 您可以在LinuxC和LinuxD上创build一个虚拟接口,作为相同/ 30子网的一部分,并通过该接口传输stream量。 您需要在每台需要与之通信的设备上安装另一条路由。

似乎有一个更简单的方法来做到这一点,他们都在同一个Layer2? 你可能只是创build虚拟设备,并把它们放在同一个networking上? 如果您试图使用TUN适配器作为物理虚拟的,则最好使用eth0:0 eth0:1适配器。