网关是否始终是一台真实的计算机,还是仅仅是一个“逻辑”实体,它可以位于除广播 IP 之外的任何地址?
答案1
默认路由(又称网关地址)必须由能够将数据包转发到互联网其余部分并愿意这样做的某个东西拥有。它不必是拥有它的那个东西的“主要”IP 地址(无论这意味着什么)。它可以是两个或多个设备之间浮动的逻辑地址,在高可用性设置中,它通常是这样的。
为了使路由正常工作,唯一的要求是,无论什么设备当前拥有并宣传该地址,该设备都可以并且将会路由流量。
答案2
网关的 IP 地址可以是子网中任何有效的主机 IP 地址,即既不是网络地址本身,也不是广播地址。此 IP 地址不必属于单个计算机或路由器,它可以是多个网关使用的“浮动”IP 地址。查看 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 将自己呈现为子网的默认网关。
答案3
您的用法中的“逻辑实体”有点令人困惑。但我会尽力回答。
根据我的经验,IP 配置中的网关通常是物理设备。虽然它不一定是传统意义上的计算机(也可以是网络设备),但它必须是设备。
您可能知道,默认网关的作用是充当所有请求的转发实体,这些请求包括:a.) 计算机的路由表中尚不存在的请求,或有条目指示系统将请求转发到恰好是网关的 IP 和/或 b.) 广播域之外的请求。在两个主机位于同一广播域(即由交换机创建的网络拓扑)的情况下,永远不会使用默认网关,因为系统可以使用子网的广播地址来查找拥有特定 IP 地址的系统的 MAC 地址。
简而言之,回答您的问题,从技术上讲,您可以将默认网关设置为连接网络上的任何 IP 地址。 Windows 或大多数其他操作系统都不会阻止您,因为它们通常不执行 TCP/IP 详细信息验证。 如果您要设置它,那么您很可能在技术上足够精通,能够理解其中的区别。 但是,如果它是无法转发的设备的 IP 地址,那么它将导致依赖路由的应用程序(即 Web 浏览器)出现错误,因为该设备没有准备好路由表或路由服务来转发请求。
然而,如果我错了,比我更有经验的人应该能够轻松地纠正我。
TL;DR——最有可能是物理设备。
答案4
路由表条目将子网解析为网关或网络适配器。
如果省略不必要的内容,专用网络上设备的典型路由表可能看起来像
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