我开发了一个示例应用程序并部署了它,设置 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
(名称服务开关)配置的,它为每个数据库(passwd
、group
、hosts
...)指定要使用的名称服务模块以及按什么顺序。
对于你,对于hosts
,它说先使用files
模块,然后使用 DNS。libnss_files.so
查询/etc
.对于hosts
数据库来说,就是/etc/hosts
.
在这里,它会在那里找到您的主机名,因此甚至不需要查询 DNS 服务器。
dig
本身只是一个 DNS 客户端。默认情况下,它会查询 中提到的第一个服务器/etc/resolv.conf
(也是 的配置libnss_dns.so
),并且 DNS 服务器没有该主机名的记录。