![向 Linux 路由表添加路由条目](https://linux22.com/image/542018/%E5%90%91%20Linux%20%E8%B7%AF%E7%94%B1%E8%A1%A8%E6%B7%BB%E5%8A%A0%E8%B7%AF%E7%94%B1%E6%9D%A1%E7%9B%AE.png)
我有两个系统的 IP 地址分别为 64.103.56.1(A)(设备名称 -wlan0) 和 64.103.225.18(B),现在我想要的是,每次我从系统 A ping B 时,它都必须通过地址为 10.0.0.251(C) 的路由器进行路由(我希望这是我到达 B 的下一跳),但这个路由器与这两个系统位于不同的子网上。我该怎么做?
/* 我尝试过的方法:我使用了“route add -host B gw C wlan0”,但出现错误,提示“不存在这样的进程或找不到这样的设备”。尝试 ping C 和 traceroute,发现我这边的网关地址是 63.103.236.3(D),因此添加了另一个条目 route add -host C gw D wlan0,我可以毫无错误地完成此操作!*/
答案1
您的计算机 A 的 wlan0 位于其自己的 IP 网络块上,您没有指定网络掩码,因此我们假设它是 255.255.255.0 或 /24。在这种情况下,A 无需使用路由器即可访问 IP 为 64.103.56.1-255 的任何系统(这些系统当然需要连接到相同的第 2 层广播域,即交换机)。
为了访问位于完全不同的网络上的计算机 B,计算机 A 需要知道如何访问计算机 B。计算机 A 所关心的只是其自身网络中的哪个 IP 地址可以帮助它访问计算机 B。此 IP 不必直接连接到计算机 B 的网络,就您而言似乎并非如此。
您需要找出网络 A 和网络 B 之间的路由路径。您的计算机 A 永远无法直接将数据包发送到 IP 为 10.0.0.251 的路由器,因为它不知道如何到达 10.0.0.251,A 只能将数据包发送到其自身 IP 网络块中的路由器。这也是 A 需要关心的一切。当数据包到达连接到网络 A 的路由器时,A 中需要存在一个路由条目,该条目知道如何到达 B,要么直接连接到路由器 B 的网络,要么将数据包转发到另一个路由器。
如果您正在寻找更直接的答案,请提供有关您的网络设置的更多详细信息。