You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨子网DNS请求失败排查:UISP EdgeRouter X下PiHole无响应

网络DNS访问故障排查问题

网络环境

  • 主PC(地址10.1.1.1)和自制PiHole设备(地址10.0.0.1)均连接UISP EdgeRouter X
  • PC网关:10.1.1.254/24,对应路由器eth1端口
  • PiHole网关:10.0.0.254/24,对应路由器eth0端口

故障现象

  • 已通过防火墙规则实现PC到PiHole的SSH、HTTP(S)访问,但DNS端口53完全无法连通
  • 防火墙规则统计中能看到SSH/HTTP(S)流量,无任何DNS流量记录
  • 工具测试报错:
    • 使用drill:Error: error sending query: Could not send or receive, because of network error
    • 使用doggo:error="read udp 10.1.1.1:57260->10.0.0.1:53: i/o timeout"
  • 禁用所有防火墙规则并设置全ACCEPT后,DNS请求仍无响应,PiHole使用dnsmasq服务

排查方向及解决建议

1. 检查PiHole的DNS监听配置

登录PiHole设备,确认dnsmasq是否对外网口监听:

  • 编辑/etc/dnsmasq.conf,查看listen-address参数,必须包含10.0.0.1,不能只写本地回环127.0.0.1
  • 执行命令验证监听状态:
    netstat -tulpn | grep :53
    
    确保输出里有10.0.0.1:53的TCP和UDP监听记录

2. 检查PiHole本地防火墙

PiHole自身的防火墙(如ufw)可能拦截53端口:

  • 执行sudo ufw status查看现有规则,确认允许10.1.1.0/24网段访问TCP/UDP 53端口
  • 若未配置,添加规则:
    sudo ufw allow from 10.1.1.0/24 to any port 53 proto tcp
    sudo ufw allow from 10.1.1.0/24 to any port 53 proto udp
    

3. 检查EdgeRouter X的路由配置

确认路由器存在跨网段的正确路由:

  • 登录EdgeRouter X,执行show ip route,检查10.0.0.0/24和10.1.1.0/24的路由条目是否指向对应物理端口
  • 若缺少路由,手动添加示例(根据实际端口调整):
    set protocols static route 10.0.0.0/24 interface eth0
    set protocols static route 10.1.1.0/24 interface eth1
    

4. 验证DNS协议连通性

DNS默认用UDP,优先确认UDP端口的连通性:

  • 在PC上执行dig @10.0.0.1 google.com,直接指定PiHole作为DNS服务器测试
  • 用nc -u 10.0.0.1 53测试UDP端口,输入任意字符回车,查看是否有响应

5. 检查EdgeRouter X的NAT配置

避免跨网段流量被错误NAT转换:

  • 执行show nat rules,确认没有针对10.1.1.0/24到10.0.0.0/24的NAT规则
  • 若存在无关NAT规则,直接删除

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:13:37