如何找出 Traceroute 工作时名称解析失败的根本原因

如何找出 Traceroute 工作时名称解析失败的根本原因

我开发了一个示例应用程序并部署了它,设置 DNS 后,我尝试访问https://dev-intra.test.co.jp/test(主机名已在此处进行了编辑)。但我没有到达我的应用程序。

我试图找出造成这种情况的根本原因。

traceroute结果成功。

myPC@hikaru:~$ traceroute dev-intra.test.co.jp
traceroute to dev-intra.test.co.jp (192.168.88.11), 30 hops max, 60 byte packets
 1  hikaru.mshome.net (172.18.160.1)  0.531 ms  0.507 ms  0.499 ms
 2  * 10.10.10.1 (10.10.10.1)  28.829 ms *
 3  * * *
 4  * 192.168.2.197 (192.168.2.197)  28.617 ms  28.612 ms
 5  * dev-intra.test.co.jp (192.168.88.11)  39.146 ms *

所以我尝试dig dev-intra.test.co.jp但似乎该名称没有解析。

; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> dev-intra.test.co.jp +multiline
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 13425
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;dev-intra.test.co.jp. IN A

;; AUTHORITY SECTION:
inf9.co.jp.             222 IN SOA ik0103.i-kyushu.or.jp. root.i-kyushu.or.jp. (
                                2022122301 ; serial
                                3600       ; refresh (1 hour)
                                300        ; retry (5 minutes)
                                3600000    ; expire (5 weeks 6 days 16 hours)
                                300        ; minimum (5 minutes)
                                )

;; Query time: 39 msec
;; SERVER: 172.18.160.1#53(172.18.160.1) (UDP)
;; WHEN: Mon Jan 23 20:10:36 JST 2023
;; MSG SIZE  rcvd: 114

根据要求提供额外信息:

hikamiya@AT-MPC22151:~$ grep host /etc/nsswitch.conf
hosts:          files dns
hikamiya@AT-MPC22151:~$ cat /etc/resolv.conf
# [network]
# generateResolvConf = false
nameserver 172.18.160.1
hikamiya@AT-MPC22151:~$ resolvectl
sd_bus_open_system: No such file or directory
hikamiya@AT-MPC22151:~$ grep dev-intra /etc/hosts
192.168.88.11   dev-intra.test.co.jp
hikamiya@AT-MPC22151:~$

附加信息:

hikamiya@AT-MPC22151:~$ cat /var/run/nscd/socket
cat: /var/run/nscd/socket: No such file or directory
hikamiya@AT-MPC22151:~$ cat /run/nscd/socket
cat: /run/nscd/socket: No such file or directory
hikamiya@AT-MPC22151:~$ getent hosts dev-intra.test.co.jp
192.168.88.11   dev-intra.test.co.jp

造成它们之间差异的原因可能是什么?我错过了一个重要的点吗?

如果有人有任何意见,请告诉我好吗?谢谢

答案1

traceroute使用系统的名称服务将主机名解析为网络地址。

这是通过/etc/nsswitch.conf(名称服务开关)配置的,它为每个数据库(passwdgrouphosts...)指定要使用的名称服务模块以及按什么顺序。

对于你,对于hosts,它说先使用files模块,然后使用 DNS。libnss_files.so查询/etc.对于hosts数据库来说,就是/etc/hosts.

在这里,它会在那里找到您的主机名,因此甚至不需要查询 DNS 服务器。

dig本身只是一个 DNS 客户端。默认情况下,它会查询 中提到的第一个服务器/etc/resolv.conf(也是 的配置libnss_dns.so),并且 DNS 服务器没有该主机名的记录。

相关内容