听取DNS更改

时间:2015-04-27 19:12:33

标签: java dns

有没有办法使用Java监听DNS更改?我希望在发生DNS更改时更新外部系统。

现有解决方案是监听bind.log以进行更改。

2 个答案:

答案 0 :(得分: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.");
    })
}

答案 1 :(得分:0)

通过互联网监控DNS服务器的更改需要您获得DNS zone transfer access (AXFR/IXFR)。获得区域传输访问权限后,您可以提取服务器所拥有的DNS数据的副本,但如果没有此类权限,您的选项将受到限制。例如,您可以轮询服务器以查找已知名称的RR更改,但您无法仅使用公共DNS访问来检测新名称。

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