善用开源, 用AdGuard Home搭建私有DNS服务

上篇文章, 稍微讲了下什么是DNS, 以及什么情况下你可能需要搭建一个自己的DNS服务. 这篇文章承接上篇文章, 主要详细介绍如何基于开源的AdGurad Home来搭建一个你的私有DNS服务

1. 明确需求

首先需要再次明确的是, 搭建一个私有的DNS服务是有适应场景的, 建议在以下几个场景中你完全可以考虑搭建一个私有的DNS服务

  • 在你的家庭网络中搭建一个私有的DNS解析, 主要用来保护你家人的上网健康
  • 在公司或团队中搭建一个私有的DNS解析, 主要用来做公司层面的私有服务解析

如果只是你个人使用, 并无太大必要. 直接使用公有的DNS解析就足够了.

但是无论是哪种情况, 搭建一个私有的DNS需要一台私有服务器. 比如我是在自己的家庭服务器上安装的这个服务.

2. AdGuard Home简介

先介绍下AdGuard Home

AdGuard Home是adguard推出的一款工具, adguard是一家专门网络安全与隐私保护的公司. 公司名下有很多广告过滤的产品, 比如我的Chrome上也安装了adguard的广告过滤插件.而AdGurad Home是它推出的开源免费的隐私保护与广告过滤工具.

与Chrome上的广告插件相比, AdGuard Home特点表现在:

  • 它是在DNS层级上做隐私保护以及广告拦截.
  • 你只需要安装它, 通过路由器的DNS用它来解析, 就自动保护所有联网设备
  • 支持DNS自定义解析等DNS扩展能力

所以, 简而言之, AdGuard Home是一个DNS解析服务, 它通过在DNS解析层面来过滤广告, 恶意网站等.

它的原理比较很简单, 一般是通过域名黑名单来实现. 恶意网站或广告网站对它的DNS不做正常解析就行了

3. 安装

这个部分主要讲解如何安装Adgurad Home.

前提条件

安装之前需要考虑以下前提条件的:

  • 你需要一台服务器,当然最好是Linux, 能用来安装Adgurad Home
  • 建议使用Docker来安装, 因此你需要在Linux上搭建好docker环境

Docker环境

我还是那个建议, 能基于Docker来部署, 就不要使用其它方式. Docker部署简单, 易于操作, 并且尽量降低各种环境与依赖

Docker以及Docker Compose, 如果没有请自行查阅官方.

新建目录

在你的Linux某个目录下, 创建一个adguardhome目录 (当然你可以修改其它任何目录名)

在这个目录下, 创建confdir以及workdir两上目录,以下一个docker-compose.yml文件. 结构如下

.├── confdir├── docker-compose.yml└── workdir

解释如下:

  • confdif: 配置目录
  • workdir: AdGurad Home运行产生的数据目录. 比如数据, DNS缓存等
  • docker-compose.yml: docker compose配置文件

编辑docker-compose.yml

编辑你的docker-compose.yml文件,内容如下:

version: "3.9"
services: adguardhome: image: adguard/adguardhome:latest restart: always container_name: adguardhome ports: - 53:53/tcp - 53:53/udp - 3000:3000/tcp volumes: - ./workdir:/opt/adguardhome/work - ./confdir:/opt/adguardhome/conf

几个重要参数说明:

  • ports: 开放53的TCP以及UDP端口. 53是DNS的默认端口. 3000是Web管理端口
  • volumes: 挂载我们刚刚创建的两个目录, 这样docker容器重启时, 相关数据就不会丢失.

开放端口

如果你的Linux有防火墙, 比如我的Debian都会有UFW. 那你需要开放端口

sudo ufw allow 53sudo ufw allow 3000

运行

使用如下命令来启动运行服务

sudo docker compose up -d

第一次可能会因为下载镜像需要一些时间, 一切正常很快就能启动

关闭Linux的默认resolved

如果启动时, 报53端口已被占用. 那是因为部分Linux自带了一个resolved服务, 也是做域名解析的的.

我们使用了AdGurad Home, 就不需要这个了. 把它停掉

sudo systemctl disable systemd-resolvedsudo systemctl stop systemd-resolved

4. 初始化

启动成功后, 访问http://ip:3000, 第一次会进入一个配置页面. 这个配置页面会要求我们初始化用户名密码及一些常规配置.

设置端口

在这一步, 设置你刚在docker文件中的端口. 我们的是3000和53

  • 3000是Web管理端口
  • 53是DNS默认端口
善用开源, 用AdGuard Home搭建私有DNS服务

创建用户名密码

