Putty 无法通过 SSH 连接到主机名,但 IP 连接正常

Putty 无法通过 SSH 连接到主机名,但 IP 连接正常

我的家庭网络上有一个 gentoo 盒子,我正尝试通过 W7 客户端通过 SSH 进入,但尽管我可以通过 IP 地址进行操作,但当我尝试主机名时却找不到它。还会出现 DNS 错误

socket.gaierror: [Errno -2] Name or service not known

当我尝试在 gentoo 上启动 http 服务器时。我假设这是一个 dns 错误,这些问题是相关的。

几个月前我上次登录时它还在运行,所以我不确定在此期间发生了什么变化?

编辑:

在提供主机名时 Ping 也失败了,但是再次 ping IP 却正常。

在我的路由器固件上,我为 ssh 和 http 设置了到 Linux 主机名的端口转发,虽然运行正常。那么为什么路由器可以解析主机名,但不能解析我的 Windows 机器/Linux http 服务器本身呢?

编辑2:

我在 etc/hosts 中设置了静态 ip/主机名,http 服务器现在启动了,这表明 gentoo 无法解析自己的名称。不知道这是怎么回事?

答案1

您尝试连接的客户端 (W7) 上的名称解析存在问题。

所有连接都指向目标 IP 地址。如果您提供名称,计算机首先会将该名称解析为 IP 地址。这就是您今天失败的地方。

如果您的 gentoo 盒/家庭路由器的 IP 地址无法从文件hosts或DNS 中的记录A(或AAAAIPv6)中查找(可能是通过 CNAME),您的 Windows 机器将无法理解 gentoo 盒具有什么 IP。

为了能够很好地回答您的问题,我们需要您提供更多信息,描述一下网络设置,这样我们就不会做出错误的猜测。例如:

  • Windows 和 Gentoo 盒子是否都在“内部”网络上?
  • 它们都配置为 DHCP 客户端吗?
  • 路由器是内网唯一的DHCP服务器吗?

之前 DynDNS 服务运行时您是否使用过它,或者 W7 安装是否发生了某种变化?(不同的 PC、重新安装、病毒等?)也许之前在 hosts 文件中有一个条目,当时它正在运行,但现在却不见了。

为什么路由器可以找出 Linux 机器的内部/私有 IP 地址,而 Windows 机器却不能,是因为它们的名称信息来源不同。也许路由器本身就有这些信息。它也是 DHCP 服务器吗?也许这就是路由器知道的原因。

编辑(2012-08-06): 根据新的输入,
在 gentoo 框中,确保您有一个/etc/hosts如下所示的条目:

192.168.0.3   hostname.domain.tld  hostname

(将 192.168.0.3 替换为 gentoo 服务器的真实(内部)IP 地址,将 hostname.domain.tld 替换为您要使用的完全限定域名,并将该行中的最后一个单词替换为不带域的主机名(即,第一个 之前的单词.)。

在文件中放入相同的行%WINDIR%\System32\drivers\etc\hosts,但是记住然后,你的 gentoo 盒子的 Windows 名称查找将从该文件中获取,而不是从 DNS 获取。

这应该使得名称查找在 gentoo 服务器本身和 windows 客户端上(本地)工作,而无需咨询 DNS。

/etc/apache2/vhosts.d/00_default_vhost.conf(如果您的 Web 服务器配置在此处),使ServerName条目与文件中的 FQDN(hostname.domain.tld)匹配/etc/hosts
这应该允许 Apache 启动而不发出警告。

答案2

您可能没有使用正确的名称。我可以想象您正在使用类似 URL ( http://host_name.com/) 的东西。请尝试仅使用名称host_name.com。我们需要有关您使用的名称的更多信息。

答案3

后来我忘记了从现在到我最后一次访问 Linux 机器期间升级了路由器。新路由器强制客户端使用远程 ISP DNS 服务器,因此我的家庭网络计算机无法相互查找。

由于 IP 是静态分配的,所以我最终手动编辑了单个主机文件。

相关内容