Debian 服务器 DNS 解析故障排查实录

前言

上次 ubuntu 的 dns 出错后，debain 服务器的 dns 也炸了

怎么炸 dns 跟我这么有缘？

问题背景

Debian 服务器出现诡异现象：

使用公共 DNS（如 8.8.8.8 或 223.5.5.5）无法解析域名

使用局域网自建 DNS（如 192.168.0.254）解析正常

排查过程

1. DNS 连通性测试

Copy

nc -zuv 223.5.5.5 53 # 输出: Connection succeeded!

公共 DNS 的 53 端口可达

疑惑 ing

2. DNS 配置检查

Copy
cat /etc/resolv.conf
# 输出:
nameserver 223.5.5.5
nameserver 8.8.8.8

挺正常的 qwq

3. 防火墙规则

Copy
sudo iptables -L -n -v | grep 53

没啥问题～

4.dig 查询

Copy
# 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. 网络抓包取证

Copy
sudo tcpdump -i any port 53 -w dns.pcap

抓包结果：

只有 外发 DNS 请求（A? aliyun.com）

无 响应数据包 返回

6. 连接追踪验证

Copy
sudo conntrack -L -p udp --dport 53
# 输出: 0 flow entries

UDP 请求未建立连接，响应包在传输过程中被丢弃

真逆天

结论

暂且还不知道是什么问题，可能是中间网络设备拦截的？
docker 之类的也排除过了
有没有朋友知道的留下解决方案？

解决方案

强制使用 TCP 协议解析

Copy
# 修改 /etc/resolv.conf
echo "options use-vc" | sudo tee -a /etc/resolv.conf

自建 DNS

留个坑