首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >善用开源, 用AdGuard Home搭建私有DNS服务

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

作者头像
御剑
发布于 2024-01-29 07:41:11
发布于 2024-01-29 07:41:11
7.7K13
代码可运行
举报
文章被收录于专栏:微言码道微言码道
运行总次数:3
代码可运行

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文件. 结构如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.
├── confdir
├── docker-compose.yml
└── workdir

解释如下:

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

编辑docker-compose.yml

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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. 那你需要开放端口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo ufw allow 53
sudo ufw allow 3000

运行

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo docker compose up -d

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

关闭Linux的默认resolved

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

4. 初始化

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

设置端口

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

  • 3000是Web管理端口
  • 53是DNS默认端口

创建用户名密码

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

完成

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

5. 设置

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

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

进入设置-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来测试下它的正常性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 将127.0.0.1改成你的AdGurad Home所在服务器的IP
nslookup google.com 127.0.0.1

你会看到如下结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Server:		127.0.0.1
Address:	127.0.0.1#53

Name:	google.com
Address: 8.7.198.46
Name:	google.com
Address: 8.7.198.46

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

6. 更多

隐私保护与广告拦截

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

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

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

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

DNS自定义解析

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

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

日志

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

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

6. 最后的设置

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

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

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

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

是不是非常方便?

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微言码道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
可惜啊,用腾讯的你刚开53他立马封机器。其他家屁事没。
可惜啊,用腾讯的你刚开53他立马封机器。其他家屁事没。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
使用AdGuard Home搭建一个无广告和跟踪的公共DNS
简单点说AdGuard Home就是一个公共DNS服务,如Google的公共DNS8.8.8.8,和DNSmasq一样AdGuard Home是开源的,可以自行搭建安装后在客户端配置使用。xiaoz之前分享过一个自己写的项目PHPDNS ,PHPDNS在DNSmasq的基础上开发了WEB界面,功能比较简单,不过该项目不在维护,这里推荐功能更加强大的AdGuard Home
星哥玩云
2022/08/13
4.9K0
使用AdGuard Home搭建一个无广告和跟踪的公共DNS
用腾讯云服务器搭建属于你的AdGuard Home与AdGuard Home的设置
用SSH工具连接服务器,在终端按顺序输入如下命令即可手动编译安装AdGuard Home
MoraEX
2022/04/08
18.4K3
用腾讯云服务器搭建属于你的AdGuard Home与AdGuard Home的设置
AdGuard Home:搭建去广告DNS | 树莓派
AdGuard Home 项目是著名广告拦截器 AdGuard 里 DNS Server 的一个开源版本。该项目的原理是,在 DNS 的域名解析的过程里拦截网页上的广告。
uniartisan
2022/03/03
6.6K0
AdGuard Home:搭建去广告DNS | 树莓派
OpenWrt配置双AdGuard实现DNS国内外分流
从去年改造了家里的网络到现在都很稳定,但是最近自建的出墙偶尔抽风,我一直使用的Hysteria协议,发现有版本升级,于是升级了服务端,最后发现还是不丝滑,发现是我现在用的openwrt中的passwall插件不支持端口跳跃功能, 所以在恩山论坛找了个最新的OpenWrt固件进行安装,前段时间刷到了一个利用双AdguardHome分流国内外DNS解析,说这样可以防DNS污染,反正这次要升级OpenWrt,所以就折腾了一下,为了保持以前服务正常使用,我直接重新启动了一个OpenWrt,等觉得没问题再销毁全部切换过来,本篇记录自己踩的坑,当水篇文章了~。
Lcry
2023/06/14
18.6K0
OpenWrt配置双AdGuard实现DNS国内外分流
宝塔面板利用Adguardhome搭建私人dns
Adguard Home是一款开源的广告拦截器和网络过滤器,可以在路由器上运行,用于保护所有连接到该路由器的设备免受广告和跟踪的侵害。它使用先进的过滤技术和大量的过滤规则来阻止广告和恶意网站的加载,并提供许多定制选项,以帮助用户获得最佳的网络体验。 Adguard Home还可以用于管理和监控网络流量,并具有防止DNS污染和加密DNS流量的功能。
曈曈too
2023/02/27
5K0
宝塔面板利用Adguardhome搭建私人dns
善用开源, 搭建你的私有DNS服务
在互联网的时代, DNS解析是非常重要的一环. 没有好的可靠的DNS解析, 你的上网体验会变得非常差劲与糟糕.
御剑
2024/01/23
3.6K0
善用开源, 搭建你的私有DNS服务
屏蔽广告?从源头入手(自建公网DNS“指北“)
引言:在如今的网络环境下,特别是中国各个大厂”流氓式“广告投放以及隐私追踪横行霸道的情况下,想必各位的家里老人或者对电子产品比较生疏的人的手机上没有合理的控制措施,即使是旗舰机(特指安卓,iOS相对封闭)都能卡成🐕,我自建DNS的想法便来自于自己家里几个老人手机上五毒俱全时 想出的解决方案。 || 使用公网的目的出于当家人出门后本地DNS解析器便不再起作用。 一、自建DNS解析器 adguard home 1.材料准备(公网):灵活的思维能力 充足的动手能力 境内公网服务器 SSL证书(本地搭建可以
Tianli
2023/03/03
9.3K0
屏蔽广告?从源头入手(自建公网DNS“指北“)
AdGuard搭建去广告公共DNS
AdGuard 是摆脱恼人广告、在线跟踪,保护您远离恶意软件的最佳选择。AdGuard 使您网络冲浪更快速,更安全,更便捷!
星哥玩云
2022/05/27
4.7K0
AdGuard搭建去广告公共DNS
搭建AdGuard Home无广告及跟踪的DNS解析服务器
安装完成后可以在浏览器中输入以下内容,在端口3000(防火墙需要开通对应的端口)上访问AdGuard Home Web界面 http://xxxx:3000/,将xxxx替换为服务器的公网IP地址。
zeruns
2020/03/23
7.7K0
一个基于.NET7的开源DNS服务 DnsServer 的部署使用经验分享
和上文一样,需求是需要配置 dns 以将 test.com 解析到 192.168.123.214 中
易墨
2023/11/07
2K0
一个基于.NET7的开源DNS服务 DnsServer 的部署使用经验分享
内网私有域名解析
  大家可能知道,在网络被发明出来之后一段时间,大家采用 IP + Port 的方式一起共享资源。后来随着资源越来越多,这样一种方式显得非常不友好。比如说,现在有 254 个 IP,每个 IP 上有 20 个 Web 应用,那么我们就必须记住 5080 个 IP + Port 的组合,简直太折磨人了。于是在 1983 年,保罗・莫卡派乔斯发明了域名解析服务和域名服务(DNS,Domain Name System)。从此以后,大家开始用域名来访问各种各样的应用服务。显然,相比原来 IP + Port 的方式,域名的含义更加具象、更容易被人记住。
zhonger
2022/10/28
9.8K0
内网私有域名解析
树莓派搭建自用去广告DNS
DNS,英文全称「Domain Name Server」,域名系统(服务)协议(DNS)是一种分布式网络目录服务,主要用于域名与 IP 地址的相互转换,以及控制因特网的电子邮件的发送。
卜露
2020/04/16
2.4K0
使用 Envoy 和 AdGuard Home 阻挡烦人的广告
通常我们使用网络时,宽带运营商会为我们分配一个 DNS 服务器。这个 DNS 通常是最快的,距离最近的服务器,但会有很多问题,比如:
米开朗基杨
2019/09/24
6.4K0
使用 Envoy 和 AdGuard Home 阻挡烦人的广告
自建DNS帮助手机进行广告拦截
53端口为 DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析,通过 DNS 服务器可以实现域名与 IP 地址之间的转换,只要记住域名就可以快速访问网站。
赤月未咲
2023/03/17
2.6K0
使用 Docker Compose 部署 DNS 服务 docker-bind 的经验分享
  可能存在dns缓存,使用 ipconfig /flushdns刷新即可
易墨
2023/11/05
3.4K0
使用 Docker Compose 部署 DNS 服务 docker-bind 的经验分享
实战 HomeAssistant 安装 AdGuard Home 净化 DNS
针对自己的家庭网络环境,搭建自己的 DNS Server 还是有必要的,净化 DNS 的同时,还能得到统计数据
远哥制造
2023/10/03
3.2K0
腾讯云轻量应用服务器Docker基础镜像部署AdGuard Home
这里我们使用的是腾讯云轻量应用服务器,因为我已经购买,而腾讯云最近推出了docker基础镜像,所以首次尝试一下。我这里选择Ubuntu20.04-Docker20是因为Debian系软件包普遍更新且占用更低
SakuraRain
2021/10/19
3.7K0
腾讯云轻量应用服务器Docker基础镜像部署AdGuard Home
Docker部署开源私有云相册,给你的照片一个家
大家好,我是星哥,在这个数字化时代,照片不仅是一种记录生活的方式,更是一种方便并分享还原真时刻的工具。
星哥玩云
2024/12/30
8990
Docker部署开源私有云相册,给你的照片一个家
DNS 解析之家庭网络接入 Public DNS 实战
上一篇文章中介绍了 HTTPDNS & Private DNS,这一篇文章来单独讲一下 Public DNS,首先简单贴几张官网的介绍截图
远哥制造
2022/06/30
44.2K3
DNS 解析之家庭网络接入 Public DNS 实战
CVE-2021-21351-Stream 反序列化命令执行漏洞复现
今天给大家介绍,XStream是一个简单易用的开源java类库,在解析XML文本时使用黑名单机制来防御反序列化漏洞,但之前的版本黑名单存在缺陷所以造成反序列化命令执行错误,下午具体来看一下复现过程吧。
雨笋教育
2021/12/02
1.8K0
CVE-2021-21351-Stream 反序列化命令执行漏洞复现
推荐阅读
相关推荐
使用AdGuard Home搭建一个无广告和跟踪的公共DNS
更多 >
交个朋友
加入[后端] 腾讯云技术交流站
后端架构设计 高可用系统实现
加入前端工作实战群
前端工程化实践 组件库开发经验分享
加入云原生工作实战群
云原生落地实践 技术难题攻坚探讨
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档