假设有两个网络:1)家庭网络和2)办公网络。
我有一个应用程序,它将在启动应用程序时获取已安装机器的系统 IP 和 MAC 地址。
由于(家庭/办公室)都是私有网络,当我启动应用程序时,它将获取以下私有 IP 范围之一内的 IP 地址。
10.0.0.0 through 10.255.255.255
172.16.0.0 through 172.31.255.255
192.168.0.0 through 192.168.255.255
我的问题是,在启动应用程序时有没有什么方法可以区分家庭网络和办公网络。
例如,如果我在办公网络内启动应用程序,我的 IP 将在以下范围内
172.16.0.0 through 172.31.255.255
如果我在家庭网络中启动该应用程序,我的 IP 就在该范围内。
192.168.0.0 through 192.168.255.255
如果始终都是这种配置,我们可以轻松识别家庭网络和办公室网络。
但是,用户有可能在家庭网络内启动时将其 IP 地址更改为其办公室范围。
如果是这样的话,如何识别用户的系统 IP 来自哪个网络?
任何帮助,将不胜感激...
答案1
最简单的方法是检查 DHCP 服务器的 MAC 地址(当您收到它的响应时)。
如果需要考虑静态 IP 地址,可以检查默认网关的 MAC 地址。
由于 MAC 地址应该(至少在理论上)全局唯一,因此两个位置的默认网关上具有相同 MAC 地址的可能性非常小。
答案2
取决于您可用的网络信息工具以及网络设置方式。
您工作的网络可能有一个域,这可以帮助您识别它。如果没有,您可以检查网络网关的 MAC 地址。例如,在我的 WiFi 上,我现在有这个:
C:\>ipconfig
[ .. extra info deleted for brevity .. ]
Default Gateway . . . . . . . . . : 192.168.2.1
(您也可以使用 DHCP 服务器的 IP(如果有)代替网关,但它们通常是同一个。)由此,我可以使用以下命令找到网关的 MAC:
c:\> arp -a 192.168.2.1
[ .. extra info deleted for brevity .. ]
Internet Address Physical Address Type
192.168.2.1 08-86-3b-06-ef-bd dynamic
您的家庭和工作网关不太可能具有相同的 MAC(物理)地址,因此您可以使用它来识别您连接的每个网络。
当然,我猜您希望能够自动提取这些信息,而不必每次连接时都手动输入命令。但这又取决于您可用的工具(操作系统版本等)。您也可以在网上搜索其他人编写的命令行工具,这些工具可以在一个步骤中完成上述两项操作,并只输出网关的 MAC 地址(如果目前还没有这样的工具,而且其他人也感兴趣,我甚至可以自己编写一个。)