如何找出錯誤的本地 dns 結果來自哪裡?
我正在執行薄荷伴侶 17.2。
當我使用dig時,對於某個特定的域名,解析的IP“答案”是錯誤的,答案伺服器是
127.0.0.1
.嘗試通過 ssh、Web 瀏覽器等從我的本地電腦訪問此域也會解析到錯誤的 IP。
使用線上工具或其他電腦的 DNS 查找工作正常。
本地機器上的某些東西正在攔截請求並返回錯誤的記憶體結果。我查看了各種記憶體程序,但我認為我沒有安裝或配置任何記憶體程序。
返回的 IP 地址是舊 IP,並且主 DNS 記錄在一年前更改。
如何確定哪個程序在本地攔截 DNS 並將其禁用,以便我可以在我的電腦上正確解析此域?
/etc/resolv.conf:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 127.0.1.1
Resolvconf 將其指向在本地電腦的埠 53 中執行的本地軟體。
要找出是哪一個:
sudo netstat -anlp | grep :53
正如我們所發現的,它是 avahi 守護程序。
要跟踪 DNS 解析,以下命令也很有用:
dig +trace www.cnn.com
如果您想自己控制 DNS 設置,特別是在伺服器情況下(我注意到您說 Mint),我建議您取消 resolvconf
您可以使用以下命令解除安裝它:
dpkg --purge resolvconf
然後,如果您通過 DHCP 獲得 IP,請保持原樣,否則在 /etc/resolv.conf 中填寫您的 DNS 伺服器。
如果您對 mDNS 解析或公司網路也不感興趣,我建議您解除安裝 avahi。
在桌面設置中,建議重新啟動或重新啟動所有服務。我至少會重新啟動網路
service networking restart
。Avahi mDNS/DNS-SD 守護程序實現 Apple 的 Zeroconf 架構(也稱為“Rendezvous”或“Bonjour”)。守護程序使用 mDNS/DNS-SD 註冊本地 IP 地址和靜態服務,並為本地程序提供兩個 IPC API,以利用 avahi-daemon 維護的 mDNS 記錄記憶體。
在工作環境中,在發布 mDNS 記錄的網路級別伺服器/工作站上進行跟進可能也很有趣,如果它們是絕對必要的。我敢打賭,一些失去的主機文件或一些舊的伺服器設置正在通過 mDNS 傳播你的舊 IP 地址。
您還可以使用以下命令偵聽本地網路 mDNS 數據包:
sudo tcpdump -n udp port 5353
從mDNS
多播域名系統 (mDNS) 將主機名解析為不包括本地名稱伺服器的小型網路中的 IP 地址。它是一種零配置服務,使用與單播域名系統 (DNS) 基本相同的程式介面、數據包格式和操作語義。儘管 Stuart Cheshire 將 mDNS 設計為具有獨立功能,但它可以與單播 DNS 伺服器協同工作。