一台 PC 可以有多个默认网关吗?

use*_*537 21 networking

我知道一台 PC 可以有多个网络适配器,每个网络适配器都有不同的网络标识符(IP、MAC 等)。

我的问题是,一台 PC 可以有多个活动的默认网关吗?如果是这样,PC(或者更好的说法是操作系统)如何知道任何给定的数据包使用什么适配器?

Cho*_*er3 28

技术上是的,实际上不是。

关键在于“默认”这个词,它是默认的——我从赛百味订购了一个默认的三明治(带奶酪和墨西哥胡椒的肉丸玛丽娜),我通常会有所不同,但仍然是我的默认值,我没有两个默认值。

所以它与网络接口相同,您定义“规范”,然后指定何时要通过“静态路由”打破该规范(查看您选择的操作系统上的“路由”命令)。

希望这会有所帮助,并没有让你太饿...

  • +1 用于食物类比。 (9认同)

bah*_*mat 22

不,它不能有多个活动的默认网关。

任何操作系统都可以配置多个默认网关(技术上讲是到未指定地址的路由,即0.0.0.0::)。在这种情况下,它会为具有多条路径的任何路由目的地执行它会做的事情。

  • 它根据Preference值选择活动路由
  • 如果有多个具有相同 Preference 则它根据Metric选择一个
  • 如果 Preference 和 Metric 相同(这可能只是静态路由的情况),选择哪个的方法会因操作系统而异,但它会选择一个并将其标记为活动

它将使用主动选择,直到系统检测到它不再起作用(这将根据路由插入路由表的方式而有所不同),然后它切换到另一个可用路由(同样,基于首选项然后是度量)。

如果引入了具有更高 Metric 或 Preference 的新路由,它将切换到最优选的,然后是最短的 metric。

但在任何时候,它只能有一个(或零个)到达任何特定目的地的活动路线。


tyl*_*erl 5

默认网关路由使用,如果没有其他途径的匹配。所以根据这个定义,一次只能有一个。

除了不是真的,因为您的路由规则可能更复杂。例如,现代版本的 Linux 支持使用多个完全独立的路由表,并逐个数据包确定要查阅哪个表。例如,也许您有一个用于正常流量的网络配置,但您的 Web 浏览器有一个完全不同的路由表。或者,您可能还有另一个路由表,仅用于设置了特定 TOS 位的数据包。但是每个都有自己的默认网关,这将反映该特定路由表的默认路由。

通常,路由表就像“本地流量到本地接口,其他所有流量到路由器”一样简单。但是,如果您使用的是更复杂的网络设置,那么存在的工具可以应对您能想到的任何网络场景。