我的路由表中有两条规则。默认路由,指向网关,第二条路由将网段中的所有内容转发到 * 或不转发到任何网关。第二条规则是否必要,以便本地数据包默认情况下不会首先发送到路由器,或者网卡是否足够聪明,可以检查自己的设置并查看正在发送的数据包是否在其网段中,而不是将其发送到路由器网关?
答案1
一般来说,在大多数 *nix 版本上,您将在路由表中(至少)看到两条规则。
您将有一条通往本地网络的路由(在本例中为 10.11.12.0/24):
10.11.12.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
还有一个标识您的默认路线。
0.0.0.0 10.11.12.1 0.0.0.0 UG 0 0 0 eth0
所以,这有效地告诉你的内核的是:
直接将任何数据包发送到10.11.12.0/24
eth0,而不专门将它们发送到默认路由器(标志:U = 路由为 UP)
将任何发送到本地网络以外的任何地址(0.0.0.0 与任何地址匹配)的数据包发送到网关 (10.11.12.1)(标志:U = 路由已启动,G = 网关)。
如果您有更多接口,或者您是多宿主的,或者配置了特定网络或主机路由,您可能会看到比这更多的路由,但这只是您定期看到的最小值。
通过配置和启动接口,内核将自动创建该本地网络路由。
您不需要手动添加该路线。