我的 Mac 上似乎忽略了路由表条目

我的 Mac 上似乎忽略了路由表条目

我家里的设置相当标准,由单个子网 192.168.240.0/24 组成,我的 DSL 路由器位于 192.168.240.1。其他设备占用 192.168.240.64 及以上地址。

但是我现在在 192.168.240.16 上添加了一个 Linux 服务器,它有两个 NIC。一个显然位于 192.168.240.0/24,另一个位于 192.168.241.0/24(192.168.241.16)。

目前,192.168.241.0/24 上没有其他内容,但我打算在不久的将来将我的 DSL 调制解调器移到这个子网上。

我正在尝试在 Linux 机器上配置两个接口之间的路由,我相信我已经成功了。但在移动 DSL 调制解调器之前,我想确保路由正常工作。

在执行任何操作之前,我使用 检查了 Mac 上的路由表netstat -r,其(减去不相关的条目)显示如下:

Destination        Gateway           Flags        Refs      Use   Netif Expire
default            192.168.240.1     UGSc         4665        0     en0
192.168.240        link#4            UCS             8        0     en0

因此我在 Mac 上配置了静态路由,如下所示:

route add -net 192.168.241.0/24 192.168.240.16

然后Mac上的路由表显示:

Destination        Gateway           Flags        Refs      Use   Netif Expire
default            192.168.240.1     UGSc         4665        0     en0
192.168.240        link#4            UCS             8        0     en0
192.168.241        192.168.240.16    UGSc            0        1     en0

当我尝试从 Mac 上 ping Linux 机器上的第二个接口时,没有收到任何回复。再次检查路由表时,令我惊讶的是,出现了一行额外的信息。

Destination        Gateway           Flags        Refs      Use   Netif Expire
default            192.168.240.1     UGSc         4665        0     en0
192.168.240        link#4            UCS             8        0     en0
192.168.241        192.168.240.16    UGSc            0        1     en0
192.168.241.16     192.168.240.1     UGHDI           0       17     en0

为什么会出现最后一行?为什么它不遵循我之前创建的路由?我需要做什么才能强制它使用我创建的静态路由?

答案1

我认为 UGHDI 中的 D 表示动态。Linux 机器告诉 Mac 它不知道到该子网的路由,并告诉它最好将该数据路由到 DSL 路由器(因为这是 Linux 机器的默认网关,因此假定知道如何到处路由)。

这意味着 Linux 机器没有在其 NIC 之间路由数据。我会检查它的配置。

答案2

看起来您不仅需要添加新的子网,还需要添加新的默认路由,这似乎是您做错的。

有趣的是,我经常在 Apple 设备上遇到基本名称解析和网络问题(ssh hostname失败并显示“无法解析主机主机名”但nslookup hostname返回 IP),所以这一点也不让我感到惊讶。

相关内容