java - 在 Java 中使用 InetAddress 进行 nslookup 时如何绕过主机文件

标签 java dns reverse hosts inetaddress

是否可以强制 Java 在进行 DNS 查找(或反向 DNS 查找)时忽略主机文件?

我一直在研究如何执行nslookup在 Java 中使用了很长一段时间,我能找到的所有示例最终都使用了此命令的一些变体:

InetAddress.getByName("123.12.12.12").getCanonicalHostName();

我遇到的问题是返回的响应取自 Windows 主机文件,而不是真正的 nslookup 。如果我从主机文件中删除该条目,则会返回正确的结果,但是一旦我将该条目放回到主机文件中,程序就会从主机文件中返回值。

如果您想知道为什么我要尝试这样做,那是因为我需要在无法修改主机文件的服务器上运行此程序 - 这是一家大公司的生产服务器,对主机文件的修改将导致许多应用程序崩溃。问题是我需要获取从 nslookup 返回的实际主机名,而不是主机文件中的值。

最佳答案

我不知道如何通过 InetAddress 类更改此行为。

Java 文档 InetAddress

Host name-to-IP address resolution is accomplished through the use of a combination of local machine configuration information and network naming services such as the Domain Name System (DNS) and Network Information Service(NIS)

看起来 Java 依赖于解析器库。 Understanding host name resolution and DNS behavior in Java

也许您可以尝试配置名称服务交换机配置文件 nsswitch.conf 以便重新排序解析器策略?

关于java - 在 Java 中使用 InetAddress 进行 nslookup 时如何绕过主机文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41622458/

相关文章:

java - 如何访问 Controller 类中的 formData 值

dns - 您何时会选择 Route 53 别名而不是 CNAME?

ssl - DNS - 将 A 记录指向 SSL 证书的新 IP

iis-7 - 无法从主机名确定IP地址,域名不存在

java - 如何让 eclipse 识别预处理器语句?

java - 无法解析 XStream 类

java - 将 Long/ULong 转换为带填充零的无符号十六进制字符串

c - 仅反转 C 中句子的顺序

c - 在C编程中反转char数组

c - 如何使用C反转字符串?