代理樂趣
我使用 Vagrant 和 VMware Workstation 15在我的 Windows 10 主機上建立了一個 Ubuntu 18.10 虛擬機器。
但對於一位重要的主人我就沒那麼幸運了:
$ ping -c 4 production.cloudflare.docker.com
ping: production.cloudflare.docker.com: Temporary failure in name resolution
(當我在 Windows 主機上的 Cygwin 中執行相同的操作時,它運作得很好。)
什麼應該是什麼原因?DNS 網域名稱伺服器!
然而,systemd-resolve --status
告訴我它正在使用("Current DNS Server: 8.8.4.4"
在 上eth0
,唯一具有大量 RX 和 TX 數量的介面)工作正常當我明確嘗試時:
$ dig @8.8.4.4 production.cloudflare.docker.com
; <<>> DiG 9.11.4-3ubuntu5.1-Ubuntu <<>> @8.8.4.4 production.cloudflare.docker.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45235
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
[...]
production.cloudflare.docker.com. 117 IN A 104.18.122.25
production.cloudflare.docker.com. 117 IN A 104.18.121.25
production.cloudflare.docker.com. 117 IN A 104.18.125.25
production.cloudflare.docker.com. 117 IN A 104.18.124.25
production.cloudflare.docker.com. 117 IN A 104.18.123.25
但是當我瀏覽 Ubuntu 時本地代理,查詢失敗:
$ dig production.cloudflare.docker.com
; <<>> DiG 9.11.4-3ubuntu5.1-Ubuntu <<>> production.cloudflare.docker.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 60815
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
[...]
;; SERVER: 127.0.0.53#53(127.0.0.53)
顯然,127.0.0.53
沒有做我認為應該做的事情。 (請注意,我是網路新手。)
我缺什麼?
我甚至不確定這更多的是 Ubuntu 問題還是 VMware 問題。或者也許是一個 Vagrant 問題?
不寒而慄。
答案1
是三個位元組的變化!
網路上有很多關於 Ubuntu DNS 故障的報告。就像 HackSlash 的答案一樣,大多數答案建議將預期的名稱伺服器硬連接到/etc/resolv.conf
.但如果我理解正確的話,這將禁用本地緩存,這看起來很愚蠢而且有點反社會,所以我不想這樣做。
問題是什麼?
我終於找到了解釋https://superuser.com/a/1200745/372846:Ubuntusystemd-resolved
顯然無法使用 DNSSEC 正確處理名稱伺服器。必須關閉 DNSSEC 支持,一切都會好起來的。
解決方案
在文件中/etc/systemd/resolved.conf
,將該行替換DNSSEC=yes
為DNSSEC=no
;然後透過 重新啟動解析器服務sudo systemctl restart systemd-resolved
。
我剩餘的困惑
上面的貼文談到了 Ubuntu 17.04,當時systemd-resolved
對 Ubuntu 來說顯然還很陌生。下的一則評論這個答案DNSSEC=no
對於同一個問題,預設值將在更高版本的 Ubuntu 中變更為。我使用的是 18.10,但這種情況仍然沒有發生——完整的 DNSSEC 功能也沒有出現。搞什麼?
答案2
這在askubuntu 上得到了答案。有許多解決方案建議您安裝不同的解析器。
這個答案說你不需要這樣做:
如果您正在尋找快速但骯髒的解決方案,您可以配置 systemd-resolved 以在全球範圍內使用您的 DNS 伺服器:
$ cat /etc/systemd/resolved.conf
<...>
[Resolve]
DNS=8.8.8.8 8.8.4.4
<...>
然後重新啟動systemd-resolved.service
或重新啟動。
完整問答: https://askubuntu.com/questions/1012641/dns-set-to-systemds-127-0-0-53-how-to-change-permanently