前言
上次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
留个坑