这里是这些Linux和IP:
在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适配器。