精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Localhost 就一定是 Localhost 么?

網(wǎng)絡(luò) 通信技術(shù)
我們在本地測試或者本地通訊的時候經(jīng)常使用 localhost 域名,但是訪問 localhost 的對應(yīng)的一定就是我們的本機地址么?

 [[405743]]

我們在本地測試或者本地通訊的時候經(jīng)常使用 localhost 域名,但是訪問 localhost 的對應(yīng)的一定就是我們的本機地址么?

背景

在一個風和日麗下午,突然收到了運維同學(xué)的反饋,說我們的一個服務(wù)調(diào)用突然報錯了,關(guān)鍵是這個服務(wù)已經(jīng)半年沒有更新發(fā)版過了,詢問后得知最近基礎(chǔ)架構(gòu)也沒有什么變更,這就很迷了

我們排查日志后發(fā)現(xiàn)這個服務(wù)去調(diào)用了一個不知名的 ip 地址,這個地址還能 ping 通,但是我們明明是配置的 localhost,為什么會出現(xiàn)這個地址?localhost 不應(yīng)該指向的是 127.0.0.1 么?我們使用 dig 和 nslookup 之后發(fā)現(xiàn) localhost 的確是 127.0.0.1。

我們修改了應(yīng)用的配置,讓這個調(diào)用直接調(diào)用 127.0.0.1 結(jié)果發(fā)現(xiàn)這個時候服務(wù)就正常了,然后我們在機器上抓包之后發(fā)現(xiàn) localhost 竟然走了域名解析! 并且 localhost 這個域名在我們內(nèi)網(wǎng)還被注冊了,解析出來的地址就是最開始發(fā)現(xiàn)的這個不知名的地址

小結(jié)

所以我們下意識認為的域名解析流程應(yīng)該是這樣的,先去找 /etc/hosts 文件,localhost 找到了(默認是 127.0.0.1)就返回了

排查之后發(fā)現(xiàn),實際上的流程是這樣的,先做了 DNS 查詢 DNS 沒查到然后去查了 /etc/hosts 文件

直到有一天,我們的內(nèi)網(wǎng)域名解析中添加了一個 localhost 的域名解析,就直接查詢成功返回了

復(fù)現(xiàn)

