2015-04-27 128 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