ping
告诉我它无法解析URL中的某些主机名(“ ping:未知主机domain.company.local”),但是当我在命令行中使用host
或nslookup
在同一台计算机上时,解析度很好(即快速可靠) )。
是什么原因造成的?
更多测试:Firefox,wget
并且ping
有相同的问题。对IP地址执行Ping操作。
操作系统:Linux(Ubuntu 13.04)
编辑我的/etc/resolv.conf
读物:
nameserver 127.0.1.1
search domain.company.local
netstat
报告:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN -
因此该端口上正在运行某些内容(nslookup
还报告该端口127.0.1.1
用作DNS服务器)。
没有/etc/*inetd.conf
,所以我不确定哪个应用程序服务于此端口。
似乎dnsmasq
使用了:
/usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces
--pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1
--conf-file=/var/run/NetworkManager/dnsmasq.conf --cache-size=0 --proxy-dnssec
--enable-dbus=org.freedesktop.NetworkManager.dnsmasq
--conf-dir=/etc/NetworkManager/dnsmasq.d
所有配置文件和文件夹均为空。由于nslookup
说它使用127.0.1.1#53
我的猜测是,dnsmasq
即使没有配置也可以工作。但是如何知道要查询哪个父DNS?
EDIT2dnsmasq
由harrymc建议禁用并没有帮助。所以我跑strace ping
了给我这个奇怪的输出(只是有趣的部分):
open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 4
read(4, "127.0.0.1\tlocalhost\n#127.0.1.1\ta"..., 4096) = 613
...
open("/lib/libnss_mdns4_minimal.so.2", O_RDONLY|O_CLOEXEC) = 4
read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\f\0\0\0\0\0\0"..., 832) = 832
...
mmap(NULL, 2105560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7f7829b00000
...
socket(PF_FILE, SOCK_STREAM, 0) = 4
fcntl(4, F_GETFD) = 0
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
connect(4, {sa_family=AF_FILE, path="/var/run/avahi-daemon/socket"}, 110) = 0
fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
fstat(4, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f782a4f8000
lseek(4, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(4, "RESOLVE-HOSTNAME-IPV4 domain.com"..., 44) = 44
read(4, "-15 Timeout reached\n", 4096) = 20
因此ping
看起来/etc/hosts
有意义。然后加载和mmap()
s /lib/libnss_mdns4_minimal.so.2
也有意义。
但随后它与avahi对话!?
这导致我转到此论坛帖子:ping不发出dns请求。
我的/etc/nsswitch.conf
也包含此行:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
如果我ping
是工作地址,则可以看到该进程也正在加载,/lib/libnss_mdns4_minimal.so.2
但是它通过端口53进行了DNS查询。
因此,我现在的猜测是/lib/libnss_mdns4_minimal.so.2
某种程度上注意到IP地址以.local
而不是以结尾,.com
然后[NOTFOUND=return]
被触发。
我该如何解决?
wget
。
nslookup
或host
可以解析该名称,而系统上的其他任何内容都无法解析。
/etc/resolv.conf
?