前言#
上次 ubuntu 的 dns 出错后,debain 服务器的 dns 也炸了
怎么炸 dns 跟我这么有缘?
問題背景#
Debian 伺服器出現詭異現象:
- 使用公共 DNS(如
8.8.8.8
或223.5.5.5
)無法解析域名 - 使用局域網自建 DNS(如
192.168.0.254
)解析正常
排查過程#
1. DNS 連通性測試#
nc -zuv 223.5.5.5 53 # 輸出: Connection succeeded!
公共 DNS 的 53 端口可達
疑惑 ing
2. DNS 配置檢查#
cat /etc/resolv.conf
# 輸出:
nameserver 223.5.5.5
nameserver 8.8.8.8
挺正常的 qwq
3. 防火牆規則#
sudo iptables -L -n -v | grep 53
沒啥問題~
4.dig 查詢#
# UDP 查詢(失敗)
dig @223.5.5.5 aliyun.com +short
# 輸出: ;; communications error: timed out
# TCP 查詢(成功!)
dig +tcp @223.5.5.5 aliyun.com +short
# 輸出: 106.11.253.83 140.205.60.46 ...
UDP DNS 查詢被攔截,TCP DNS 正常
5. 網絡抓包取證#
sudo tcpdump -i any port 53 -w dns.pcap
抓包結果:
- 只有 外發 DNS 請求(
A? aliyun.com
) - 無 響應數據包 返回
6. 連接追蹤驗證#
sudo conntrack -L -p udp --dport 53
# 輸出: 0 flow entries
UDP 請求未建立連接,響應包在傳輸過程中被丟棄
真逆天
結論#
暫且還不知道是什麼問題,可能是中間網絡設備攔截的?
docker 之類的也排除過了
有沒有朋友知道的留下解決方案?
解決方案#
強制使用 TCP 協議解析#
# 修改 /etc/resolv.conf
echo "options use-vc" | sudo tee -a /etc/resolv.conf
自建 DNS#
留個坑