我的第一篇文章處理DNS後仍未解決:JVM and OS DNS Caching ,我正面臨一個新問題。JVM中的乾淨的DNS服務器
首先這裏是我的用例:我想檢查我的私人DNS是否還活着。如果不是,我想使用一般的DNS(例如8.8.8.8)。
我的私人DNS(與192.168.1.188 Ubuntu的一個BIND9)作爲一個特定的記錄:test.testdnd.fr - > 192.168.1.100
所以我想我能做到這一點:
if(InetAddress.getByAddress(my_dns_ip_in_byte).isReachable()){
System.setProperty("sun.net.spi.nameservice.provider.1", "dns,sun");
System.setProperty("sun.net.spi.nameservice.nameservers", 192.168.1.188);
}else{
System.setProperty("sun.net.spi.nameservice.provider.1", "dns,sun");
System.setProperty("sun.net.spi.nameservice.nameservers", "8.8.8.8");
}
InetAddress.getHostByAddress(test.testdnd.fr) -> unknow host exception
但是如果我只做:
System.setProperty("sun.net.spi.nameservice.provider.1", "dns,sun");
System.setProperty("sun.net.spi.nameservice.nameservers", 192.168.1.188);
InetAddress.getHostByAddress(test.testdnd.fr) -> 192.168.1.100
所以只要我叫設定system.property前一個InetAddress方法,似乎system.property沒有效果。也許是因爲JVM在調用InetAddress方法時加載系統DNS值,即使它不使用DNS解析。
這是JVM中的標準行爲還是我失去了一些東西?
任何幫助是值得歡迎的,
[設置DNS屬性沒有任何作用]的可能的重複(http://stackoverflow.com/questions/11957221/setting-dns-property-not-having-any-effect) – Exupery
它不是真的重複,我想要使用私人DNS服務器。 – zeraDev
你確定'InetAddress.getByAddress(my_dns_ip_in_byte).isReachable()'返回true嗎? (如果你還沒有檢查過,你應該添加一些調試輸出到if塊來看) – Exupery