我知道有多种路由协议(BGP 等),但是当我连接到家庭网络时 linux 使用哪一种?我正在使用基于 Debian 的系统。
答案1
路由有两个主要方面:第一个是数据包如何路由,第二个是系统如何知道如何路由数据包。
我不确定第一个有名字(至少我不知道)。 Linux 内核维护一个路由表,它是与网络接口、可选网关、度量和各种其他选项关联的子网列表。当您的系统发送数据包时,内核会查看其路由表;如果一个或多个条目描述了包含数据包目的地的子网,则内核将其发送到相应的网络或网关;否则,它会转到默认网关。您可以通过运行来查看路由表
ip route
(这将显示主表条目)和
ip route table local
(这将显示本地表条目)或
ip route table all
(这将显示一切)。
您至少应该看到类似的条目
default via 100.65.64.1 dev wlp3s0 proto dhcp metric 600
100.65.64.0/21 dev wlp3s0 proto kernel scope link src 100.65.67.24 metric 600
这表示要发送数据包到 100.65.64.0/21(我所在的子网)通过 wlp3s0
,并且任何与路由表条目不匹配的数据包将被发送到 100.65.64.1(默认网关)。
第二部分有多种算法。 BGP 就是其中之一,但您通常只会在 AS 路由器上看到它。在典型的家庭设置中,路由表是使用以下信息填充的:动态主机配置协议在 IPv4 上或新民主党在 IPv6 上。
也可以添加路由表条目,而不必与来自众所周知的协议的信息相对应;例如,容器网络的条目通常由容器运行时直接添加。