2011-04-18 37 views
1

我运行这个网站,并且我批准访问该网站的一部分。我只想批准静态ips。如果我有一堆IP,我如何知道它们是否是静态的?我可以完成其余的部分,但可能在套接字库中有一些功能,或者让我编写脚本来查找用户是否使用静态或动态IP。静态或动态ips

谢谢!

Php/Js也可以工作。

+0

然后检查他们的IP是否在你的DHCP地址池中。真的没有更多的信息,我不能提供任何真正的建议。 – Vetsin 2011-04-18 20:52:45

+0

我不认为这是可能的;加上基于IP的认证服从[IP地址欺骗](http://en.wikipedia.org/wiki/IP_address_spoofing)。 – Donut 2011-04-18 20:59:04

回答

3

无法分辨IP地址是静态还是动态分配。根据IP所解析的主机名,您可以猜测它们是否是静态的,但没有任何明确的方法可以实现这一点。

您可以使用套接字模块将IP解析为主机名,并根据某种“最佳猜测”算法将它们标记为“静态”或“动态”,但这只是:最佳猜测。

以下是使用随机Verizon FiOS IP地址的示例。这假定任何以“池”开头的IP都是动态分配的。

>>> hostname = socket.gethostbyaddr('71.243.222.111')[0] 
>>> if 'pool' in hostname: 
...  print hostname, 'is dynamic' 
... 
pool-71-243-222-111.lsanca.fios.verizon.net is dynamic 

您将有一个非常艰难的时间来确定所有的各种命名约定,这绝不是一个完整的解决方案。

您可能想问问自己,首先尝试解决什么样的问题,以及通过IP地址过滤访问是否提供了您需要的验证类型。

0

我会用一个务实的解决方案:新帐户有几天的试用阶段。之后,他们只能从用于注册的相同IP登录。如果他们仍然拥有相同的IP,那么它很可能是静态的。

+0

这不是一个真正可靠的解决方案。例如,我的ISP不给我静态IP,每当我的调制解调器连接时,我都会得到一个不同的IP。但是,如果我没有断开连接,我的IP可以保持几周,因为我的ISP不会每24小时自动断开连接。 – comfreak 2017-07-19 12:09:59

0

那么,你没有问题,是吗?如果他们要求从IP X访问,则可以通过IP X访问他们。如果事实证明它是动态的并且他们切换了,则他们不再有权访问。实际上,没有来自动态IP的访问:)

尽管如此,IP分配类型的权限是用户正在访问的主机。因此,您需要询问用户在他/她的配置中所说的内容。