AdGuard Home 迁移实录:从香港服务器搬到国内阿里云

AdGuard Home 迁移实录:从香港服务器搬到国内阿里云

234
234
2026-10-01 / 0 评论 / 13 阅读 / 1206 字 / 正在检测是否收录...

最近把 AdGuard Home 从香港服务器迁到了国内阿里云(乌兰察布),起因是安卓手机私人 DNS 突然连不上:香港服务器的 853 端口(DoT)跨境握手被干扰,服务端明明回 SYN-ACK 却出不了境,手机端一直显示"无法连接"。折腾了一晚上,把这次迁移的坑记录下来,给同样自建 DNS 的朋友避雷。

一、数据迁移清单

AdGuard Home 的完整状态其实就三样:

  • AdGuardHome.yaml(配置文件:上游、规则、Web 设置)
  • data/ 目录(querylog、stats 等)
  • 证书(DoT/DoH 用的 cert.pem / key.pem)

打包成一个 tar.gz 拷到新机解压即可,权限保持 root。注意证书目录权限:AGH 用 root 跑,证书文件可读即可。

二、最容易漏的:过滤规则源服务

我的 AGH 过滤规则列表 URL 配置的是 http://127.0.0.1:38080/merged-block.txt,原服务器上是一个本地 HTTP 服务(busybox httpd)在提供这个文件。迁移到新机后这个服务没了,AGH 启动时报:

filtering: updating filter ... dial tcp 127.0.0.1:38080: connect: connection refused

规则更新失败不影响 DNS 查询,但新规则永远加载不进去。解决:在新机用 nginx 补一个 127.0.0.1:38080 的站点,root 指向规则目录即可,记得目录权限要对(nginx worker 是 nobody,目录要 755)。

三、443 分流(DoH + 博客共存)

一台机器同时跑博客和 AGH 时,用 nginx 的 SNI 分流:dns 子域的 443 流量转给 AGH 的 DoH(1443),www/根域转给博客的 TLS。这样 443 一个端口各取所需,证书各自独立。

四、时钟!时钟!时钟!

新机系统时间没同步,比真实时间快了 8 小时,导致 AGH 日志时间戳全部错乱,排查日志时差点误判"没有新日志"。装 chrony 一校准,立刻正常:

apk add chrony
rc-service chronyd start
rc-update add chronyd default

五、日志"不显示"的真相

迁移后后台看不到新日志,折腾半天发现是浏览器还连在旧服务器上(DNS 缓存没过期)。旧机停掉、刷新页面后一切正常。遇到日志不对,先确认自己连的是哪台机器。

总之:数据打包、规则源、443 分流、时钟、验证,五步走完,DNS 服务无缝搬家。

0个赞
取消