为什么我的 linux 服务器解析所有域(甚至不存在的域)

Nic*_*ell 5 domain-name-system linux centos

目前,每个域名都解析到我的主服务器primary.example.com. 例如,如果ping randomdomain123.blah我得到:

PING primary.example.com` (1.2.3.4) 56(84) bytes of data.
Run Code Online (Sandbox Code Playgroud)

但我期待“找不到主机”错误。

最初我以为是因为search example.com我的/etc/resolv.conf. 但是,删除该 ping 后randomdomain123.blah仍然解析为我的主域。重新启动服务器也没有效果。

我在/etc/hosts.

hostname从集群中的另一台服务器运行会提供secondary.example.com.

我使用 Route 53 作为 DNS 提供商,相关的 DNS 似乎是:

example.com.            A       1.2.3.4
primary.example.com.    A       1.2.3.4
*.primary.example.com.  CNAME   primary.example.com
*.example.com.          CNAME   www.example.com
www.example.com.        CNAME   primary.example.com
Run Code Online (Sandbox Code Playgroud)

那么这是本地网络配置错误还是某些 DNS 问题?(或两者?)

更新:我想要/需要通配符的原因是我运行这个域的 webapp,所以 customer1.example.com 等需要解析到这台机器,它需要是自动的 - 所以我想避免必须更改 DNS在每个新客户注册后。

更新 2:我/etc/resolv.conf目前如下(因为我注释掉了搜索行):

### Hetzner Online AG installimage
# nameserver config
nameserver 213.133.99.99
nameserver 213.133.100.100
nameserver 213.133.98.98
nameserver 2a01:4f8:0:a102::add:9999
nameserver 2a01:4f8:0:a0a1::add:1010
nameserver 2a01:4f8:0:a111::add:9898
# search example.com
Run Code Online (Sandbox Code Playgroud)

更新 3:运行dig randomdomain123.blah +trace给出:

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> randomdomain123.blah +trace
;; global options: +cmd
;; Received 12 bytes from 213.133.99.99#53(213.133.99.99) in 0 ms
Run Code Online (Sandbox Code Playgroud)

更新 4:我可以确认ping randomdomain123.blah.最后一个点给出:

ping: unknown host randomdomain123.blah.
Run Code Online (Sandbox Code Playgroud)

那么这是否意味着从这台机器上的 Java 应用程序中,我需要附加点并使用像http://randomdomain123.blah./somepage.html生成 HostNotFoundException这样的 URL ?

kas*_*erd 5

您的问题是与您的记录相结合的search字段。您提到您已经尝试删除该设置。但事实证明,从 中省略它并不意味着搜索功能将被关闭。/etc/resolv.conf*/etc/resolv.conf

如果没有从/etc/resolv.confsearch设置将默认为您的主机名的域。

我不知道是否有官方方法可以完全禁用该search功能,但这似乎有效:

search .
Run Code Online (Sandbox Code Playgroud)

或者,您可以将您search的域指向一个没有*记录的域,为了您的方便,该域可能包含一些其他记录。例如:

search search.example.com
Run Code Online (Sandbox Code Playgroud)

然后,您可以创建诸如server1.search.example.com但不是 的记录*.search.example.com