普通网友 2025-07-05 03:35 采纳率: 97.9%
浏览 4
已采纳

如何在OpenWrt上正确安装并配置AdGuard Home?

**在OpenWrt上安装AdGuard Home后无法通过自定义DNS端口解析,如何排查与解决?** 在OpenWrt上正确安装并配置AdGuard Home后,部分用户可能会遇到设备无法通过自定义DNS端口(如5353)进行正常域名解析的问题。此问题常见原因包括:AdGuard Home监听端口配置错误、dnsmasq与AdGuard Home端口冲突、或防火墙规则未放行相应端口。排查时应检查AdGuard Home的配置文件,确认其监听地址和端口设置无误;在OpenWrt的网络→DHCP与DNS中禁用dnsmasq的DNS功能;同时确保防火墙允许对应LAN区域的DNS流量。通过日志分析和端口监听工具可进一步定位问题根源。
  • 写回答

1条回答 默认 最新

  • 蔡恩泽 2025-07-05 03:35
    关注

    一、问题背景与现象描述

    在OpenWrt系统上安装并配置AdGuard Home后,部分用户发现即使设置了自定义DNS端口(如5353),客户端设备仍然无法通过该端口进行正常的域名解析。通常表现为:设备使用AdGuard Home地址+自定义端口时无法访问网页或ping不通域名。

    二、常见原因分析

    • AdGuard Home监听配置错误:未正确绑定监听地址和端口。
    • dnsmasq冲突:OpenWrt默认的dnsmasq服务占用了53端口或其他DNS相关资源。
    • 防火墙限制:未放行指定LAN区域对自定义DNS端口的访问。
    • 客户端配置问题:DNS设置不正确或缓存残留。
    • AdGuard Home运行状态异常:服务未正常启动或崩溃。

    三、排查步骤详解

    1. 检查AdGuard Home监听端口配置

    编辑AdGuard Home的配置文件(一般为/etc/AdGuardHome/AdGuardHome.yaml):

    dns:
      bind_host: 0.0.0.0
      port: 5353

    确保bind_host为0.0.0.0以监听所有接口,并且port为期望的自定义端口号。

    2. 停止或禁用dnsmasq的DNS功能

    进入OpenWrt管理界面 → 网络 → DHCP与DNS,在“常规设置”中取消勾选“本地DNS转发器”;或者手动修改/etc/config/dhcp文件:

    config dnsmasq
    	option domainneeded 1
    	option boguspriv 1
    	option filterwin2k 0
    	option localise_queries 1
    	option rebind_protection 1
    	option rebind_localhost 1
    	option local '/lan/'
    	option domain 'lan'
    	option expandhosts 1
    	option nonegcache 0
    	option authoritative 1
    	option readethers 1
    	option leasefile '/tmp/dhcp.leases'
    	option resolvfile '/tmp/resolv.conf.auto'
    	option noresolv 1 # 添加此行禁用dnsmasq DNS功能

    3. 检查AdGuard Home是否实际监听目标端口

    执行以下命令查看AdGuard Home是否在监听5353端口:

    netstat -tuln | grep 5353

    预期输出示例:

    tcp6 0 0 :::5353 :::* LISTEN

    4. 防火墙规则检查

    确保LAN区域允许UDP/TCP流量通过自定义DNS端口(如5353)。可在防火墙规则中添加如下内容:

    config rule
    	option name 'Allow AdGuard Home DNS'
    	option src 'lan'
    	option proto 'tcp udp'
    	option dest_port '5353'
    	option target 'ACCEPT'

    5. 客户端DNS配置验证

    确保客户端配置了正确的DNS服务器IP和端口(如192.168.1.1#5353)。部分系统需手动指定端口,例如Linux下可使用resolvectl命令。

    6. 日志分析定位问题

    查看AdGuard Home日志,确认是否有启动失败或端口占用信息:

    logread | grep AdGuardHome

    也可以直接查看其日志文件(路径可能为/var/log/AdGuardHome.log)。

    四、流程图总结排查逻辑

    graph TD A[开始] --> B{AdGuard Home配置监听5353?} B -- 是 --> C{dnsmasq是否占用DNS端口?} C -- 否 --> D{防火墙放行5353端口?} D -- 是 --> E{客户端配置正确?} E -- 是 --> F[解析成功] B -- 否 --> G[修改AdGuard Home配置] C -- 是 --> H[禁用dnsmasq DNS功能] D -- 否 --> I[添加防火墙规则] E -- 否 --> J[修正客户端DNS设置]

    五、扩展建议与调试工具推荐

    工具名称用途说明
    tcpdump抓包分析DNS请求是否到达AdGuard Home
    dig @192.168.1.1 -p 5353 google.com测试指定端口的DNS解析能力
    nslookup跨平台测试DNS解析结果
    systemctl status AdGuardHome查看AdGuard Home服务状态
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

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