艾格吃饱了 2025-09-07 17:05 采纳率: 99%
浏览 0
已采纳

问题:systemd-resolved解析失败如何排查?

**systemd-resolved解析失败如何排查?** 在Linux系统中,`systemd-resolved`负责网络名称解析,若出现解析失败,可能导致域名无法正常访问。常见排查步骤包括:检查`systemd-resolved`服务状态是否运行正常;确认`/etc/resolv.conf`配置是否正确且未被覆盖;查看日志`journalctl -u systemd-resolved`以定位错误信息;测试本地DNS缓存与远程DNS服务器连通性;排查网络管理工具(如NetworkManager或networkd)是否冲突。此外,还需验证是否启用了LLMNR或多播DNS等特性。通过逐步检查服务、配置与网络连通性,可有效定位并解决systemd-resolved解析失败问题。
  • 写回答

1条回答 默认 最新

  • 小丸子书单 2025-10-22 03:45
    关注

    systemd-resolved解析失败如何排查?

    在Linux系统中,systemd-resolved是systemd组件的一部分,负责提供网络名称解析服务,包括DNS、LLMNR和mDNS。当出现解析失败时,可能影响系统的网络访问能力。本文将从浅入深、循序渐进地介绍排查systemd-resolved解析失败的方法,涵盖常见问题、分析过程和解决方案。

    1. 确认服务状态是否正常运行

    首先应检查systemd-resolved服务是否处于运行状态:

    systemctl status systemd-resolved

    如果服务未运行,可以尝试重启服务:

    sudo systemctl restart systemd-resolved

    如果服务频繁崩溃,建议查看其日志以进一步分析。

    2. 查看服务日志定位问题

    使用journalctl查看服务日志:

    journalctl -u systemd-resolved -b

    重点关注日志中的错误信息,例如:

    • DNS server unreachable
    • Failed at resolving domain
    • Connection refused

    3. 检查/etc/resolv.conf配置是否正确

    systemd-resolved通常会生成/run/systemd/resolve/resolv.conf,并通过符号链接设置为/etc/resolv.conf

    检查当前的符号链接:

    ls -l /etc/resolv.conf

    应指向:

    /run/systemd/resolve/resolv.conf

    如果该文件被其他服务(如dhclientNetworkManager)覆盖,会导致DNS配置失效。

    4. 检查网络管理工具是否冲突

    多个网络管理工具(如NetworkManagernetworkddhclient)同时运行可能导致配置冲突。

    检查是否启用了多个网络管理器:

    systemctl list-units | grep network

    建议只启用一个网络管理器,并禁用其他冲突服务。

    5. 测试本地DNS缓存与远程DNS服务器连通性

    使用resolvectl命令查看当前DNS配置:

    resolvectl status

    手动测试DNS解析:

    nslookup example.com

    或使用dig命令:

    dig example.com

    若远程DNS服务器不可达,需检查网络连通性或更换DNS服务器。

    6. 检查LLMNR与mDNS配置

    systemd-resolved支持LLMNR和mDNS功能,可用于本地网络解析。可通过以下命令查看是否启用:

    resolvectl | grep LLMNR\|mDNS

    如需禁用,可在配置文件中修改:

    /etc/systemd/resolved.conf

    修改内容:

    [Resolve]
    LLMNR=no
    MulticastDNS=no

    保存后重启服务。

    7. 配置文件与服务冲突示例分析

    以下是一个典型配置冲突示例:

    服务是否启用可能影响
    NetworkManager覆盖resolv.conf
    systemd-networkd与NetworkManager冲突
    dhclient覆盖DNS配置

    建议根据实际需求选择一个网络管理工具,并禁用其余。

    8. 使用流程图辅助排查

    以下是排查systemd-resolved解析失败的流程图:

    graph TD
        A[开始] --> B{systemd-resolved运行?}
        B -->|是| C[查看日志]
        B -->|否| D[启动服务]
        C --> E{日志有错误?}
        E -->|是| F[根据错误修复]
        E -->|否| G[检查resolv.conf链接]
        G --> H{是否正确指向?}
        H -->|否| I[修复符号链接]
        H -->|是| J[测试DNS解析]
        J --> K{是否成功?}
        K -->|否| L[检查DNS服务器连通性]
        K -->|是| M[解析正常]
            

    9. 高级调试技巧

    启用systemd-resolved的调试日志:

    sudo logindctl enable-linger

    然后修改配置文件:

    /etc/systemd/resolved.conf
    [Manager]
    LogLevel=debug

    重启服务后查看更详细的日志输出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 9月7日