Linux 添加路由错误

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 上使用的路由添加命令时,我收到此错误“SIOCADDRT:网络不可达”(注意,LinuxD 可以 ping 到 188.9.5.2)。

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

@dmourati,谢谢您的回复。这 4 个 Linux 都在私有网络中,尽管 188.xxx IP 不属于 RFC 规定的私有 IP 范围(将很快迁移)。

答案1

Linux D 似乎只有一个RFC 1918私有地址。因此,Linux D 将无法直接访问 188.9.5.2。

编辑

我建议将所有服务器放入 RFC 1918 地址空间或全部放在公共网络上。一旦您解决了这个问题,请重新考虑您最初提出的隧道/路由问题。

答案2

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

似乎有一种更简单的方法可以做到这一点,它们都在同一个第 2 层上吗?您是否可以在每个设备上创建虚拟设备并将它们放在同一个网络上?如果您尝试将 TUN 适配器用作物理适配器的虚拟适配器,最好使用 eth0:0 eth0:1 适配器。

答案3

是的,您应该添加虚拟网卡以连接到同一网络。不建议使用其他网络掩码(网络段)中的网关

相关内容