“scope”在 ip route 中有什么作用,为什么需要在 Linux 中设置静态路由?

use*_*750 4 networking linux iproute2 routing-table

如果我想用静态路由规则替换默认的 dhcp 路由规则,我必须添加规则ip route add scope link dev eth0。否则我会得到一个错误:“Nexthop has a invalid gateway”。

以下是我的问题:
Q1:ip route 中的“scope link”是什么意思?
Q2:为什么要从dhcp规则改成静态规则?

use*_*686 7

这些路由是您告诉 Linux 内核您所在的子网的方式。

添加 IP 地址时,此信息不会存储在隐藏的“我的当前子网”字段中;相反,它总是转换为没有指定网关的“范围链接”路由(也称为“设备路由”或“接口路由”),并且每当内核需要确定某个地址是否可直接访问时,它只执行路由表检查.

通常,一旦您配置了 IP 地址,这些路由就会自动添加——例如,运行ip addr add 192.168.1.5/24会分配 IP 地址 192.168.1.5为 192.168.1.0/24 创建子网路由。所以在正常使用中没有必要添加这些路由。

但是当你盲目地“删除所有路由”时,你最终也会删除这些自动创建的路由,内核的“这个地址在我的子网中吗”检查不再起作用。这就是您最终不得不手动重新添加路由的原因。

(内核需要时进行这样的检查ip route add,因为路由网关(下一跳)必须直接同一L2连接上到达-他们不能落后其他网关,网关必须在你的子网。

路由范围是表达此限制的通用机制:新路由的下一跳需要通过具有较低范围的现有路由可达。换句话说,您必须先通过本地主机(链接范围)才能到达远程主机(全局范围)。)