路由表和默认路由

rub*_*buc 3 routing

我的路由表中有两个规则。默认路由,即到网关,第二条路由将网段中的所有内容转发到 * 或不转发到网关。这第二条规则是否必要,以便本地数据包在默认情况下不会首先进入路由器,或者网卡足够聪明以检查自己的设置并查看发送的数据包是否在其网段中,而不是将其发送到路由器网关?

Tim*_*edy 5

通常,在大多数 *nix 版本的路由表中,您将看到两个规则(至少)。

您将拥有到本地网络的路由(在本例中为 10.11.12.0/24):

10.11.12.0       0.0.0.0         255.255.255.0   U         0 0          0 eth0
Run Code Online (Sandbox Code Playgroud)

还有一个标识您的默认路线。

0.0.0.0          10.11.12.1      0.0.0.0         UG        0 0          0 eth0
Run Code Online (Sandbox Code Playgroud)

因此,这有效地告诉您的内核是:

将任何数据包10.11.12.0/24直接发送到eth0,无需专门将它们发送到默认路由器(标志:U = 路由已启动)

将任何数据包发送到本地网络以外的任何地址(0.0.0.0 匹配任何地址)到网关 (10.11.12.1)(标志:U = 路由已启动,G = 网关)。

如果你有更多的接口,或者你是多宿主的,或者如果你配置了特定的网络或主机路由,你可能会看到更多的路由,但这是你经常看到的最少数量。

通过配置和调出接口,内核将自动创建该本地网络路由。

您无需手动添加该路由。

  • netstat 中的 `0.0.0.0` 或 `route -e` 输出中的 `*` 仅表示没有为该路由设置网关,并且数据包只是从特定接口路由出去。你只会看到直接连接的网络。 (2认同)