Pi-hole DNS 广告拦截系统搭建教程

Pi-hole 是一款基于 DNS 的网络级广告和追踪器拦截系统。与浏览器插件不同,Pi-hole 在网络层面工作,可以为所有连接到同一网络的设备提供广告拦截,包括手机 APP 中的广告、智能电视广告等浏览器插件无法拦截的内容。在搬瓦工 VPS 上部署 Pi-hole 后,将设备的 DNS 指向 VPS 即可享受全网广告拦截。部署前请确保已安装好 Docker 和 Docker Compose

一、系统要求

  • 操作系统:Ubuntu 20.04+ 或 Debian 11+。
  • 内存:512MB 即可。
  • 磁盘:至少 2GB 可用空间。
  • 端口:53(DNS)、80(Web 界面)需要开放。

二、准备工作

确保系统没有其他服务占用 53 端口。Ubuntu 默认运行 systemd-resolved,需要先禁用:

# 检查 53 端口占用
ss -lnp | grep :53

# 禁用 systemd-resolved
systemctl stop systemd-resolved
systemctl disable systemd-resolved

# 设置 DNS 解析
echo "nameserver 8.8.8.8" > /etc/resolv.conf

三、Docker Compose 部署

mkdir -p /opt/pihole/{etc-pihole,etc-dnsmasq.d}
cd /opt/pihole

cat > /opt/pihole/docker-compose.yml <<'EOF'
version: '3.8'

services:
  pihole:
    image: pihole/pihole:latest
    restart: always
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "8880:80/tcp"
    environment:
      TZ: 'Asia/Shanghai'
      WEBPASSWORD: 'your_admin_password'
      PIHOLE_DNS_: '8.8.8.8;8.8.4.4;1.1.1.1'
      DNSSEC: 'true'
      QUERY_LOGGING: 'true'
    volumes:
      - /opt/pihole/etc-pihole:/etc/pihole
      - /opt/pihole/etc-dnsmasq.d:/etc/dnsmasq.d
    cap_add:
      - NET_ADMIN
EOF

docker compose up -d

your_admin_password 替换为你自己的管理密码。

四、访问管理面板

访问 http://your-server-ip:8880/admin,使用设置的密码登录。管理面板提供以下功能:

  • Dashboard:总览查询次数、拦截次数、拦截率等统计数据。
  • Query Log:查看所有 DNS 查询记录和拦截记录。
  • Adlists:管理广告拦截列表。
  • Whitelist/Blacklist:手动添加白名单或黑名单域名。
  • Local DNS:配置本地 DNS 记录。

五、添加中文广告拦截列表

Pi-hole 默认自带基础拦截列表。对于中文互联网,建议添加以下额外列表。在管理面板 > Adlists 中添加:

# 常用的中文广告拦截列表 URL
https://anti-ad.net/easylist.txt
https://raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-easylist.txt

添加后执行更新:

docker exec pihole pihole -g

六、配置客户端 DNS

将设备的 DNS 服务器设置为搬瓦工 VPS 的 IP 地址即可开始使用 Pi-hole。

Windows

在网络适配器设置中,将首选 DNS 服务器改为 VPS 的 IP 地址。

macOS

在系统偏好设置 > 网络 > 高级 > DNS 中添加 VPS IP 地址。

iOS / Android

在 Wi-Fi 设置中手动配置 DNS 服务器为 VPS IP 地址。

路由器级别

在路由器的 DHCP 设置中将 DNS 服务器改为 VPS IP,这样整个局域网内的设备都会自动使用 Pi-hole。

七、DNS over HTTPS(DoH)

为了加密 DNS 查询,可以配置 Pi-hole 使用上游 DoH。安装 cloudflared 作为 DoH 代理:

cat >> /opt/pihole/docker-compose.yml <<'EOF'

  cloudflared:
    image: cloudflare/cloudflared:latest
    restart: always
    command: proxy-dns --address 0.0.0.0 --port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query
EOF

docker compose up -d

然后在 Pi-hole 设置中将上游 DNS 改为 cloudflared#5053

八、白名单管理

有时 Pi-hole 可能会误拦截正常网站。可以通过管理面板的 Whitelist 页面或命令行添加白名单:

# 添加白名单
docker exec pihole pihole -w example.com

# 批量添加白名单
docker exec pihole pihole -w domain1.com domain2.com domain3.com

# 查看白名单
docker exec pihole pihole -w -l

九、数据备份

# 通过 Pi-hole 内置功能备份
docker exec pihole pihole -a -t

# 手动备份配置目录
tar -czf /opt/pihole/backup_$(date +%Y%m%d).tar.gz /opt/pihole/etc-pihole/ /opt/pihole/etc-dnsmasq.d/

十、常见问题

DNS 解析速度慢

Pi-hole 有内置缓存机制,首次查询可能稍慢,后续查询会从缓存返回。可以在 /opt/pihole/etc-dnsmasq.d/ 中增大缓存:

echo "cache-size=10000" > /opt/pihole/etc-dnsmasq.d/99-custom.conf
docker compose restart

某些网站无法访问

在 Query Log 中检查该域名是否被拦截,如果是误拦截则添加到白名单中。

安全提醒

将 DNS 服务暴露在公网上有被滥用的风险。建议通过防火墙限制只允许特定 IP 访问 53 端口:

ufw allow from your_home_ip to any port 53
ufw deny 53

总结

Pi-hole 是一款强大的网络级广告拦截工具,在搬瓦工 VPS 上部署后可以为所有设备提供广告过滤服务。它不仅能屏蔽广告,还能阻止追踪器和恶意域名,提升网络安全性和浏览速度。如果你需要更现代化的界面和功能,也可以考虑 AdGuard Home。选购搬瓦工 VPS 请参考全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的循环折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。