网络打不开?教你一招解决 DNSSEC 验证失败!

B站影视 港台电影 2025-04-09 04:24 1

摘要:Hello,大家好啊!今天给大家带来一篇在信创操作系统上处理DNS 解析失败的实战文章,解决内网环境下由于DNSSEC验证失败导致无法正常访问网站的问题。像这种ping域名失败的情况,学会这个方法能帮你迅速定位并解决问题!欢迎大家分享点赞,点个在看和关注吧!

Hello,大家好啊!今天给大家带来一篇在信创操作系统上处理DNS 解析失败的实战文章,解决内网环境下由于DNSSEC验证失败导致无法正常访问网站的问题。像这种ping域名失败的情况,学会这个方法能帮你迅速定位并解决问题!欢迎大家分享点赞,点个在看和关注吧!

一、问题复现

在内网环境中,执行命令:

ping www.pdsyw.cn

发现无法ping通,进一步检查systemd-resolved服务状态时,发现提示:

DNSSEC validation failed for question www.pdsyw.cn IN A: no-signature

原因是 DNSSEC安全验证失败,导致域名无法正常解析。

二、原因分析

DNSSEC(DNS Security Extensions)是用来验证DNS响应真实性的安全机制,能有效防止域名被篡改。但前提是:被访问的域名需要支持DNSSEC签名。在我们的内网环境下,像 www.pdsyw.cn这样的网站,没有启用DNSSEC签名。如果系统配置成必须启用DNSSEC验证,系统就会因为无法找到签名而报错,最终DNS解析失败。

总结一句:域名没签名,系统偏要验签,自然验证失败。

三、解决方案

方案一:关闭DNSSEC验证(推荐)

如果当前网络环境对DNS安全要求不高,可以直接关闭DNSSEC。步骤如下:

1.编辑配置文件:

如果当前网络环境对 DNS 安全性要求不高,可以选择关闭或者降低 DNSSEC 验证要求。如果之前是用的 allow-downgrade,可能也需要调整成 no,这样会彻底关闭验证。如果使用的是 systemd-resolved,编辑配置文件:

pdsyw@pdsyw-PC:~/Desktop$ sudo vim /etc/systemd/resolved.confpdsyw@pdsyw-PC:~/Desktop$ grep -v "^#" /etc/systemd/resolved.conf[Resolve]DNSSEC=nopdsyw@pdsyw-PC:~/Desktop$ sudo systemctl restart systemd-resolved

方案二:更换DNS服务器(不强制DNSSEC)

如果不想关闭DNSSEC,也可以选择使用不要求DNSSEC验证的DNS服务器。步骤如下:

1.编辑配置文件

指定公司内部DNS(假设是10.10.10.100),如果使用的是 systemd-resolved,通过配置resolved.conf实现:

pdsyw@pdsyw-PC:~/Desktop$ sudo vim /etc/systemd/resolved.confpdsyw@pdsyw-PC:~/Desktop$ grep -v "^#" /etc/systemd/resolved.conf[Resolve]DNS=10.10.10.100

2.保存并重启服务

这样就可以绕过带 DNSSEC 验证的公共 DNS,恢复正常访问。

pdsyw@pdsyw-PC:~/Desktop$ cat /etc/systemd/resolved.conf [Resolve]#DNS=#FallbackDNS=#Domains=#LLMNR=yes#MulticastDNS=yes#DNSSEC=allow-downgrade#DNSOverTLS=no#Cache=yes#DNSStubListener=yes#ReadEtcHosts=yes配置项默认值含义解释使用建议DNS=无(空)指定上游 DNS 服务器 IP 地址(比如 8.8.8.8 或 223.5.5.5)建议手动指定,避免被 DHCP 覆盖。多个用空格分隔。FallbackDNS=systemd 自带公共 DNS当上面的 DNS 失效时使用的备用 DNS。建议写上,如 1.1.1.1 8.8.8.8 提升可靠性。Domains=无(空)指定本地域搜索后缀,解析主机名时会自动补全这些域。内网环境可用,比如写 example.com。LLMNR=yes开启 局域网主机名解析(Link-Local Multicast Name Resolution)内网设备互相发现用,局域网推荐开。MulticastDNS=yes开启 多播 DNS(mDNS),类似 Bonjour、Avahi,用于本地网络设备自动发现。局域网设备互联推荐开,安全环境使用。DNSSEC=allow-downgrade启用 DNSSEC 验证。 - no:不验证 - allow-downgrade:默认值,支持就验证,不支持降级 - yes:强制验证,失败就报错如果关注 DNS 安全建议 yes,做实验一定要写明。DNSOverTLS=no是否通过 TLS 加密 DNS 查询。需要隐私保护时设为 yes,要保证上游 DNS 支持。Cache=yes是否开启本地 DNS 缓存。建议开启,性能好;如调试时可以关闭。DNSStubListener=yes开启本地监听 127.0.0.53 的 DNS stub(代理接口),程序默认走这个地址。建议开启,保持系统默认行为。ReadEtcHosts=yes是否读取 /etc/hosts 文件,作为本地域名解析。建议开启,便于手动维护本地解析。

遇到DNSSEC验证失败导致的DNS解析问题,不用慌!通过关闭DNSSEC或切换DNS服务器,就能快速恢复网络正常访问。如果你觉得这篇文章对你有帮助,欢迎分享点赞,点个在看和关注哦!后续我还可以继续带来类似的系统网络故障排查技巧,我们下次再见!

来源:孙哥讲科技说

相关推荐