子网的网关是否需要成为“真实”计算机?


13

网关是否总是一台真实的计算机或只是一个“逻辑”实体,可以在除广播IP之外的任何地址上使用?


9
关于网关的现代且可能更正确的术语是 路由器。路由器可以完全存在于软件中,可以将常规计算机(例如PC,笔记本电脑和服务器系统)用作路由器,但通常使用专用的硬件设备
-HBruijn

2
您所说的“逻辑实体”是什么意思?
Barmar

2
@HBruijn,在大多数情况下,网关是路由器。通用术语是,网关是网络上的主机,其他主机向该主机发送发往其他网络的流量。这并不意味着它一定是路由器。它可能是代理,ALG等。此外,在极端情况下,发往其他网络的任何流量都必须被网关捕获而不被网关转发,在这种情况下,它不是路由器,因为它不在路由网络之间的数据包。
罗恩·莫平

我敢打赌,一个能够基于目标ip地址做出转发决定的系统不一定必须是图灵完整的...因此,不,路由器不必是计算机(相同的网桥适用于下一级,网关的级别较高,尽管程度可能不同,但是,每个此类系统通常都是可以通过管理方式或通过其他应用程序(例如路由协议)配置的设备(或设备集合),甚至可以处理配置,这些东西往往是(专用的)计算机
Hagen von Eitzen

@Barmar我的意思是,如果网关必须是专用的硬件设备(例如网桥或路由器),或者它可能只是诸如服务器中的设置之类的一条信息,如果您从编程语言的角度考虑,这是可变的。
Semo,

Answers:


29

默认路由(也称为网关地址)必须属于能够将数据包转发到Internet其余部分并且愿意这样做的东西。它不一定是拥有它的东西的“主要” IP地址(无论什么意思)。它可以是在两个或更多设备之间浮动的逻辑地址,在高可用性设置中通常是这样。

为了使路由起作用,唯一的要求是,无论设备当前拥有并通告地址,该设备都可以并且将路由流量。


6
...或者至少假装。
Shadur

2
@Shadur我对如果默认路由仅假装实际上是您知道路由流量的路由如何工作感兴趣。
MadHatter

1
路由本身是行不通的,但是如果您只想浏览,则可以让“网关”拦截并在端口53、80和443上运行透明代理,并使系统本身尽可能地隔离。
Shadur

7
好。我不同意,但这不是路由。我坚持这样的主张,即为了使路由正常工作,路由器必须进行路由,这听起来好像您不会不同意。
MadHatter19年

1
公平的点,但是此问题中使用的“网关”是默认路由,即next-hop-of-last-resort。这必须能够让你不仅要任何内部子网,你不拥有具体的路线,但一切
MadHatter19年

15

网关的IP地址可以是子网中的任何有效主机IP地址,即既不是网络地址本身也不是广播地址。该IP地址不必属于单个计算机或路由器,它可以是多个网关使用的“浮动” IP地址。查看有关HSRPVRRPGLBPCARP的Wikipedia文章。

例如,当子网是172.16.23.0/25时,则:

  • 网络地址为172.16.23.0,
  • 广播地址为172.16.23.127,和
  • 有效主机地址的范围为172.16.23.1至172.16.23.126(含)。

网关必须是这些有效主机地址中的任何一个,例如172.16.23.65。这样,您的计算机的设置将为:

  • IP地址:172.16.23.5
  • 子网掩码:255.255.255.128
  • 默认网关:172.16.23.65

现在添加了第一跳冗余协议之一,实际的网关(路由器)可以具有IP地址172.16.23.1和172.16.23.2,但是使用虚拟IP地址172.16.23.65将自己呈现为通往子网的默认网关。


9

您所使用的“逻辑实体”有点令人困惑。但我会尽力回答。

根据我的经验,IP配置中的网关通常是物理设备。尽管它不一定是传统意义上的计算机(也可以是网络设备),但它必须是设备。

如您所知,默认网关服务的目的是充当所有以下请求的转发实体:a)计算机尚未在其路由表中或有一个条目指示系统将请求转发给计算机恰好是广播域之外的网关和/或b。)的IP。在两个主机位于同一广播域(即由交换机创建的网络拓扑)上的情况下,永远不会使用默认网关,因为系统可以使用子网的广播地址来查找拥有特定IP地址的系统的MAC地址。

简而言之,为了回答您的问题,从技术上讲,您可以将默认网关设置为连接网络上的任何IP地址。Windows或大多数其他操作系统都不会阻止您,因为它们通常不执行TCP / IP详细信息的验证。如果要进行设置,那么您很可能在技术上足以理解两者之间的区别。但是,如果是无法转发的设备的IP地址,则将导致依赖路由的应用程序(即Web浏览器)出错,因为该设备将无法准备路由表或路由服务转发请求。

但是,如果我错了,那么比我更有经验的人应该可以轻松地纠正我。

TL; DR-最有可能的物理设备。


同一广播域上可以有多个不同的IP子网。在这种情况下,除非在主机路由表中添加了其他条目或正在使用ICMP重定向,否则这些主机之间的流量将通过其默认网关流动。
彼得·格林

@PeterGreen是的,有很多奇怪的情况。例如,假设192.168.0.0/24和10.0.0.0/24在同一物理以太网LAN上,并且网关分别是位于192.168.0.1和10.0.0.1的同一物理路由器。如果192.168.0.100 ping 10.0.0.100,则第一次往返将通过网关进行中继。网关还可以向每个主机发送ICMP重定向,告诉它们它们在同一LAN中。如果是这样,则每个主机将随后发送ARP请求以获取其对等方的MAC地址,然后所有进一步的通信将直接在对等方之间进行(而不是通过网关)。
Alex Hajnal

请注意,在上面的示例中,需要引导主机(通过ICMP重定向)以广播ARP请求,以请求外部网络上对等方的MAC地址。如果没有重定向主机,则不会发出外部网络ARP请求。
Alex Hajnal

5

路由表条目将子网解析为网关或网络适配器。

如果忽略了不必要的内容,则专用网络上设备的典型路由表可能看起来像

0.0.0.0/0 via 192.168.0.1
192.168.0.0/24 dev eth0

每个目的地都会赢得最具体的路由,因此子网路由优先于子网中地址的默认路由。

依次通过路由表解析网关地址,该路由表确定了要为其提供的网络接口以及在较低层上的地址。

因此,对于到的数据包1.1.1.1,在路由表中查找目标,并返回具有网关的默认路由。再次查找网关,返回以太网接口。

以太网具有MAC地址,因此将对网关地址进行ARP查找,并且将网关的MAC地址用于传出数据包(该数据包在其IP标头中仍使用正确的目标地址)。

其他较低层的传输方式也有所不同,例如PPP链接具有“对等地址”,因此它们的设备路由使用/ 32的网络掩码,并且它们跳过ARP解析并仅通过PPP链接以“广播”形式发送数据包。

一些IP堆栈需要手动创建设备路由,这使这一点更加明显:

ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up
route add -net 192.168.0.0 netmask 255.255.255.0 dev eth0
route add default via 192.168.0.1
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.