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

Dorimu 发布于 2025-05-12 79 次阅读


前言

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

怎么炸dns跟我这么有缘?

问题背景

Debian 服务器出现诡异现象:

  • 使用公共 DNS(如 8.8.8.8223.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

留个坑