CLI 中的 DNS 解析問題
舊的 MacBook 螢幕快要死了,所以切換到新的 Ubuntu 22 筆記型電腦
立即出現 DNS 問題,迄今為止沒有遇到過
我正在使用臨時框 (AWS) xsubdomain.xdomain.com。Web 瀏覽器會愉快地解析 url,證明我已正確設置 AWS 安全組,並且 DNS 記錄已正確更新(Web DNS 查找工具同意)。但是所有在 mac 機器上工作的 CLI 工具在 Linux 上都失敗了(curl 和 ssh 就足夠了)。當我嘗試對盒子進行 ping 操作時,症狀就出現了——我注意到顯示的 IP 地址錯誤。
nslookup/dig 同意 ping,將 url 解析為相同的錯誤 IP。
瀏覽器(Chrome 和 Brave)使用的 DNS 數據與終端中的命令不同,這是肯定的。目前的假設是,不知何故,我的 DNS 記憶體變壞了。我嘗試(天真地)編輯 /etc/systemd/resolved.conf (DNS=8.8.8.8) 並重新啟動已解決,但無濟於事。
我還嘗試了什麼:
resolvectl flush-caches (據說我需要清理記憶體)
sudo systemctl restart systemd-resolved
resolvectl 統計資訊(確認記憶體是乾淨的)
但 nslookup/dig 仍然顯示奇怪的 IP ……
我究竟做錯了什麼?感謝您的時間
現代網路瀏覽器可能會使用 DNS-over-SSL 或 DNS-over-HTTPS 服務,並繞過作業系統中配置的正常 DNS 服務,因為這些服務據稱比正常 DNS 更安全。在您的情況下,這可能會產生預期的正確 URL 解析。
如果您在 Ubuntu 中安裝了
nscd
orunscd
軟體包,它是一個名稱伺服器記憶體守護程序 - 在這種情況下,您可能需要執行sudo nscd -i hosts
以刷新其記憶體。DNS 診斷工具通常繞過記憶體
nslookup
並直接與. 但是,如果您的系統正在使用(通過顯示實際的DNS 設置而不是錯誤消息來表示),它們可能仍會受到本地記憶體的影響。但應該已經處理了那個記憶體。bind``nscd``/etc/resolv.conf``systemd-resolved``nameserver 127.0.0.53``/etc/resolv.conf``resolvectl status``resolvectl flush-caches
正如 QuartzCristal 在評論中提到的,
dig @8.8.8.8 xsubdomain.xdomain.com
告訴dig
命令直接聯繫 Google 的 8.8.8.8 公共 DNS 服務,跳過配置到作業系統的任何 DNS 服務。如果這導致顯示正確的 IP 地址,則問題出在您的本地系統或為其配置的名稱伺服器中;如果這也導致錯誤的 IP 地址,那麼某些東西(可能是一些惡意軟體)可能正在操縱您和網際網路之間的任何未加密的 DNS 流量。如果
nameserver
您/etc/resolv.conf
和/或輸出中的 DNS 伺服器設置中的行resolvectl status
指向您的路由器,那麼重置您的路由器可能是個好主意:將其關閉 30 秒左右,然後重新打開。你可能想看看你的路由器是否有可用的安全更新:有一些惡意軟體可以攻擊具有已知漏洞的路由器,其中一些版本可能會嘗試重定向使用者的流量,可能用於窺探或註入額外的廣告。您的路由器可能容易受到其中之一的攻擊。據我所知,路由器中的大多數此類惡意軟體感染都可以通過重置路由器來清除,但如果路由器中仍然存在易受攻擊的韌體版本,它可能會很快被重新感染。
如果您的
resolvectl status
或/etc/resolv.conf
文件指向您的 Internet 服務提供商的 DNS 伺服器,或者如果它們指向您的路由器並且重置路由器並更新其韌體並沒有幫助,那麼您的 ISP 的 DNS 伺服器可能存在某種問題。在這種情況下,您可能應該聯繫您的 ISP 並報告問題。在等待您的 ISP 最終解決問題時,您可能希望將 Ubuntu 和/或路由器配置為使用 Google 的 8.8.8.8 或其他公共 DNS 服務而不是您的 ISP 的名稱伺服器,作為一種解決方法。