nslookup 在 .local 域中找到主机名的 ip,但 ping 没有

Fer*_*ndo 57 dns ping mdns

我知道这看起来像所有其他“可以通过 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
Run Code Online (Sandbox Code Playgroud)

但是当我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:~$ 
Run Code Online (Sandbox Code Playgroud)

我真的不知道该怎么做,任何帮助将不胜感激。

- - 编辑 - -

在有人问之前,是的,服务器正在运行:)

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
Run Code Online (Sandbox Code Playgroud)

----结束编辑----

Cae*_*ium 109

我相信这是由 mdns - 多播 dns 引起的,用于 .local 域的自动配置。

如果您签入/etc/nsswitch.conf,您可能会看到:

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Run Code Online (Sandbox Code Playgroud)

mdns4 正在做多播 dns。尝试将其更改为:

hosts: files dns
Run Code Online (Sandbox Code Playgroud)

看看它是否有任何区别。如果它可以工作,您可以使用以下命令永久删除 mdns:

尝试 apt-get remove libnss-mdns

这也会nsswitch.conf为您带来改变。

或者,不要使用 .local - 使用 .lan 或其他东西。

  • 哥们你好厉害!!!!!! (4认同)
  • 这是什么逻辑?为什么这是默认配置? (2认同)
  • 很好的答案,但如果您不想失去 mdns 功能(即本地打印机自动发现),只需删除“[NOTFOUND=return]”即可。在我的安装(Ubuntu 18.04.3 LTS)中,我有`hosts:files mdns4_minimal [NOTFOUND = return]解析[!UNAVAIL = return] dns myhostname`并且我在`hosts:files mdns4_minimal解析[!UNAVAIL = return] dns myhostname中进行了更改` (2认同)