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


12

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

我的问题是,一台PC是否可以有多个活动的默认网关?如果是这样,那么PC(或更确切地说是OS)如何知道给定数据包使用什么适配器?


如果只是说ip网关,则关键字为“默认”,则情况可能有所不同。
Tony Roth,2012年

1
最好的方法是将较高的路由度量标准设置为默认值之一。在Windows和Linux上都可以很好地工作。具有较低指标的路由将获胜,直到该接口出现故障
Mike Pennington 2012年

1
我真的很想知道您要使用多个默认网关来完成什么。负载均衡??也许还有一个更具体的潜在问题。
Paul Ackerman 2012年

Answers:


25

从技术上讲是,实际上是没有。

关键是术语``默认'',这是默认值-我从Subway订购了一个默认三明治(肉丸Marinara配奶酪和墨西哥胡椒),我通常会有所不同,不过仍然是默认值,但我没有两个默认值。

因此,与网络接口相同,您定义“规范”,然后指定何时要通过“静态路由”违反该规范(请在所选操作系统上查看“ route”命令)。

希望这会有所帮助,并且不要让您太饿...


7
+1类比食物。
汤姆·奥康纳

1
+1尽管大多数操作系统可以支持多个网络视图,这些视图可以允许多个默认网关,但是几乎可以肯定,它与Questioner所考虑的意义不同。
克里斯·S

当您有两个NIC(A和B)并设置了默认网关(通过A出站),并且有人通过B与您进行对话时,会发生什么情况?(我很好奇,因为我针对这种特殊情况写了一个答案,现在我开始质疑它了)

1
@ArjunShankar然后使用NIC B传输回去,这仅仅是因为它知道该路由,所以只有在没有到目的地的直接路由时才使用默认路由。
斩波器

需要指出的是,如果您从未连接到网络的B上收到了数据包(它已路由到您),那么您将得到不对称对话,因为目标网络不在路由表中,因此答复将转到默认网关。如果这是一条直线路线,则无论如何应该可以运行,但是如果它穿过有状态防火墙,则可能会惹恼您
SpacemanSpiff 2012年

18

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

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

  • 它根据“ 首选项”值选择活动路由
  • 如果有多个具有相同的首选项,则它会根据指标选择一个
  • 如果“首选项”和“度量标准”都相同(这仅适用于静态路由),则选择方法将因操作系统而异,但它将选择一个并将其标记为活动

它将使用活动选择,直到系统检测到它不再起作用为止(这将取决于将路由插入路由表的方式而有所不同),然后切换到另一条可用路由(再次基于“首选项”然后根据“度量”)。

而且,如果引入的新路由具有较高的“度量”或“首选项”,它将切换为最优先的,然后是最短的度量。

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


注意,我故意省略了一些更具体的路由,因为主题是关于defaults的。路由选择按以下顺序进行:1)最具体2)最高优先级3)最短度量。如果全部相等,则或多或少是任意的。
bahamat

一个不错的答案,很有意义而且很简短
SpacemanSpiff 2012年

@bahamat如果我有两个默认值而活动的默认值无法将我带到目的地。操作系统会立即尝试与第二个联系吗?
AhmedWas

@AhmedWas不幸的是,答案比堆栈交换注释中的要复杂得多。这实际上取决于许多不同的因素。有时可能会,但有时可能不会,这取决于它的配置方式以及网络上其他组件的行为方式。
bahamat

@bahamat感谢您的评论。您能否仅提及一个简单的示例,在该示例中操作系统将尝试与第二个可用网关联系?
艾哈迈德·瓦斯(AhmedWas)

3

在Windows(至少是Vista)上,在同一接口上具有多个具有不同度量标准的默认路由是可以的。如果较低的度量标准路由器出现故障,Windows将自动切换到具有下一个最高度量标准的路由。如果有多个具有相同度量标准的默认路由,则Windows会随机选择一个要使用的路由。

这使您可以拥有冗余路由器,而无需在路由器上配置故障转移。

在Linux上,这不起作用。您可以具有多个具有不同度量标准的默认路由,但是当前Linux内核会忽略该度量标准值。如果具有最低度量标准的默认路由器消失,流量将不会流动。


值得一提的是,您可以在多个连接上设置默认网关,但是如果您在网络连接下打开高级设置菜单,可以在其中选择绑定顺序,则将首先选择顶部的NIC,然后再选择顺其自然。对我而言,很有趣的是,有多少人通过单击CLI就能通过CLI处理其中的某些内容。
SpacemanSpiff 2012年

1
默认路由与默认网关不同。两者用于不同的上下文。
约翰·加迪尼尔

@JPW如果我有两个默认值而活动的默认值无法将我带到目的地。操作系统会立即尝试与第二个联系吗?
AhmedWas

3

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

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

通常,路由表很简单,即“到本地接口的本地流量,到路由器的其他所有流量”。但是,如果您使用的是更复杂的网络设置,则可以使用这些工具来应对您可以梦想的任何网络场景。


这应该是公认的答案。
prosti

1

一台PC可以具有1个以上的默认网关,但是在静态IP配置中,您仅输入1个地址,实际上,它可以是几个将您带出网络的默认网关。有一个地址称为浮动地址,该地址仅是虚拟地址,不是真实地址。该地址是在一个网络中的两个路由器之间浮动的地址。浮动地址是在PC上输入的,当它进入工作中的交换机时/进入路由器之前,它将对路径做出自己的结论,并选择两个或多个默认网关之一。

很难说明它是如何工作的,它是一种网络专业级工具,使用时在网络中运行的协议是:VRRP和HSRP。思科和瞻博网络协议。


0

是的你可以。但是,这有什么意义呢?

您很可能正在寻找类似“反射模式”的东西(我认为这在Solaris 2.4.x中被称为)。也许您可以在此处详细说明您的问题-您当前的设置是什么,目标是什么。

无论如何-我猜您有一台具有网络接口的多宿主服务器,该服务器可能会接收来自任何客户端的流量。现在,您要通过流量进入的相同界面进行回复...

可以完成此操作-但不能使用默认网关的简单方法。


-2

对于Windows计算机:在命令提示符下可以找到要使用的工具:“ route”“ route print”将显示您当前的路由表

每个适配器只能有一个默认网关。PC将仅有效地使用一个网关-NIC绑定顺序路由中列出的第一张卡将通过您的路由表查找,并使用更具体的规则并在通过该表时变得更加通用。

看看这篇文章的想法... Windows 7自Win2k以来并没有太大改变。 http://support.microsoft.com/kb/140859


1
有人介意分享他们为什么拒绝我投票吗?我提供的答案开始回答一些其他问题。
cwheeler33

-5

如果您的服务器/ PC是多宿主的,这意味着它是两个独立网络的一部分,则每个网络适配器上都将具有一个默认网关。然后,您可以确定网络适配器的优先级。就像其他人说的那样,您仍然只有一个默认网关,但这是每个网络适配器的。


4
不,不,您真的不会-这是一个非常错误的答案
Chopper3 2012年

2
您会将默认路由与默认网关混淆,后者是完全不同的动物。
约翰·加迪尼尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.