为什么我们需要给每个接口分配IP地址?给每个设备一个还不够吗?
为什么将 IP 地址分配给每个接口而不是设备?这会产生什么影响?
将接口连接到网络使其成为该网络的一部分。因此,IP 地址是连接的属性,而不是主机。
同样,主机可以有许多网络连接,因此也可以有 IP 地址。不同的接口通常具有不同的功能,因此区分它们很重要(例如内部控制台、公共服务、iSCSI)。
路由器的接口需要多个 IP 地址。
但是,在某些情况下,您希望为其接口后面的实际设备分配地址 - 例如,当您有冗余链接/接口并且您并不真正关心连接采用哪条路径时。然后您可以在设备内部使用一个虚拟环回接口,该接口始终处于链接状态。
这还不够。
假设我有一台具有三个接口的计算机:(eth0
有线以太网)、wlan0
(wifi)和vboxnet0
(虚拟机)。其中一个接口连接到内部网络,一个连接到互联网,最后一个连接到虚拟计算机网络。假设我只有一个地址 10.1.2.3,并且希望将大量数据包发送到 192.168.1.2,可在其中一个网络上访问 - 我应该将它们发送到哪里?不能只是将它们发送到任何地方,这种行为会在短时间内淹没所有网络。
但是如果eth0接口有192.168.1.3,wlan0有10.1.2.3,vboxnet0有172.0.0.1,那么默认路由表大概会说“发送eth0”。(对于更复杂的路由规则,这显然会变得更加复杂)。
相反,我可能希望仅在对专用网络开放的接口上运行服务 - 因此当请求来自不同的接口时,它根本不会被处理。
具有 IP 地址的设备存在于网络中。
路由器是一种主要目的是在网络之间传递流量的设备。
要使路由器在两个网络之间传递数据包,它必须存在于两个网络中。
路由器在每个网络内部都有一个“臂”——或者我们称之为接口。接口存在于网络中的方式是为其分配网络内的 IP 地址。
因此,将路由器配置时,每一个接口接收的IP地址,以确定哪些该路由器所属的网络内。
免责声明:上面的链接是我的博客。我的博客没有货币化。我从你阅读它没有任何好处。我提供一个链接只是为了您(和任何其他读者)的利益。
案例 1:路由器
理论上这是可能的。
然而,通常当 IP 地址“匹配”某个网络掩码(例如 10.0.0.0/28)时,IP 数据包会“直接”发送到目的地;否则数据包将通过路由器发送。
这意味着:
- 一个路由器连接两个网络;两个网络中的每一个都有一个网络掩码
在两个网络之一中从一台计算机发送到另一台计算机的数据包不会通过路由器。
这意味着每台计算机的 IP 地址都与它们所连接网络的网络掩码相匹配。
发送到路由器的数据包(这包括由路由器路由的数据包!)不会通过第二个路由器从计算机发送到路由器。
这意味着路由器的 IP 地址必须与两个网络的网络掩码匹配。
从一个网络中的一台计算机发送到另一个网络中的计算机的 IP 数据包是通过路由器发送的。
这意味着一个网络中计算机的 IP 地址不能与另一个网络的网络掩码匹配。
选择一个 IP 地址和两个网络掩码几乎是不可能的,因为一个 IP 地址匹配两个网络掩码,而很多 IP 地址只匹配一个网络掩码。
案例2:不同的私有网络
我们可能会遇到这样的情况:一台计算机连接到两个无法相互交换数据的专用网络。
在这种情况下,一台计算机在两个网络中可能具有相同的 IP 地址。
在 IPv4 的情况下,大多数操作系统不支持这一点,因为操作系统使用两个网络的网络掩码来区分它们。网络需要有不同的网络掩码...
在 IPv6(使用“本地链接”地址)的情况下,一台计算机可以在两个不同的网络中拥有相同的(本地链接)IP 地址 - 因此两个网卡可以拥有相同的 IP 地址!