我试图使用Node.js DNS解析查找属于我的域的IP地址(让我们称之为host.mydomain.com)。如果host.mydomain.com的查找是从host.mydomain.com实际指向的服务器完成的,它将返回服务器的本地NIC地址(192.168.0.10),而不是服务器的外部IP地址。
使用相同的代码从外部机器对host.mydomain.com进行主机查找,将返回预期的外部IP地址。更重要的是,我在另一个环境中有一个不同的服务器,称为host.otherdomain.com,它在使用相同的代码进行查找时会正确地返回自己的外部IP地址。
我的主机文件中没有任何东西可以覆盖这一点。这两个域都来自同一个DNS提供程序,而且都是通配符域。
我的代码:
var dns = require('dns');
dns.setServers([ "8.8.8.8", "8.8.4.4" ]);
domain="host.mydomain.com";
dns.resolve(domain, function (error, addresses) {
console.log("Error: ", error); // null
console.log("DNS servers: ", dns.getServers()); // [ '8.8.8.8', '8.8.4.4' ]
console.log(domain + " resolves to: ", addresses); // [ '192.168.0.10' ]
});我目前正在所有服务器上使用Node.js 6。
发布于 2021-09-27 02:57:35
在我的例子中,问题最终发生在机器所在的IBM数据中心。它运行在他们的工作人员已经设置的一个经过修改的vCenter设置上,并且正在用DNS做一些奇怪的事情。我知道vCenter有Linux集成,我不确定这是否是问题的一部分。
因此,简单地说,我认为解决方案是确保您的环境(在我的例子中是数据中心)不会给您带来麻烦。
https://stackoverflow.com/questions/50790107
复制相似问题