背景与动机

随着 HomeLab 服务的增多(如 PVE 面板、Aria2 等),单纯通过 IP+端口访问已显笨拙。同时,终端广告和 DNS 劫持严重影响了使用体验。

本文旨在通过在 PVE 中建立一套中心化的 DNS 逻辑,实现以下目标:

  1. 去广告:在 DNS 层级拦截广告域名。
  2. 内网映射:通过私有后缀(如 .home)访问内网资源。
  3. 性能优化:通过缓存常用域名解析结果,提升响应速度。

环境准备

  • 宿主机:Proxmox VE 8.4
  • 容器:Alpine Linux (LXC)
    • 优势:极低的资源占用(通常内存占用 < 50MB),适合作为基础网络设施。
  • 核心组件:AdGuard Home (v0.107+)

容器部署与基础环境

创建 LXC 容器

在 PVE 菜单中创建 CT,选择 Alpine 镜像。建议分配:

  • CPU: 1 核
  • 内存: 512MB (实际使用远低于此)
  • 硬盘: 2GB (Rootfs)
  • 网络: 静态 IP 192.168.1.53,网关 192.168.1.1

基础环境初始化

登录容器后,更新软件源并安装基础工具:

1
2
apk update && apk upgrade
apk add curl wget ca-certificates

安装与配置 AdGuard Home

自动化安装

执行官方安装脚本:

1
curl -s -S -L [https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh](https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh) | sh -s -- -v

(注:若国内拉取缓慢,建议预先在宿主机下载二进制文件并拷贝进容器。)

初始设置

访问 http://192.168.1.53:3000 进入 Web 安装界面:

  • 监听端口:Web 界面设为 80,DNS 服务器监听 53 端口。

  • 上游 DNS 设置

    为了保证解析速度,建议配置混合上游 DNS:

    1
    2
    3
    4
    https://dns.alidns.com/dns-query
    https://doh.pub/dns-query
    223.5.5.5
    119.29.29.29

规则集

这是本次部署的核心。默认的规则库地址多为 GitHub Raw 链接,国内拉取极不稳定。

引入 anti-AD 规则

进入 过滤器 -> DNS 拦截列表,添加 anti-AD

  • 优化方案:弃用原 GitHub 链接,改用国内高可用镜像加速节点。

  • URL 地址

    https://mirror.ghproxy.com/https://raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-easylist.txt

配置自动更新

设置 -> 常规设置 中,将“过滤器更新间隔”设为 24 小时。利用镜像节点,AdGuard Home 将在后台静默完成每日规则迭代。

局域网 DHCP 劫持

为了让全家设备(手机、电视盒子、PC)免配置生效,需在主路由(以中兴路由器为例)进行设置。

配置流程

进入路由器后台:**网络 -> 局域网配置 -> IPv4 (LAN)**。

  • 主 DNS 服务器192.168.1.53
  • 备用 DNS 服务器0.0.0.0 (强制全量经过 AGH) 或 192.168.1.1 (高可用兜底)

验证生效

在 PC 终端执行:

1
nslookup baidu.com

若返回的 Server 项显示为 192.168.1.53,则说明劫持成功。

内网域名重写 (DNS Rewrite)

进入 AGH 后台:过滤器 -> DNS 重写

添加规则以解决内网 IP 难记的问题:

  • pve.home -> 192.168.1.100
  • blog.home -> 192.168.1.101

此后,局域网内直接输入 http://pve.home:8006 即可访问 PVE 宿主机。

常见问题排障

  1. LXC 网络不通

    检查 PVE 侧防火墙设置,确保 UDP 53 端口未被拦截。

  2. DNS 泄漏

    部分 Android 手机会自带“私人 DNS”设置(DoH),需手动在手机端关闭,否则会绕过 AGH。

总结

通过本次实践,我们建立了一套以 Alpine LXC 为底座、以 AdGuard Home 为逻辑核心的家庭解析系统。它不仅干掉了烦人的开屏广告,更通过 DNS 重写为未来的内网反向代理(如 Nginx Proxy Manager)做好了铺垫。