偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Linux排障日記:為什么 /etc/hosts 寫(xiě)了解析卻不生效?

系統(tǒng) Linux
在docker容器化平臺(tái)安裝過(guò)程中,我們遇到一個(gè)典型問(wèn)題:容器啟動(dòng)過(guò)程中,訪問(wèn)鏡像倉(cāng)庫(kù)服務(wù)失敗,重試40次依然無(wú)果,來(lái)看看怎么回事。

在docker容器化平臺(tái)安裝過(guò)程中,我們遇到一個(gè)典型問(wèn)題:容器啟動(dòng)過(guò)程中,訪問(wèn)鏡像倉(cāng)庫(kù)服務(wù)失敗,重試40次依然無(wú)果。

部署同學(xué)在節(jié)點(diǎn)上手工測(cè)試時(shí)發(fā)現(xiàn)報(bào)錯(cuò)

curl http://registry.local.net:5000
curl: (6) Could not resolve host: registry.local.net

對(duì)網(wǎng)絡(luò)熟悉的同學(xué)都知道主機(jī)上dns解析會(huì)優(yōu)先匹配/etc/hosts中配置的本地解析,如果沒(méi)有配置在再去/etc/resolv.conf中通過(guò)dns服務(wù)器解析。

1?? 排查過(guò)程

倉(cāng)庫(kù)服務(wù)在部署的時(shí)候會(huì)在所有節(jié)點(diǎn)會(huì)配置本地解析,先通過(guò)curl或者ping命令測(cè)試解析

  • 節(jié)點(diǎn)手工訪問(wèn)同樣解析失敗
curl http://registry.local.net:5000
curl: (6) Could not resolve host: registry.local.net
  • /etc/hosts 確實(shí)配置了本地地址解析
10.x.16.x registry.local.net

明明在/etc/hosts里已經(jīng)寫(xiě)了解析,為什么主機(jī)還是提示無(wú)法解析域名?

使用strace命令檢查下解析調(diào)用過(guò)程

[root@localhost ~]# strace -e trace=open,openat -f ping -c 1 registry.local.net
.....
openat(AT_FDCWD, "/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 5
openat(AT_FDCWD, "/etc/host.conf", O_RDONLY|O_CLOEXEC) = 5
openat(AT_FDCWD, "/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 5
openat(AT_FDCWD, "/dev/cur_gl", O_RDONLY|O_CLOEXEC) = -1 ENOENT (沒(méi)有那個(gè)文件或目錄)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 5
openat(AT_FDCWD, "/lib64/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 5
openat(AT_FDCWD, "/etc/hosts", O_RDONLY|O_CLOEXEC) = 5
openat(AT_FDCWD, "/usr/lib64/charset.alias", O_RDONLY|O_NOFOLLOW) = -1 ENOENT (沒(méi)有那個(gè)文件或目錄)
PING registry.local.net (10.xx.16.xx) 56(84) bytes of data.
openat(AT_FDCWD, "/etc/hosts", O_RDONLY|O_CLOEXEC) = 5
64 bytes from registry.local.net (10.xx.16.xx): icmp_seq=1 ttl=64 time=0.402 ms

--- registry.local.net ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.402/0.402/0.402/0.000 ms
+++ exited with 0 +++

從調(diào)用過(guò)程上看調(diào)用了linux的 /etc/nsswitch.conf 配置文件

排查發(fā)現(xiàn),該文件中相關(guān)配置被注釋掉

#hosts:      files dns myhostname

解釋?zhuān)?/span>

  • files首先查本地文件 /etc/hosts,如果匹配成功,直接返回 IP。
  • dns如果本地文件沒(méi)找到,再去 /etc/resolv.conf 中的 DNS 服務(wù)器查詢(xún)。
  • myhostname解析當(dāng)前主機(jī)自己的主機(jī)名(hostnamectl 設(shè)置的名字)。

也就是說(shuō),Linux 會(huì)嚴(yán)格按照 

files → dns → myhostname 的順序來(lái)解析域名。如果順序被改了,或者干脆被注釋掉,就會(huì)出現(xiàn)類(lèi)似 “明明寫(xiě)在 /etc/hosts,卻不生效” 的現(xiàn)象。

那么問(wèn)題原因就顯而易見(jiàn)了,由于此配置被注釋?zhuān)琹inux系統(tǒng)默認(rèn)走到了dns服務(wù)器查詢(xún)ip,但是此域名沒(méi)有在dns注冊(cè)過(guò),解析不出來(lái)符合預(yù)期。

2?? 解決方案

修改/etc/nsswitch.conf文件,將注釋去掉,恢復(fù)為

hosts:      files dns myhostname

保存后立即生效,再次訪問(wèn):

[root@localhost ~]# curlregistry.local.net:5000 -I
HTTP/1.1 200 OK
Cache-Control: no-cache
Date: Mon, 29 Sep 2025 06:45:45 GMT

返回正常了,問(wèn)題解決

3?? 總結(jié)與啟示

1. 不要忽略基礎(chǔ)文件很多看似復(fù)雜的安裝失敗問(wèn)題,最終原因可能是最基礎(chǔ)的系統(tǒng)配置。

2. 熟悉主機(jī)名解析順序
/etc/nsswitch.conf 決定了解析優(yōu)先級(jí),平時(shí)容易被忽視。

3. 排查要有層次先確認(rèn)本地hosts解析,再確認(rèn) DNS,最后再檢查系統(tǒng)配置文件,才能快速定位。

責(zé)任編輯:龐桂玉 來(lái)源: 運(yùn)維之美
相關(guān)推薦

2025-10-13 09:50:41

LinuxLinux排障生產(chǎn)故障

2022-11-16 08:43:56

Linux/etc/hosts文件

2010-12-22 10:26:41

straceLinux服務(wù)器

2009-07-27 10:03:02

分層模型網(wǎng)絡(luò)故障

2010-03-17 15:35:47

2013-07-25 09:56:22

OSPF路由選擇路由故障OSPF

2024-02-21 21:28:29

Linux系統(tǒng)

2020-09-02 12:45:52

Linux排障運(yùn)維

2009-12-24 16:51:54

Linux hosts

2010-03-09 10:50:58

2010-08-05 14:29:54

NFS服務(wù)

2018-07-27 06:21:46

數(shù)據(jù)中心運(yùn)維管理網(wǎng)絡(luò)設(shè)備

2010-07-15 11:16:04

負(fù)載均衡

2014-12-01 11:25:11

sysdigLinux

2010-03-01 14:46:41

Linux hostn

2010-08-20 09:45:40

IOS升級(jí)排障

2015-11-20 16:55:11

蹭車(chē)

2020-11-30 06:27:35

Java泛型Object

2010-01-06 08:56:52

交換機(jī)故障

2011-08-02 09:11:49

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)