我正在为我的学校开发一个网络系统(它是用 PHP 编写的,但这并不重要)。
系统需要根据用户是否在学校网络上有不同的行为(具体来说,如果他们不在学校网络上,则需要登录)。
因此,我需要一种可靠的、理想情况下万无一失(可能要求太多……)的方法来检查客户端是否在本地网络上。
这样做的通常方法似乎是将用户的子网与服务器的子网进行比较。但是,我们学校有多个子网(包括多个校区,每个校区都有多个子网以及VPN),其中只有一个是服务器的子网。所以那个方法行不通
我阅读了RFC1918,它为私有网络保留了以下 IP 空间:
10.*.*.*
172.16.*.* - 172.31.*.*
192.168.*.*
Run Code Online (Sandbox Code Playgroud)
那么我可以检查客户端 IP 是否在这些私有子网中的任何一个内吗?网络外的用户有没有可能拥有这样的IP?或者连接到学校网络的用户没有这些范围之一的 IP?