今天我注意到一件奇怪的事情。当我查找一个不存在的域名时,我的 Linux 服务器会将 TLD(顶级域名)更改为 SLD(二级域名),并在其后附加一个区域 TLD。(在本例中为 .nl)。我的服务器位于荷兰数据中心,并且具有荷兰区域 IP,这可能是一个线索吗?
域名:nujklfdjaklfjkal。com变成 nujklfdjaklfjkal。荷兰
域名:jkfdjaklfjkalfjdkafjdkla。网变成 jkfdjaklfjkalfjdkafjdkla。荷兰网
[root@example ~]# ping nujklfdjaklfjkal.com
PING nujklfdjaklfjkal.com.nl (83.98.157.102) 56(84) bytes of data.
64 bytes from www.com.nl (83.98.157.102): icmp_seq=1 ttl=58 time=0.890 ms
64 bytes from www.com.nl (83.98.157.102): icmp_seq=2 ttl=58 time=0.741 ms
64 bytes from www.com.nl (83.98.157.102): icmp_seq=3 ttl=58 time=0.873 ms
^C
--- nujklfdjaklfjkal.com.nl ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2368ms
rtt min/avg/max/mdev = 0.741/0.834/0.890/0.074 ms
[root@example ~]# ping jkfdjaklfjkalfjdkafjdkla.net
PING jkfdjaklfjkalfjdkafjdkla.net.nl (83.98.157.102) 56(84) bytes of data.
64 bytes from www.com.nl (83.98.157.102): icmp_seq=1 ttl=58 time=0.973 ms
64 bytes from www.com.nl (83.98.157.102): icmp_seq=2 ttl=58 time=0.856 ms
64 bytes from www.com.nl (83.98.157.102): icmp_seq=3 ttl=58 time=0.883 ms
^C
我的 resolv.conf 没有显示任何奇怪的东西,只有 google DNS 服务器。
[root@example ~]# cat /etc/resolv.conf
nameserver 8.8.8.8
它将通过 DHCP 获取 IP,我使用 tcpdump 检查了提供的 IP。一切看起来都很好,尽管它确实提供了 2 个 DNS 服务器,但我已将 dhcp 客户端配置为忽略这些服务器。
分析 tcpdump 时,它清楚地显示 Google DNS 服务器回复了未知。紧接着,我的服务器对 com.nl 域进行了新的查找。所以看起来这是我的服务器所做的事情。
https://i.stack.imgur.com/gFZQq.png
有人有想法吗?
更新
目前,我已经通过在 /etc/resolv.conf 中添加搜索本地主机来解决这个问题。但是,问题仍然存在,为什么当我将搜索留空时没有默认执行此操作。
更新 - 8 月 24 日
我在调查中取得了一些进展。系统的主机名是SLD.TLD
(example.nl
)而不是server.example.nl
。似乎,当我的服务器找不到域并且没有在 中配置搜索时/etc/resolv.conf
,它会获取其自身主机名中第一个点后面的所有内容(例如.nl
)并将其附加到目标主机名的末尾(jkfldajfkdajfklda.com .nl
)。
这样jkfldajfkdajfklda.com
就成了jkfldajfkdajfklda.com.nl
为什么我的服务器主机名是示例.nl
。但是,当我将服务器主机名更改为 时server.example.nl
,jkfldajfkdajfklda.com
突然变成了jkfldajfkdajfklda.com.example.nl
。
问题仍然是这个逻辑在哪里配置。