前言
今天上午突然想到之前软路由上装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手动安装
- 去github项目release页面,下载压缩文件
- 命令行解压
cd Downloadstar -zxf AdGuardHome_linux_amd64.tar.gz- 配置工作目录和配置文件目录
# 设置ADG工作目录为/usr/local/bincp 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-dirvim /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-reloadsystemctl start AdGuardHome.service配置DNS和过滤规则
初始化
- 访问: http://127.0.0.1:3000
- 配置用户名和密码(密码长度不低于8位)
- 如果遇到其他进程占用53端口
sudo lsof -i:53排查进程
DNS
设置/DNS设置
https://dns.alidns.com/dns-queryhttps://doh.pub/dns-query- 并行请求
119.29.29.29223.5.5.5114.114.114.114119.29.29.29223.5.5.5223.6.6.62400:3200::12400:3200:baba::12402:4e00::过滤器
过滤器/DNS黑名单添加黑名单/从列表中选择区域/CHN: anti-AD
一般一条anti-AD就够了,不需要那么多规则
遇到的问题
53端口占用
我配置了libviretd自启动,并两个virbr网卡,libvirtd会启动dnsmasq对虚拟机进行dhcp和dns服务
不要尝试修改dnsmasq的配置文件,因为你编辑的时间会发现它是由libvirtd生成,重启就是失效了
解决思路:
- 将两个
virbr配置为不提供DNS
实际操作:
sudo EDITOR=vim virsh net-edit default
# 在</dhcp>和</network>块之间加上
<dns enable='no'/>
# host-only 网络同样操作
# 删除并重建网络sudo virsh net-destroy defaultsudo 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
阿里云公共DNS
DNS排查工具
[AUR] dnsloopup 工具
https://aur.archlinux.org/packages/dnslookup-bin
[extra] 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