引言
你是否已经受够了手机上每个应用、智能电视上每个视频前强行插入的广告?浏览器插件固然好用,但它无法保护你网络中的其他设备。是时候升级你的解决方案了——在网络层级上一劳永逸地解决这些问题。
今天,我们将利用Proxmox VE(PVE)的超轻量级虚拟化技术LXC,来部署一个名为AdGuard Home的核心工具。LXC运行AdGuardHome 的方案,相比在虚拟机或单独硬件上运行,具有资源占用极低、性能无损、管理备份便捷的巨大优势。只需一台PVE服务器,不到十分钟,你就能为全家建立一个高速、私密的DNS解析中心,告别广告与追踪器的困扰。
让我们开始吧!
为什么选择 LXC
AdGuardHome是一个典型的、轻量级的单点网络服务。它的特点决定了它是LXC容器化的完美候选者:
- 资源需求稳定:它不需要大量的计算资源,但要求低延迟和高稳定性。LXC的轻量特性正好满足。(只需给容器分配 256MB 的内存便绰绰有余)
- 需要高可用性:作为家庭网络的核心DNS服务器,它必须可靠。LXC的快照和备份功能使得维护和灾难恢复变得非常简单。
- 网络配置简单:它只需要一个静态IP和暴露几个端口(53, 3000等)。LXC的网络桥接模式使其就像一台物理机一样简单自然地接入家庭网络。
通过 LXC 部署 AdGuardHome
创建容器
- PVE容器(CT)配置: 在PVE管理界面中创建Debian/Ubuntu系统的LXC容器,分配至少512MB内存及2GB存储空间。网络设置需绑定固定IP(如192.168.10.223/24)(因为 DNS 服务器的工作依赖静态地址)(你的网关地址可能不是 192.169.10.x,请依据自身情况设置,并将 IP 分配在 DHCP 范围外的地址,一般是 100~200 外),网关指向主路由,DNS服务器设置为公共DNS(如223.5.5.5)以避免初始解析失败。
确保自己开放了以下端口:
- 53(DNS解析)
- 3000(Web管理界面)
- 80/443(可选,用于HTTPS重定向)
安装 AdGuardHome
AdGuardHome 支持 Docker 部署,但本文使用源码部署的的方式。(用 Docker 的话都没必要出教程了)不过如果您想使用 Docker 或 Snap,可以查看这里:官方 AdGuard Home Docker 镜像和官方 Snap 商店软件包。
以下文字摘自官方文档:
从最新的稳定版发布页面下载包含适用于您的操作系统的二进制文件的压缩包。 在我们的平台页面上可以查看支持服务的平台完整列表,以及 Beta 和 Edge(不稳定)版本的链接。
要将 AdGuard Home 安装为服务,请解压压缩包,进入 AdGuardHome 目录,然后运行以下命令:
./AdGuardHome -s install
注意
- Fedora Linux 及其衍生产品的用户:在
/usr/local/bin目录中安装 AdGuard Home。 如果不这样做,会导致 SELinux 和权限问题。 请参阅 issue 765 和 issue 3281。 - macOS 10.15 Catalina 及更新版本的用户应将 AdGuard Home 工作目录放在
/Applications目录中。
初始化 AdGuardHome
浏览器中访问 <LXC IP>:3000,按照提示进行设置管理员账号并设置监听地址。
如果出现 127.0.0.1 地址已被监听,可以尝试换一个监听地址(对正常使用没什么影响)
如何更新程序
当有新版本发布时,管理面板会有更新提示,仅需点击一下更新按钮,几秒后便更新完成了。
程序配置
上游 DNS 与 DNS 黑名单设置
可以参考我这篇文章:https://www.pyrzo.com/posts/my-adguardhome-dns-settings-and-blacklist/
我第一次安装遇到了 DNS 根本无法使用的情况,后来发现是上游 DNS 没配置的问题。如果你页遇到了一样的情况,可以尝试自己配置一下上游。
常见问题解答
Q1: 启动 AdGuard Home 时提示 Couldn't listen to port 53 on 0.0.0.0: listen tcp 0.0.0.0:53: bind: permission denied 错误怎么办?
A: 这是最常见的问题。在 Linux 系统中,绑定 1024 以下的端口(如 DNS 的 53 端口)需要 root 权限。虽然我们的容器以 root 用户运行,但无特权容器 (Unprivileged Container) 默认没有被授予这些权限。
您可以按如下操作解决它:
sudo setcap 'cap_net_bind_service=+ep' /opt/AdGuardHome/AdGuardHome
这个命令赋予 AdGuardHome 可执行文件直接绑定低端口的能力。完成后重启 AdGuard Home 服务即可。sudo systemctl restart AdGuardHome
可供参考的链接
文章中出现的链接:
https://www.pyrzo.com/posts/my-adguardhome-dns-settings-and-blacklist/
参考文章:
https://www.bilibili.com/opus/1057417057092501504
版权申明
- 本文作者:光昭
- 本文链接:https://www.pyrzo.com/posts/pve-lxc-adguardhome-dns
- 封面出处:#One_Last_Kiss One Last Kiss - 少女人的插画 - pixiv
- 版权声明:所有文章除特别声明外均系本人自主创作,转载及引用请联系作者,并注明出处(作者、原文链接等)。
- 部分图片搜集于网络,若构成侵权请联系我,会尽快删除图片
Comments NOTHING