路线未被删除

路线未被删除

我有一台装有 Ubuntu 18.04 的机器。

使用以下 /etc/network/interfaces

auto ens160
iface ens160 inet static
  address 10.16.21.80
  gateway 10.16.21.254
  netmask 255.255.255.0
  dns-nameservers 10.16.15.1 10.16.15.2 127.0.0.53
  dns-search eqx.solaredge.com



auto ens160:235
iface ens160:235 inet static
address 10.16.15.235
netmask 255.255.255.0

每次我重启机器时,路由10.16.15.0都会回到路由表中,我必须手动删除它。还有其他方法可以永久禁用此路由吗?

我每次都运行以下命令:

route del -net 10.16.15.0  netmask 255.255.255.0

我使用/etc/rc.local一台机器在每次启动时运行此命令,但我想知道是否还有其他方法。

答案1

您在 10.16.15.0/24 网络中有一个接口。

默认情况下,Linux 会向任何本地接口添加路由。如果您没有路由,您如何联系 10.16.15.0/24 网段上的设备?您是否希望到 10.16.15.0/24 的流量通过 10.16.21.254?

如果是的话,只需删除的接口描述auto ens160:235

要删除的部分是

auto ens160:235
iface ens160:235 inet static
address 10.16.15.235
netmask 255.255.255.0

稍微扩展一下答案。

当您想将数据包发送到某个地址时,您的操作系统会查看其路由表。通常,路由表由两个条目组成:可直接访问的本地子网和默认网关。但它可能包含任意数量的路由。

路由带有权重,通常称为度量。这可以在以下示例输出中看到:

default via 10.0.3.1 dev wlan0 proto dhcp metric 600 
10.0.3.0/24 dev wlan0 proto kernel scope link src 10.0.3.48 metric 600

路由的选择基于最具体的路由,如果存在两个相等的路由,则优先选择度量值最低的路由。默认路由实际上是 0.0.0.0/0,因此它与 IPv4 一样不具体。这意味着,如果没有其他路由匹配,这是最后的选择!

您有一个直接连接的接口,其网络掩码为 /24,即 255.255.255.0。这是方式比网络掩码 /0 更具体,因此无论权重如何,它都会获胜。发往 10.16.15.0/24 的流量将直接在接口上发送ens160:235,无需任何路由。

这可能是您想要的行为。如果您将主机连接到 L2 网段,那是因为您希望该主机与同一网段上的其他主机进行通信,而无需路由开销。

如果您不想要这种行为,我建议您解释一下为什么您不想要它。这是一个非标准解决方案,因此可能需要编写脚本。正确的方法是当接口启动时调用脚本或命令

但这可能不是您想要的。

相关内容