这一步, 设置你的用户名和密码. 后面你需要使用这个用户名和密码来登录这个系统

善用开源, 用AdGuard Home搭建私有DNS服务

完成

完成上述几个简单的步骤, 设置就完成了

善用开源, 用AdGuard Home搭建私有DNS服务

5. 设置

其实, 完成这一步后, 这个DNS解析默认就可以使用了, 开箱即用.

但很可惜, 在国内, 由于众所周知的原因, AdGurad Home中默认的上游DNS解析服务器很可能是访问不了的. 所以我们要修改上游DNS解析服务器

进入设置-DNS设置界面

善用开源, 用AdGuard Home搭建私有DNS服务

如上图所示, 在这里, 将上游的DNS服务器, 修改为你能够访问的一些知名可靠的DNS服务.

  • 1.1.1.1
  • 1.0.0.1

在这个设置中, AdGurad Home提供了一个已知DNS提供商列表, 建议从这里找你访问速度较快的.

你可以添加一个或多个上游DNS服务. 比如国外一个, 国内一个. 国外优先. 这样更有保障.

建议

***尽量使用国外DNS做DNS上游服务器. ***

原因当然很容易理解, 我们本来就是希望自建DNS来尽量避免DNS劫持与DNS污染. 如果仍然使用国内DNS做上游, 这个就解决不了问题.

当然,你不需要担心国外DNS会不会速度很慢, AdGurad Home本身是一个DNS服务, 只有在本地没有缓存记录的情况下, 才会向上游DNS请求解析的. 这意味着, 除了第一次或缓存过期等极少数情况, 大部分时间域名的解析是非常快的. 是由AdGuard Home承担的.

验证

设置完上游DNS服务器后, 保存下你的设置. 然后使用nslookup来测试下它的正常性

# 将127.0.0.1改成你的AdGurad Home所在服务器的IPnslookup google.com 127.0.0.1

你会看到如下结果

Server:		127.0.0.1Address:	127.0.0.1#53
Name: google.comAddress: 8.7.198.46Name: google.comAddress: 8.7.198.46

你得到了Google.com正确的DNS解析. 这证明AdGurad Home已经生效了.

6. 更多

隐私保护与广告拦截

DNS域名解析是AdGurad Home的核心能力. 但AdGurad Home这个产品的本意是基于DNS域名解析层面来做隐私保护与广告过滤.

其实原理比较简单, 它有一个DNS黑名单, 这些黑名单的域名可能是恶意广告或广告网站, 遇到这个黑名单中的域名, 它解析DNS时, 会返回错误的IP.

这样就访问不了这些恶意网站及广告了. (很多广告联盟有固定的一些域名, 屏蔽这些域名就无法在网页上投放广告了)

善用开源, 用AdGuard Home搭建私有DNS服务

进入过滤器->DNS黑名单, 在这里添加或维护域名黑名单. AdGuard Home默认已经提供了一份. 你也可以在互联网上寻找一些知名的公开的类似的维护列表.

DNS自定义解析

如果你是公司中使用, 可能会遇上需要解析一些内部域名.

这个时候,在过滤器->DNS重写中, 可以添加自定义解析.

善用开源, 用AdGuard Home搭建私有DNS服务

日志

前几天有人私信问我DNS解析日志方面的事.

AdGurad Home自带了完整的日志, 你可以通过查询日志模块, 来访问与查询所有日志. 这里有完整的日志.

善用开源, 用AdGuard Home搭建私有DNS服务

6. 最后的设置

其实, 到这一步, 我们已经成功搭建了一个完整的DNS服务. 但DNS服务要生效, 得联网设备修改它的DNS地址指向我们的服务器IP.

如果需要别人每个设备一个一个修改, 这就非常麻烦了.

好在, 大多数情况下, 我们其实都是通过路由器来上网. 所以, 方便的方式是修改路由器中的默认DNS服务地址, 指向我们刚刚建立的这个DNS服务.

只需要输入这个AdGuard Home的IP, 你整个家庭的所有上网设备, 或整个公司所有的上网设备, 就自动使用这个DNS解析的了.

是不是非常方便?

相比其它一些自建DNS解决方案, AdGurad Home是我见过最简单, 最容易部署与设置的DNS解析的服务工具. 除了部署需要一点Linux及Docker能力以外, 普通人使用这个工具完全没有障碍.

AdGurad Home是一个基于GO语言实现的开源项目. 向adgurad公司以及开源致敬.

原文始发于微信公众号(微言码道):善用开源, 用AdGuard Home搭建私有DNS服务

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/248632.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!