有没有办法使用Java监听DNS更改?我希望在发生DNS更改时更新外部系统。
现有解决方案是监听bind.log以进行更改。
答案 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流量中出现的新名称和更改。