【问题标题】:Finding DNS name with given ip address使用给定的 IP 地址查找 DNS 名称
【发布时间】:2012-06-07 20:38:40
【问题描述】:

我的系统中安装了一台服务器。它采用其中一个 IP 地址并充当自己的系统。

在我的 java 程序中,我使用以下代码连接到该服务器。

ServiceInstance si = new ServiceInstance(new URL("https://10.100.13.36/sdk"), "user", "password", true);

true 表示忽略证书为真。

当我尝试使用 false 参数执行时,它会显示以下错误。

CertificateException: No subject alternative names matching IP address 10.100.13.36 found

在服务器证书模式的情况下,我必须使用 dns 名称而不是 ip 地址。

所以我在服务器配置设置中发现服务器将 DNS 名称作为 localhost.localdomain

所以我尝试将网址设为https://localhost.localdomain/sdk

已经显示localhost.locadomain还没有找到的错误。

我猜它的 DNS 名称解析有一些问题,使用 localhost 作为我的系统,localhost.localdomain 作为我的服务器 dns 名称。

我们可以通过java程序找到带有ip地址的dns名称吗?以便它自己找到DNS名称并将值传递到url中。

任何人都可以对此提出一些建议。

谢谢你..

【问题讨论】:

  • 这台服务器是在您的桌面上运行的虚拟机吗?
  • 另外,您在桌面和虚拟机上使用的是什么操作系统?
  • @JasonNichols 是的,我正在使用安装在 vmware 工作站上的 windows 7 操作系统和 vmware esxi 服务器。

标签: java url dns certificate


【解决方案1】:

DNS 名称由您的本地 DNS 服务器分配。 localhost.localdomain 名称通常在主机文件中分配,因此各种本地操作功能(例如,系统日志记录,从定期任务向 root 用户发送电子邮件)。我猜您的服务器未在本地 DNS 服务器中注册。很少有本地运行的虚拟机实际上在 DNS 中进行有效注册 - 对于在 Windows 环境中运行的 Linux 系统尤其如此。

如果它在 DNS 中注册并且您的服务器和客户端都使用相同的 DNS 层次结构,那么您需要做的就是使用机器的 IP 地址创建一个 java.net.InetAddress 并调用 getCanonicalHostName() 来检索它DNS 名称。如果它没有在本地 DNS 服务器中注册名称,那么您将简单地获取 IP 地址。

【讨论】:

  • 我最初将 www.cabc.com 作为匹配项放入系统的主机文件中。现在它显示输出为 www.cabc.com .........但我需要什么就是获取vmware服务器为这个ip地址分配的DNS名称(10.100.13.36)
  • 我想我的 vmware 服务器只从私有网络中获取 ip 地址并为自己分配自己的 dns 名称。它不为任何其他系统所知。甚至我的计算机也独立于 vmware 服务器。所以这就是为什么给定 dns 名称 java 程序无法找到服务器的原因。但是给定一个 ip 名称(因为它是从 ip 地址池中获取的),我们可以 ping ip 地址 10.100.13.36 。这个程序运行成功。我在想什么,这个任务无法完成。
  • 这个提到的任务没有完成。但是我的主要任务是完成了。
猜你喜欢
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
相关资源
最近更新 更多