Java 侦听DNS更改

Java 侦听DNS更改,java,dns,Java,Dns,有没有一种方法可以使用Java监听DNS更改?我正在寻找一个外部系统更新DNS的变化,因为他们发生 现有的解决方案是收听bind.log以了解更改。这与此问题类似: 要在Java中解析主机,请执行以下操作: InetAddress address = InetAddress.getByName("www.example.com"); 现在,您可以在一个单独的线程上运行它,并监听更改: public void launchThread() { Thread thread = new T

有没有一种方法可以使用Java监听DNS更改?我正在寻找一个外部系统更新DNS的变化,因为他们发生


现有的解决方案是收听bind.log以了解更改。

这与此问题类似:

要在Java中解析主机,请执行以下操作:

InetAddress address = InetAddress.getByName("www.example.com"); 
现在,您可以在一个单独的
线程上运行它,并监听更改:

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.");
    })
}

通过internet监视DNS服务器的更改需要授予您权限。一旦您拥有区域传输访问权,您就可以提取服务器持有的DNS数据的副本,但如果没有这样的许可,您的选择将相当有限。例如,您可以轮询服务器以获取已知名称的RR更改,但仅使用公共DNS访问不可能检测到新名称


另一种选择是使用被动DNS数据提供程序,但这些提供的覆盖范围可能有限,服务可能昂贵。至少有一个主要的被动DNS数据提供商通过利用DNS流量工作,因此他们可以看到DNS流量中出现的新名称和更改。

我正在寻找DNS上所有条目发生的更改,如新条目或更新。我对特定FQDN的IP更改不感兴趣。