对于可解析的名称,SSH 客户端名称解析失败

Jen*_*y D 12 domain-name-system linux ssh

我们有一个 linux box(称为jumper),用于访问几个单独的 DMZ 中的服务器。每个 DMZ 都有自己的子域名(例如idmz.example.org, jdmz.example.org),每个子域都有自己的权威名称服务器。

我们正在用新的 Linux 机器替换旧的 Solaris 跳线。大多数事情都运行良好,但是我们在idmz.example.com使用 SSH连接到子域中的服务器时遇到了问题。Ping 工作正常;我们可以使用dig解析名称,但 SSH 显示“无法解析”。

名称解析在服务器端运行良好,当我们使用 IP 地址连接时,没有延迟或超时。但是客户端的SSH声称无法解析服务器。

Ping 和失败的 SSH 连接:

jenny@jumper$  ping server.idmz.example.com
PING server.idmz.example.com (192.168.1.3) 56(84) bytes of data.

jenny@jumper$  ssh -v server.idmz.example.com
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
ssh: Could not resolve hostname server.idmz.example.com: Name or service not known
Run Code Online (Sandbox Code Playgroud)

使用 IP 而不是主机名的成功 SSH 连接:

jenny@jumper$  ssh 192.168.1.3
jenny@192.168.1.3's password: 
Run Code Online (Sandbox Code Playgroud)

我可以从客户端看到的一个区别是,我无法从名称服务器idmz获得 .

Jen*_*y D 18

我们联系了 DNS 服务器的系统管理员,并要求他们验证idmz. 事实证明,他们的名称服务器声称可以处理 IPV6,但它没有为 IPV6 查询提供正确答案。

在 Solaris 服务器上,默认使用 IPV4。在新的 Linux 服务器上,SSH 首先尝试了 IPV6。在这种情况下,这意味着由于它无法使用 IPV6 解析服务器名称,因此认为它无法解析。对于其他 dmz 域,即使使用 IPV6,名称服务器也会给出正确的响应。

我们将 SSH 的配置更改为包括

AddressFamily inet
Run Code Online (Sandbox Code Playgroud)

问题就解决了。