我們先使用一段簡單的代碼復(fù)現(xiàn)一下,簡單請求一下 localhost 就行了

  1. package main 
  2.  
  3. import ( 
  4.  "fmt" 
  5.  "net/http" 
  6.  
  7. func main() { 
  8.  client := &http.Client{} 
  9.  _, err := client.Get("http://localhost:8080"
  10.  fmt.Println(err) 

然后我們使用 GODEBUG="netdns=go+2" 環(huán)境變量執(zhí)行程序,帶上這個環(huán)境變量之后程序運行時就會輸出是先執(zhí)行 dns 查詢還是先從 /etc/hosts 文件進行查詢

  1. GODEBUG="netdns=go+2" go run main.go  
  2. go package net: GODEBUG setting forcing use of Go's resolver 
  3. go package net: hostLookupOrder(localhost) = files,dns 
  4. Get "http://localhost:8080": dial tcp [::1]:8080: connectconnection refused 

上面顯示的 files,dns 的意思就是先從 /etc/hosts 文件中查詢,再去查詢 dns 結(jié)果,但是我們當時服務(wù)的運行結(jié)果是 dns,files 這個問題出現(xiàn)在哪里呢?和 Go 的版本以及本地環(huán)境有關(guān)系

我們使用 Docker 模擬了線上環(huán)境,我們線上也是用的 Docker

  1. FROM golang:1.15 as builder 
  2.  
  3. WORKDIR /app 
  4.  
  5. COPY main.go main.go 
  6. COPY run.sh run.sh 
  7.  
  8. ENV CGO_ENABLED=0 
  9. ENV GOOS=linux 
  10.  
  11. RUN go build main.go 
  12.  
  13. FROM alpine:3 
  14.  
  15. WORKDIR /app 
  16.  
  17. COPY --from=builder /app /app 
  18. COPY run.sh run.sh 
  19.  
  20. RUN chmod +x run.sh 
  21.  
  22. ENV GODEBUG="netdns=go+2" 
  23. ENV CGO_ENABLED=0 
  24. ENV GOOS=linux 
  25.  
  26. CMD /app/run.sh 

使用這個容器運行的結(jié)果如下,可以看到已經(jīng)變成了 dns,files 為什么會這樣呢?

  1. go package net: built with netgo build tag; using Go's DNS resolver 
  2. go package net: hostLookupOrder(localhost) = dns,files 
  3. Get "http://localhost:8080": dial tcp 127.0.0.1:8080: connectconnection refused 

排查

src/net/dnsclient_unix.go

Go 中定義了下面幾種 DNS 解析順序,其中 files 表示查詢 /etc/hosts 文件,dns 表示執(zhí)行 dns 查詢

  1. // hostLookupOrder specifies the order of LookupHost lookup strategies. 
  2. // It is basically a simplified representation of nsswitch.conf. 
  3. // "files" means /etc/hosts. 
  4. type hostLookupOrder int 
  5.  
  6. const ( 
  7.  // hostLookupCgo means defer to cgo. 
  8.  hostLookupCgo      hostLookupOrder = iota 
  9.  hostLookupFilesDNS                 // files first 
  10.  hostLookupDNSFiles                 // dns first 
  11.  hostLookupFiles                    // only files 
  12.  hostLookupDNS                      // only DNS 

在 src/net/conf.go 中可以看到

Go 會先根據(jù)一些初始條件判斷查詢的順序,然后就查找 /etc/nsswitch.conf 文件中的 hosts 配置項,如果不存在就會走一些回退邏輯。這次的問題出現(xiàn)在這個回退邏輯上

  1. func (c *conf) hostLookupOrder(r *Resolver, hostname string) (ret hostLookupOrder) { 
  2.  // ... 省略 
  3.  
  4.  nss := c.nss 
  5.  srcs := nss.sources["hosts"
  6.  // If /etc/nsswitch.conf doesn't exist or doesn't specify any 
  7.  // sources for "hosts", assume Go's DNS will work fine. 
  8.  if os.IsNotExist(nss.err) || (nss.err == nil && len(srcs) == 0) { 
  9.   if c.goos == "solaris" { 
  10.    // illumos defaults to "nis [NOTFOUND=return] files" 
  11.    return fallbackOrder 
  12.   } 
  13.   if c.goos == "linux" { 
  14.    // glibc says the default is "dns [!UNAVAIL=return] files" 
  15.    // https://www.gnu.org/software/libc/manual/html_node/Notes-on-NSS-Configuration-File.html. 
  16.    return hostLookupDNSFiles 
  17.   } 
  18.   return hostLookupFilesDNS 
  19.  } 
  20.  if nss.err != nil { 
  21.   // We failed to parse or open nsswitch.conf, so 
  22.   // conservatively assume we should use cgo if it's 
  23.   // available. 
  24.   return fallbackOrder 
  25.  } 

通過上面的代碼我們可以發(fā)現(xiàn),當前系統(tǒng)如果是 linux 并且不存在 /etc/nsswitch.conf 文件的時候,會直接返回 dns,files 的順序,這個是參考了 glibc 的實現(xiàn)[^2]

這個問題其實一般在虛擬機上沒有問題,因為一般操作系統(tǒng)都會默認有這個配置文件,但是容器化之后我們一般喜歡使用 alpine linux 這種比較小的基礎(chǔ)鏡像,alpine 中就不存在的 /etc/nsswitch.conf 這個文件,所以就有可能會出現(xiàn)問題

上面這段邏輯不能再 1.16 中進行復(fù)現(xiàn),是因為 1.16 已經(jīng)修改了這個邏輯,主要就是把 linux 的這個判斷分支刪除掉了,感興趣可以看這個修改記錄[^3] 和這個 issue[^4]

總結(jié)

最大的感受就是經(jīng)驗主義害死人,很多時候由于我們知識點的原因所以可能會出現(xiàn)一些和我們認為的常識相違背的地方,這個時候就需要大膽假設(shè)小心求證了

針對這次這個問題的修復(fù)方案,我們是直接先刪除了 localhost 的解析,復(fù)盤之后給出我不成熟的幾點小建議

  • 公司內(nèi)網(wǎng)就不要搞注冊 localhost 域名這種騷操作了
  • 基礎(chǔ)鏡像的維護很重要,建議大家最好能夠統(tǒng)一一個基礎(chǔ)鏡像這樣不僅僅可以減少一些磁盤空間,同時還可以做一些統(tǒng)一的變更,例如這次這種就可以直接在基礎(chǔ)鏡像加上 /etc/nsswitch.conf 文件,避免其他業(yè)務(wù)也進坑里
  • 如果沒有什么特別的版本依賴(絕大部分應(yīng)用其實都沒有)Go 版本建議升級 1.16 可以省很多事
  • dns 解析并不一定會先查詢 hosts 文件,除了這種默認的情況外,還可以手動修改 /etc/nsswitch.conf 文件,調(diào)整解析的順序,這個感興趣的話可以試試
  • 這篇文章還試著用 figma 做了幾個小動畫,感覺還是不錯,后續(xù)有空寫文章可以再搞搞(曹大不要再卷了,快學(xué)不動了)

參考文獻

[^1]: Go 1.14 標準庫源碼: https://github.com/golang/go/blob/go1.14/src/net/conf.go

[^2]: glibc 實現(xiàn) https://www.gnu.org/software/libc/manual/html_node/Notes-on-NSS-Configuration-File.html

[^3]: 修改記錄: https://github.com/golang/go/commit/c80022204e8fc36ec487888d471de27a5ea47e17#diff-a7c29e18c1a96d08fed3e81f367d079d14c53ea85d739e7460b21fb29a063128

[^4]: https://github.com/golang/go/issues/35305

博客原文:https://lailin.xyz/

 

責任編輯:武曉燕 來源: lailin.xyz
相關(guān)推薦

2015-05-15 10:04:28

localhost

2024-05-27 00:40:00

2024-03-05 18:59:59

前端開發(fā)localhost

2018-06-08 11:28:44

MySQLlocalhost127.0.0.1

2024-09-12 15:28:38

localhost?網(wǎng)絡(luò)IPv4

2016-12-14 08:57:03

Weblogic報錯方法

2009-06-15 10:40:14

2015-08-05 09:26:55

技術(shù)大公司

2015-08-05 10:40:02

大公司技術(shù)程序員

2015-08-05 09:15:31

bat學(xué)習(xí)

2022-12-06 09:00:11

MySQL自增主鍵查詢

2025-10-27 01:00:00

2015-11-12 09:58:45

多租戶SaaS軟件架構(gòu)設(shè)計

2023-10-08 10:14:12

2024-05-27 00:00:00

localhostIPv6IPv4

2015-05-07 14:37:01

CoreOSAppC紅帽

2009-11-25 09:20:31

Windows 7網(wǎng)絡(luò)掉線

2024-03-05 18:19:07

localhostLinux數(shù)據(jù)庫

2015-12-08 10:17:01

51CTO

2015-10-08 09:57:39

IaaS墊腳石《創(chuàng)業(yè)維艱》
點贊
收藏

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

日韩av一二三四| 九九精品在线播放| 国产xxxxx视频| 最新国产在线观看| 国产福利一区二区三区在线视频| 欧美国产1区2区| 国产欧美精品日韩| 69精品久久久| 国产日韩视频在线| 日韩三级免费观看| 亚洲国产精品毛片av不卡在线| 日本在线视频站| 成人动漫av在线| 国产精品久久在线观看| 国产伦精品一区二区三区88av| 国产一区电影| 国产精品中文字幕日韩精品| 中文字幕无线精品亚洲乱码一区 | 激情综合网五月天| 最新亚洲精品| 精品免费日韩av| 另类小说第一页| 性爽视频在线| 亚洲综合色噜噜狠狠| 色姑娘综合av| 性xxxxbbbb| 亚洲清纯自拍| 久久天天躁狠狠躁老女人| 97人妻精品一区二区三区免| 不卡av免费观看| 国产精品美女久久久久久久久| 国产精品免费观看高清| 国产精品久久久久久久久毛片| 亚洲一区国产| 亚洲欧美日韩一区二区三区在线| www.51色.com| 国产精品第一国产精品| 黑人精品xxx一区| 久久久久久久9| 老司机av在线免费看| 久久se精品一区二区| 88国产精品欧美一区二区三区| 欧美熟妇精品一区二区蜜桃视频| 欧美成人xxxx| 在线日韩av片| 亚洲精品偷拍视频| wwwww在线观看免费视频| 97se狠狠狠综合亚洲狠狠| 成人综合电影| 亚洲成人黄色片| 国产一区二区网址| 91精品视频免费| 国产精品伦一区二区三区| 免费观看久久久4p| 国产精品自拍视频| 中文字幕 亚洲视频| 日本午夜一本久久久综合| 日韩av电影在线免费播放| 欧产日产国产69| 欧美日韩在线免费播放| 嫩草研究院在线| 久久综合色婷婷| 日本久久久久久久久久久| 在线免费观看毛片| 日韩视频一区二区三区在线播放免费观看| 欧美高清在线视频观看不卡| 免费网站观看www在线观| 好看的亚洲午夜视频在线| 欧美精品第一页在线播放| 日韩精品人妻中文字幕| 午夜综合激情| 国产精品日韩在线播放| 国产精品久久久久久久久久久久久久久久久久| 国内成人自拍视频| 国产高清精品一区二区| 头脑特工队2免费完整版在线观看| 视频在线观看91| 国产精品久久久久久久久影视 | 91成人在线观看喷潮| 国产综合免费视频| 91另类视频| 日韩一本二本av| 欧类av怡春院| 欧美综合久久| 精品中文字幕在线2019| 一区二区三区福利视频| 免费人成精品欧美精品 | 国产乱人伦丫前精品视频| 日韩精品在线视频观看| 黄色激情小视频| 亚洲一区二区三区中文字幕在线观看| 精品国产一区二区三区久久影院| 黄色a一级视频| 欧美激情偷拍自拍| 精品亚洲一区二区三区在线播放| 久久av无码精品人妻系列试探| 欧美wwwww| 97人人爽人人喊人人模波多| 中文字幕制服诱惑| 不卡视频一二三| 在线观看欧美激情| 成人在线黄色电影| 欧美精品乱码久久久久久按摩| 中文字幕一二三| 欧美性感美女一区二区| 久久久久国产精品www| 国产精品国产精品国产| 国产91高潮流白浆在线麻豆| 日本不卡一区| av在线小说| 9191成人精品久久| 成人乱码一区二区三区av| 伊人久久大香线蕉综合四虎小说 | 国产主播喷水一区二区| 国产一级淫片a视频免费观看| 老色鬼精品视频在线观看播放| 国产精品一国产精品最新章节| 一区二区高清不卡| 精品久久久久久电影| 欧美精品 - 色网| 国产精品一区二区av日韩在线| 欧美激情一级精品国产| 一级特黄录像免费看| 久久综合九色综合97婷婷| 99热这里只有精品免费| 114国产精品久久免费观看| 一区二区国产精品精华液| 99精品热6080yy久久| 91免费福利视频| 91社区在线| 色婷婷综合在线| 欧美一级片黄色| 欧美激情在线| 成人两性免费视频| av在线资源站| 91黄色免费观看| 波多野结衣福利| 亚洲一区一卡| 鲁丝一区鲁丝二区鲁丝三区| 99久久精品免费看国产小宝寻花| 欧美一区二区精品| 91麻豆精品成人一区二区| 美女mm1313爽爽久久久蜜臀| 日韩经典在线视频| 欧美舌奴丨vk视频| 亚洲精品日韩欧美| 国产精品视频免费播放| 成人爱爱电影网址| 久久久久久人妻一区二区三区| 欧美极品少妇videossex| 欧美性猛交xxxx乱大交退制版| 九色porny自拍视频| 久久久亚洲人| 青青草久久网络| 四虎成人在线| 最近2019免费中文字幕视频三 | 日韩二区三区四区| 成人免费大片黄在线播放| 成人精品一区二区三区免费 | 国内精品国产三级国产在线专| 精品国产区一区二| 亚洲亚洲精品在线观看| 中国黄色片视频| 亚洲茄子视频| 日本午夜精品一区二区| 欧美大陆国产| 欧美精品一区在线播放| www香蕉视频| 午夜成人免费视频| 亚洲精品乱码久久久久久久久久久久| 三级一区在线视频先锋| 亚洲蜜桃av| 久久久精品区| 97免费中文视频在线观看| 日本又骚又刺激的视频在线观看| 色噜噜狠狠成人中文综合| 69视频在线观看免费| 久久精品国产亚洲一区二区三区| 国产奶头好大揉着好爽视频| 最新国产一区二区| 欧美在线一区二区视频| 日本在线观看网站| 欧美不卡一二三| 久久99国产综合精品免费| 欧美国产1区2区| 91亚洲一线产区二线产区| 9色精品在线| 永久免费精品视频网站| 国产精品22p| 国产精品免费视频xxxx| 欧美巨大xxxx做受沙滩| 日韩精品极品在线观看播放免费视频| 亚洲大尺度在线观看| 自拍偷拍亚洲激情| 日韩女优在线视频| 热久久国产精品| 日韩美女爱爱视频| 日本一二区不卡| 国产日韩精品一区观看| 欧美日韩视频免费看| 国内精品国产三级国产在线专| 福利视频在线播放| 精品伦理精品一区| 在线播放国产一区| 亚洲成人免费在线| 欧美色视频一区二区三区在线观看| 国产凹凸在线观看一区二区| 国产精品视频黄色| 亚洲日韩成人| 久久99国产精品一区| 蜜桃成人av| 国产日韩一区二区三区| 在线高清欧美| 国产不卡一区二区在线播放| 欧美亚洲系列| 日韩在线播放视频| 精品推荐蜜桃传媒| 亚洲电影免费观看高清| 国产精品高潮呻吟av| 色综合激情久久| 国产小视频在线观看免费| 国产精品欧美久久久久无广告| 三叶草欧洲码在线| 国产精品一卡二卡在线观看| 国产又粗又长又大的视频| 99国产精品| 大西瓜av在线| 欧美日韩18| 国产对白在线播放| 欧美高清视频手机在在线| 日韩视频专区| 久草成人在线| 精品综合在线| 加勒比色老久久爱综合网| 99视频在线播放| 免费精品一区| 91麻豆国产精品| 成人黄色91| 国产一区二区丝袜| 久久麻豆视频| 国产精品吴梦梦| 国内欧美日韩| 国产精品亚洲美女av网站| 少妇精品视频一区二区免费看| 日韩av大片在线| 日韩a**中文字幕| 国产精品爱久久久久久久| 电影久久久久久| 国产精品人成电影在线观看| 3d欧美精品动漫xxxx无尽| 国产精品aaa| 久久久国产精品网站| 国产日韩欧美黄色| 日韩av黄色| 亚洲精品日韩av| 日韩精品一区国产| 91精品国产成人| www在线观看黄色| 国产69久久精品成人| 成人免费无遮挡| 国产精品久久久久久久久久久久| 亚洲电影有码| 91麻豆桃色免费看| www国产精品| 久久波多野结衣| 国产精品一区二区av交换| 五月天丁香综合久久国产| 日韩在线观看| 糖心vlog在线免费观看| 激情欧美日韩一区| 丝袜老师办公室里做好紧好爽| 日韩国产在线观看一区| 亚洲免费黄色录像| 国产精品一区二区在线观看网站| 国产伦精品一区二区三区精品| 91片在线免费观看| 大吊一区二区三区| 一二三四社区欧美黄| 日韩 欧美 综合| 在线观看区一区二| 99久久精品国产成人一区二区| 欧美一区二区视频在线观看| 日本黄色三级视频| 一区国产精品视频| 国产传媒在线播放| 91精品国产91久久久久福利| 欧美暴力调教| 国产不卡一区二区在线观看| 九九热爱视频精品视频| 成人短视频在线看| 亚洲深夜福利| 五月六月丁香婷婷| 26uuu精品一区二区| 日本免费网站视频| 婷婷国产v国产偷v亚洲高清| 在线观看免费中文字幕| 精品国产91久久久久久久妲己| 成人高清网站| 97精品一区二区三区| 日韩免费在线电影| 国产福利久久| 日韩欧美网址| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 精品在线播放午夜| xxx在线播放| 精品成人乱色一区二区| 国产精品伦理一区| 一区二区三区国产视频| 国产精品一区二区日韩| 91香蕉亚洲精品| av中文一区| 精品久久一二三| 国产精品一区专区| ass极品国模人体欣赏| 欧美日韩中文在线| 亚洲男人第一天堂| 久久精品电影网站| 无人区在线高清完整免费版 一区二| 国产成人免费电影| 亚洲精彩视频| 中文字幕av不卡在线| 久久一留热品黄| 久久久久久久99| 日韩精品在线网站| 成人午夜在线影视| 国产精品爽爽爽| 国产一区二区三区网| 欧美在线观看成人| 91网站在线观看视频| 国产一级一片免费播放放a| 欧美一区二区视频免费观看| 18免费在线视频| 国产精品久久久久久搜索| 国产欧美久久一区二区三区| av动漫在线看| 日韩成人精品视频| 中文字幕狠狠干| 欧美日韩国产一区中文午夜| 亚洲女人18毛片水真多| 欧美xxxx18性欧美| 国产精品一区二区三区www| 伊人狠狠色丁香综合尤物| 美女性感视频久久| 18啪啪污污免费网站| 欧美色区777第一页| 北岛玲一区二区三区| 日韩美女在线看| 国产一区二区三区网| 中文久久久久久| 中文字幕不卡的av| 一级特黄aa大片| 成年无码av片在线| 日韩08精品| 大陆av在线播放| 91色.com| 美女黄页在线观看| 最近2019中文免费高清视频观看www99 | 五月婷婷视频在线观看| 91福利入口| 亚洲黄色影片| 男生草女生视频| 欧美日韩国产一二三| 亚洲国产www| 久久全国免费视频| 亚洲aa在线| 精品久久久噜噜噜噜久久图片 | 国产一区三区三区| 欧美精品入口蜜桃| 日韩精品免费在线视频观看| 欧美激情喷水| 中文字幕中文字幕在线中一区高清| 国内不卡的二区三区中文字幕| jizz亚洲少妇| 亚洲精品福利资源站| 三级成人黄色影院| 成人手机视频在线| 不卡av在线网| 男人天堂视频在线| 久久精品久久久久久| 国偷自产av一区二区三区| 日韩免费毛片视频| 亚洲手机成人高清视频| 日韩在线视频免费| 国产精品视频1区| 国内精品福利| 久久久久久久毛片| 日韩一区二区三| 国偷自产一区二区免费视频| 黄色网址在线免费看| 91原创在线视频| 国产又黄又粗又长| 2021国产精品视频| 五月天综合网站| 欧美黑人欧美精品刺激| 91精品国产入口| 欧美日韩国产v| av女优在线播放| 亚洲色图.com| 免费福利在线观看| 97人人模人人爽人人少妇|