网关是否总是一台真实的计算机或只是一个“逻辑”实体,可以在除广播IP之外的任何地址上使用?
网关是否总是一台真实的计算机或只是一个“逻辑”实体,可以在除广播IP之外的任何地址上使用?
Answers:
默认路由(也称为网关地址)必须属于能够将数据包转发到Internet其余部分并且愿意这样做的东西。它不一定是拥有它的东西的“主要” IP地址(无论什么意思)。它可以是在两个或更多设备之间浮动的逻辑地址,在高可用性设置中通常是这样。
为了使路由起作用,唯一的要求是,无论设备当前拥有并通告地址,该设备都可以并且将路由流量。
网关的IP地址可以是子网中的任何有效主机IP地址,即既不是网络地址本身也不是广播地址。该IP地址不必属于单个计算机或路由器,它可以是多个网关使用的“浮动” IP地址。查看有关HSRP,VRRP,GLBP或CARP的Wikipedia文章。
例如,当子网是172.16.23.0/25时,则:
网关必须是这些有效主机地址中的任何一个,例如172.16.23.65。这样,您的计算机的设置将为:
现在添加了第一跳冗余协议之一,实际的网关(路由器)可以具有IP地址172.16.23.1和172.16.23.2,但是使用虚拟IP地址172.16.23.65将自己呈现为通往子网的默认网关。
您所使用的“逻辑实体”有点令人困惑。但我会尽力回答。
根据我的经验,IP配置中的网关通常是物理设备。尽管它不一定是传统意义上的计算机(也可以是网络设备),但它必须是设备。
如您所知,默认网关服务的目的是充当所有以下请求的转发实体:a)计算机尚未在其路由表中或有一个条目指示系统将请求转发给计算机恰好是广播域之外的网关和/或b。)的IP。在两个主机位于同一广播域(即由交换机创建的网络拓扑)上的情况下,永远不会使用默认网关,因为系统可以使用子网的广播地址来查找拥有特定IP地址的系统的MAC地址。
简而言之,为了回答您的问题,从技术上讲,您可以将默认网关设置为连接网络上的任何IP地址。Windows或大多数其他操作系统都不会阻止您,因为它们通常不执行TCP / IP详细信息的验证。如果要进行设置,那么您很可能在技术上足以理解两者之间的区别。但是,如果是无法转发的设备的IP地址,则将导致依赖路由的应用程序(即Web浏览器)出错,因为该设备将无法准备路由表或路由服务转发请求。
但是,如果我错了,那么比我更有经验的人应该可以轻松地纠正我。
TL; DR-最有可能的物理设备。
路由表条目将子网解析为网关或网络适配器。
如果忽略了不必要的内容,则专用网络上设备的典型路由表可能看起来像
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