2015-04-27 191 views
0

有沒有辦法使用Java來偵聽DNS更改?我期待在發生DNS更改時更新外部系統。偵聽DNS更改

現有解決方案是偵聽bind.log以進行更改。

回答

0

通過互聯網監控DNS服務器的更改需要您被授予DNS zone transfer access (AXFR/IXFR)。一旦你有區域傳輸訪問權限,你可以提取由服務器持有的DNS數據副本,但沒有這種權限,你的選擇是相當有限的。例如,您可以輪詢服務器以獲取已知名稱的RR更改,但不能僅使用公共DNS訪問來檢測新名稱。

另一種替代方法是使用被動DNS數據提供者,但是這些提供的覆蓋範圍可能有限且服務可能很昂貴。至少有一個被動DNS數據的主要提供商通過點擊DNS流量來工作,以便他們在DNS流量中看到新名稱和更改。

0

這類似於這樣的問題:Resolving ip-address of a hostname

在Java中解析主機:

InetAddress address = InetAddress.getByName("www.example.com"); 

現在你可以在單獨的Thread運行此並聽取了變化:

public void launchThread() 
{ 
    Thread thread = new Thread(new Runnable() 
    { 
     InetAddress start = InetAddress.getByName("www.example.com"); 
     while(start.equals(InetAddress.getByName("www.example.com"))) 
     { 
      try 
      { 
       Thread.sleep(1000); 
      }catch(Exception e){e.printStackTrace();} 
     } 

     System.out.println("Domain resolution has changed."); 
    }) 
} 
+0

我正在尋找所有條目(如新條目或更新)在DNS上發生的更改。我對某個特定FQDN的IP更改不感興趣。 – phoenix2010