ping 无法解析主机 - 始终附加一个域

ping 无法解析主机 - 始终附加一个域

这个问题看起来相对简单,但我找不到好的解决方案。

配置

我在 ADSL 路由器上运行本地 DHCP 和 DNS 服务器。它为本地主机分配 IP 地址,并为分配的 IP 保留 DNS 记录。

该调制解调器还通过 DynDNS 服务进行自我注册。

假设我无法控制该调制解调器,因为它为多个组提供服务。

问题

当我通过它查看主机时,nslookup它工作正常:

$ nslookup vanja
Server:         192.168.1.1
Address:        192.168.1.1#53

Name:   vanja
Address: 192.168.1.12

ping失败了:

$ ping vanja
ping: unknown host vanja

发生这种情况是因为ping将本地域附加到主机,但 DNS 服务器不知道这个域(而且我没有办法设置它),请查看 strace 输出:

$ strace ping vanja
open("/lib/i686/cmov/libnss_dns.so.2", O_RDONLY) = 4
stat64("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=23, ...}) = 0
socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.1")}, 28) = 0
send(4, "\377N\1\0\0\1\0\0\0\0\0\0\5vanja\10dynalias\3com\0"..., 36, MSG_NOSIGNAL) = 36
recvfrom(4, "\377N\201\203\0\1\0\0\0\1\0\0\5vanja\10dynalias\3com\0"..., 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.1")}, [16]) = 97

还要注意,nslookup vanja.dynalias.com由于同样的原因也会失败:DNS 仅将动态分配的 IP 映射到短 PC 名称(从 MS Windows 工作站传递)。

当我将主机名设置为不带域名的名称(# hostname centurion)时,ping 神奇地开始工作,但我不能将主机名保留为非 FQDN 形式,否则可能会混淆 apache 和 postfix 或破坏其他东西。

问题:如何才能使pingFQDN 形式的主机名协同工作?

注意:我尝试使用searchdomain选项都/etc/resolv.conf没有成功。我的目标是强制 NSS 库不是将域名附加到传递的参数,或者更好的是,进行两次尝试:不附加域名和附加域名。

相对设置

$ hostname
centurion.dynalias.com
$ cat /etc/resolv.conf
nameserver 192.168.1.1
$ grep hosts /etc/nsswitch.conf
hosts:          files dns

答案1

你可以尝试

search . domainname.ext

看看是否只添加“。”有效。另外

$ ping vanja.

会给你一些线索。

答案2

您需要设置解析器搜索路径。

在 /etc/resolv.conf 中,添加以下行:

search domainname.ext

(当然,请将domainname.net上面的内容替换为您的域名)。

这将确保ping hostname也会查找hostname.domainname.ext。请注意,如果需要,您可以将多个域名添加到搜索路径。

相关内容