699 字
3 分钟
安装adguardhome
2025-10-23

前言#

今天上午突然想到之前软路由上装AdguardHome,现在笔记本操作系统都换上Arch了,广告过滤还是有点意义的,开搞

我采用直接在Linux上安装,不使用Docker等方式

以下简称AdguardHome为ADG

安装过程#

NOTE

在root用户下执行

命令行安装#

NOTE

请确保你可以快速访问外网,负责安装过程会很慢

  • curl安装
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
  • wget安装
wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
  • fetch安装
fetch -o - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

手动安装#

cd Downloads
tar -zxf AdGuardHome_linux_amd64.tar.gz
  • 配置工作目录和配置文件目录
# 设置ADG工作目录为/usr/local/bin
cp AdguardHome /usr/local/bin
# 创建ADG配置文件目录
mkdir -p /usr/local/etc/AdguardHome
# ADG安装
# [未测试]这里感觉通过安装时加上-w 参数,指定安装目录应该也可以
# ./AdguardHome -s install -W /usr/local/etc/AdguardHome
./AdguardHome -s install
# 停止ADG服务
systemctl stop AdGuardHome.service
# 修改ADG的service配置
# -c config文件位置
# -w --work-dir
vim /etc/systemd/system/AdGuardHome.service
ExecStart=/usr/local/bin/AdGuardHome -s run -c /usr/local/etc/AdguardHome/AdGuardHome.yaml -w /usr/local/etc/AdguardHome
# 重启服务
systemctl daemon-reload
systemctl start AdGuardHome.service

配置DNS和过滤规则#

初始化#

  • 访问: http://127.0.0.1:3000
    • 配置用户名和密码(密码长度不低于8位)
    • 如果遇到其他进程占用53端口
      • sudo lsof -i:53 排查进程

DNS#

  • 设置/DNS设置
上游DNS服务器
https://dns.alidns.com/dns-query
https://doh.pub/dns-query
  • 并行请求
后备 DNS 服务器
119.29.29.29
223.5.5.5
Bootstrap DNS 服务器
114.114.114.114
119.29.29.29
223.5.5.5
223.6.6.6
2400:3200::1
2400:3200:baba::1
2402:4e00::

过滤器#

  • 过滤器/DNS黑名单
  • 添加黑名单/从列表中选择
  • 区域/CHN: anti-AD

一般一条anti-AD就够了,不需要那么多规则

遇到的问题#

53端口占用#

我配置了libviretd自启动,并两个virbr网卡,libvirtd会启动dnsmasq对虚拟机进行dhcpdns服务

不要尝试修改dnsmasq的配置文件,因为你编辑的时间会发现它是由libvirtd生成,重启就是失效了

解决思路:

  • 将两个virbr配置为不提供DNS

实际操作:

sudo EDITOR=vim virsh net-edit default
# 在</dhcp>和</network>块之间加上
<dns enable='no'/>
# host-only 网络同样操作
# 删除并重建网络
sudo virsh net-destroy default
sudo virsh net-start default

无DNS查询记录#

就是你浏览器一直刷新,但是ADG面板上没有DNS查询日志

我这里使用的网络管理工具是NetworkManager,它默认使用上游路由器传过来的DNS

你修改/etc/resolv.conf时会发现,这个文件由NetworkManager自动生成

解决思路:

  • 创建NetworkManager的dns.conf,禁用DNS

实际操作:

sudo echo -e '[main]\ndns=none' /etc/NetworkManager/conf.d/dns.conf
sudo systemctl restart NetworkManager

参考资料#

[Github]官方安装方式

https://github.com/AdguardTeam/AdGuardHome?tab=readme-ov-file#automated-install-linux-and-mac

ADG文档/入门

https://adguard-dns.io/kb/zh-CN/adguard-home/getting-started/

腾讯云 DNSPod

https://www.dnspod.cn/products/publicdns

阿里云公共DNS

https://www.alidns.com/

DNS排查工具

[AUR] dnsloopup 工具

https://aur.archlinux.org/packages/dnslookup-bin

[extra] bind 软件包

https://archlinux.org/packages/extra/x86_64/bind/

[reddit] adguard与libvirt-dnsmasq冲突

https://www.reddit.com/r/unRAID/comments/otabey/adguard_in_host_mode_conflicting_with/?tl=zh-hans

[serverfault] 关闭libvirtd中dnsmaqs组件的dns监听port

https://serverfault.com/questions/937188/disable-or-change-port-of-dnsmasq-service-in-libvirt

安装adguardhome
https://v0nl1.com/posts/adguardhome/
作者
V0nl1
发布于
2025-10-23
许可协议
CC BY-NC-SA 4.0