今天遇到了一件有趣的事,我仍然不明白为什么会发生这种情况。我试图通过将网络掩码从 /24 更改为 /20 来增加 dhcp 服务器可用的 ip 地址数量。
这是第一种情况,我将路由器的子网掩码更改为 /20,以匹配我的 dhcp 服务器。但是,我没有更改任何具有静态 ip 的工作站的子网掩码,它们仍为 /24。我将一些工作站和无线设备连接到网络,它们都获得了正确的范围(/20),并且能够访问网络。
我对第一个场景的疑问是:难道所有设备不是都应该具有相同的子网掩码才能正常工作吗?为什么具有静态 IP 地址和网络掩码为 /24 的工作站仍然可以工作?
然后我尝试了第二种情况。这次路由器的子网掩码仍为 /24,而我只将 DHCP 服务器的子网掩码修改为 /20。结果如何?具有子网掩码为 /24 的静态 IP 的设备可以正常工作。具有子网掩码为 /20 的动态 IP 的设备无法访问网络。我的问题是:如果前一种方案适用于两个子网,为什么在这种情况下却不适用?
我不确定这是否值得一提,但 DHCP 服务器正在运行 ubuntu dhcp 服务器。
答案1
此答案假设您的路由器的 IP 地址为 192.169.1.100(或 192.168.1.0-255 之间的任何 IP 地址)。
使用 /24 子网掩码,您的 IP 地址范围是 192.168.1.0-192.168.1.255(包括网络和广播地址)。
使用 /20 子网掩码,您的 IP 地址范围是 192.168.0.0-192.168.15.255(包括网络和广播地址)。
从具有任一子网掩码的主机的角度来看,192.168.1.100 是有效的本地地址。它存在于 /20 和 /24 子网中。主机不知道任何其他主机正在使用什么子网掩码,它只知道自己的子网掩码,并使用该子网掩码来确定哪些 IP 地址是本地的,哪些不是。任何具有 /24 范围内 IP 地址的主机对于belong
任何主机来说都似乎是本地子网,更重要的是,在这种情况下,对于路由器来说,但/24 子网中的主机只能与 IP 地址也位于 192.168.1.0-192.168.1.255 范围内的其他主机通信。这就是为什么第一种情况可行而第二种情况不可行。在第一种情况下,所有主机都可以与路由器通信,因为路由器使用的是 /20 子网掩码但从具有任一子网掩码的主机的角度来看,它的 IP 地址位于两个子网内。在第二种情况下,路由器只能与位于 /24 子网内的 IP 地址通信,它无法与 IP 地址高于 192.168.1.255 的任何主机通信,因为这些 IP 地址位于 192.168.1.0/24 之外,这是第二种情况下的路由器子网。
答案2
子网掩码主要用于确定是否可以在本地网络上访问另一个 IP 地址,或者是否需要通过路由器。使用旧 /24 子网掩码的工作站将能够访问旧 /24 网络内的所有其他内容,因为错误的掩码仍会为这些地址提供正确答案。它们将无法与新 /20 网络中不在旧 /24 网络中的 IP 地址进行通信,这就是我们说旧掩码在新网络中不起作用的原因。
在第二种情况下,由于路由器的掩码保持在 /24,它将无法访问旧网络之外的 IP 地址的设备,因此这些设备将无法访问路由器。