Domain-Name-System

Fedora 34 - 無法解析 docker 容器內的任何名稱

  • November 30, 2021

我在 Fedora 34(= 主機系統)上,我的 docker 容器中有問題,無法解析任何域。在主機解析度上沒有問題。

這是我嘗試過的:

  • 重啟並重新安裝docker
  • 禁用防火牆
  • 重啟機器
  • 重啟dns
  • 不同的碼頭工人圖像
  • 在 docker 中明確設置 dns(見下文)
  • 在 docker 中使用網路模式(見下文)
  • 禁用 ipv6

但是,我無法在任何容器中解析名稱:

~ docker run busybox nslookup google.com 
Server:     8.8.8.8
Address:    8.8.8.8:53

Non-authoritative answer:
Name:   google.com
Address: 142.251.36.174

*** Can't find google.com: No answer

如上所述,它適用於主機:

~ nslookup google.com
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   google.com
Address: 142.251.36.206
Name:   google.com
Address: 2a00:1450:4016:809::200e

奇怪的是,即使使用主機網路執行或顯式設置 dns 也無濟於事:

嘗試使用主機 dns 進行設置(這裡甚至說超時……)

~ docker run --dns 127.0.0.53 busybox nslookup google.com
;; connection timed out; no servers could be reached

用Google dns 試過:

~ docker run --dns 8.8.8.8 busybox nslookup google.com
Server:     8.8.8.8
Address:    8.8.8.8:53

Non-authoritative answer:
Name:   google.com
Address: 142.251.36.238

*** Can't find google.com: No answer

嘗試使用主機網路:

~ docker run --network="host" busybox nslookup google.com
Server:     8.8.8.8
Address:    8.8.8.8:53

Non-authoritative answer:
Name:   google.com
Address: 142.251.36.238

*** Can't find google.com: No answer

我沒有想法了..任何人都有提示,這裡發生了什麼?

附加資訊:它曾經可以工作,據我所知,我沒有更改系統上的任何內容,這可能會對此產生影響。

您可以嘗試使用指定的 DNS 伺服器執行 nslookup 命令嗎?如:nslookup google.com 8.8.8.8,或在您的情況下:docker run busybox nslookup google.com 8.8.8.8。這將幫助我們消除 Docker 橋中可能出現的網路問題。

但是您得到了答案,後面的 2 行Non-authoritative answer:是結果(142.251.36.238 是 Google 的有效 IP 地址)。

從外觀上看,您沒有得到的是 IPv6 答案。

你可以執行:

docker run busybox nslookup -type=A google.com

它應該只返回沒有錯誤的 IP 地址。

我懷疑busybox中nslookup的預設行為可能已經改變為返回IPv4和IPv6地址,這就是為什麼這看起來已經改變了。

引用自:https://serverfault.com/questions/1081791