我知道这看起来像所有其他“可以通过 ip ping 但不能通过 dns”的问题,但那些实际上对我没有任何帮助。
此外,由于该服务器最终将处理大量连接到它的计算机,因此在所有机器上都拥有主机文件是不可行的。
我已经设置了 ldap+dns 服务器,并且我希望我网络上的计算机在 ldap 服务器上进行身份验证。
它的 ldap 部分工作正常,我可以使用 ldap 凭据正常 ssh 进入 ldap 服务器。
问题出在客户端机器上,客户端设置为使用 dns 服务器(在本例中为 192.168.0.243),如果我进入终端并执行 nslookup,它会找到 ldap 服务器。
fernando@desktest:~$ nslookup ldap.mynet.local
Server: 192.168.0.243
Address: 192.168.0.243#53
Name: ldap.mynet.local
Address: 192.168.0.243
但当我 ping 它时,它找不到 IP 地址。它只是挂在那里,直到我按 CTRL-C 才恢复。
当然,通过 ip 地址 ping 就可以了。
以下是 DNS 服务器的区域文件:
fernando@ldap:~$ cat /etc/bind/named.conf.local
zone "mynet.local" {
type master;
file "/etc/bind/db.mynet.local";
};
zone "0.168.192.in-addr.arpa" {
type master;
notify no;
file "/etc/bind/db.192";
};
fernando@ldap:~$ cat /etc/bind/db.mynet.local
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.mynet.local. root.mynet.local. (
7 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.mynet.local.
ns IN A 192.168.0.243
server IN A 192.168.0.250
desktest IN A 192.168.0.249
remote IN A 192.168.0.248
winserver IN A 192.168.0.247
web IN A 192.168.0.246
tempfs IN A 192.168.0.245
ldap IN A 192.168.0.243
antenarfb IN A 192.168.0.253
antenapan IN A 10.82.223.7
adslgvt IN A 192.168.0.1
fernando@ldap:~$ cat /etc/bind/db.192
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA mynet.local. root.mynet.local. (
6 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
1 IN PTR ns.mynet.local.
2 IN PTR server.mynet.local.
3 IN PTR desktest.mynet.local.
4 IN PTR remote.mynet.local.
5 IN PTR winserver.mynet.local.
6 IN PTR web.mynet.local.
7 IN PTR tempfs.mynet.local.
8 IN PTR ldap.mynet.local.
9 IN PTR antenarfb.mynet.local.
10 IN PTR antenapan.mynet.local.
11 IN PTR adslgvt.mynet.local.
fernando@ldap:~$
我真的不知道该怎么办,如果能提供任何帮助我将非常感激。
- - 编辑 - -
在有人询问之前,是的,服务器正在运行:)
root@ldap:/etc/bind# rndc status
version: 9.7.0-P1
CPUs found: 1
worker threads: 1
number of zones: 16
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
---- 结束编辑 ----
答案1
我相信这是由 mdns - 多播 dns 引起的,用于 .local 域的自动配置。
如果你签入/etc/nsswitch.conf
,你可能会看到:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
mdns4 负责执行多播 DNS。尝试将其更改为:
hosts: files dns
看看是否有任何不同。如果有效,你可以使用以下命令永久删除 mdns:
尝试apt-get remove libnss-mdns
这也会nsswitch.conf
为您带来改变。
或者,不要使用 .local - 而使用 .lan 或其他名称。
答案2
我发现另一个干扰 DNS 的方法是安装 winbind。它似乎在inwins
之前放置了一个条目,这会导致 DNS 失败,但可以通过移动到“NOTFOUND”部分之后来修复,最好在 dns 之后,以便首先进行 dns 查找,请参见:[NOTFOUND=return]
/etc/nsswitch.conf
wins
http://ubuntuforums.org/showthread.php?t=1496488
(但不确定为什么默认会发生这种情况;欢迎评论!)
答案3
只是为了完成事情:
nslookup 仅向给定的 DNS 服务器询问分配的 A 记录,它不能保证该记录背后的设备实际上具有该 IP。
即使设备具有正确的 IP(例如:设备的固定 IP 与 DNS 提供的 IP 匹配) - 也不能保证设备配置为响应 ping。这是一个常见的挫败点。(我说的就是你,Windows 防火墙)
当您跨子网时,路由器/网关/防火墙也可能会限制 ICMP 流量(这就是 ping)。
因此,您始终需要检查从发送方到接收方的完整服务链,反之亦然。在第三种情况下,可能涉及 a) 默认网关或 b)(默认)路由等设置。因此,请将它们添加到您的检查清单中。
抱歉挖出这个旧帖子,但从标题来看,它似乎有一些信息,有人可以从中获益。
你好。
答案4
就我而言 resolve [!UNAVAIL=return]
,删除后问题就解决了
cat /etc/nsswitch.conf
...
#hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns myhostname
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
...