2011-04-18 54 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分配類型的權限是用戶正在訪問的主機。因此,您需要詢問用戶在他/她的配置中所說的內容。