本帖最后由 437147069 于 2022-12-12 00:16 编辑
iKuai-docker安装smartDNS和ADguardhome
一.这样搭建有什么好处
1.好处1.1 smartDNS解析速度快。可以将smratDNS分为两组,国内一组、国外一组避免了DNS污染。
1.2 ADguardhome通过DNS来屏蔽广告,配置后可以过滤大部分广告。
1.3 我使用的是主路由+旁路由的模式,家里很多设备用不到科学环境。主路由负责稳,旁路由负责锦上添花。旁路由折腾坏了需要重装或者升级,openWRT的配置可能就不能保留下来,重新设置耗时耗力。而使用docker搭建这两个功能,就~很稳。
二.简介DNS
1.DNS是什么?1.1 DNS也就是域名服务器。
1.1.1 例如访问baidu.com,是将baidu.com这个域名转换为这个网页所在的服务器IP地址。DNS就承担了这个转换的角色。
1.2 举例DNS劫持
1.2.1 例如在公司不让员工摸鱼,在公司的DNS将bilibili.com对应到一个不存在的IP,这个时候在公司的小明访问bilibili.com就被劫持到了一个错误的页面。这就是最简单的一个DNS污染。
1.2.2 这个时候小明在电脑设置里将DNS地址改为了其他地址,例如:114.114.114.114,小明再次访问bilibili.com得到了一个正确的IP地址,又可以开始愉快的冲浪了。
1.3 所以有些不存在的网站打不开是这些网站真的不存在吗?不是,只是被污染了。
三.iKuai和openWRT中各DNS的作用
1.iKuai1.1 wan口设置-拨号得到的DNS
1.1.1 这是运营商分配的DNS,这个作为国内的上游DNS速度应该会很快,但是也最可能被劫持。
1.2 DHCP设置中的DNS
1.2.1 主路由作为唯一的DHCP服务器,在电脑接入路由器,DHCP给电脑下发IP的同时下发DNS地址,这个地方的DNS填写就要分为主路由和旁路由,在下面会讲到。
1.3 DNS设置
1.3.1 DNS设置的作用是将主路由作为一个DNS服务器,在用户请求某个网址的IP地址后,会将这一条记录保存下来,下次再次请求这个地址时,用缓存中的IP地址,这可以极大的缩短请求的时间。
1.3.2 DNS反向代理。用作将某个域名强制绑定至某IP。
1.3.3 在本教程中我们不使用DNS设置这个模块。
2.openWRT2.1 LAN口设置中的自定义DNS服务器
2.1.1 这个是作为openWRT的上游DNS,通过openWRT请求的域名都会从这个DNS去查询,这里我们应该填写一会儿配置的ADguardhome或者是smartDNS。
2.1.2 这个地方的DNS填写错误的话,会导致经过openWRT上网的设备都打不开网页。
2.2 DHCP/DNS
2.2.1 DNS重定向这个要勾选。dnsmasq也是一个DNS服务器,可以看作iKuai的DNS设置模块。但是dnsmasq为开启会导致某些科学客户端中的直连域名规则/代理域名规则失效。
2.2.2 DNS转发可以看作iKuai的DNS反向代理,我们不需要配置。
2.3 科学客户端中的DNS配置
2.3.1 在使用科学客户端时,为了保证不被DNS劫持,所以要配置与国内DNS不同。如果这个地方配置错误会导致,经过科学客户端的网页全打不开。
2.3.2 以我的“师夷长技以制夷”客户端为例,前面4个过滤模式,均是通过已配置的上网节点去请求IP。而通过UDP请求DNS是直接使用UDP协议去请求。如果是请求我们本地搭建的DNS,那速度是非常快的。
2.3.3 china-dns-NG这个教程不使用,所以不勾选。
四.工作原理
1.主路由DNS查询1.1 发起请求baidu.com至lan口、主路由、 由于DNS地址设置的是ADguardhome,所以接下来是ADguardhome,ADguardhome的上游DNS是填的smartDNS的国内组,所以最后到达smartDNS。smartDNS查看有没有缓存,没有缓存smartDNS通过设置的一组公共DNS同时查询,谁快就返回谁,最后就拿到了baidu.com的IP地址,就可以建立链接了。链接后如果有带广告的域名将会被ADguardhome的规则拦截,这样就返回了一个纯净的网页。
2.旁路由DNS查询2.1 发起请求baidu.com至lan口、网关填的旁路由,所以经过主路由、到达旁路由,在分流后,发现是国内域名,由于DNS地址设置的是ADguardhome,所以接下来是ADguardhome,ADguardhome的上游DNS是填的smartDNS的国内组,所以最后到达smartDNS。smartDNS查看有没有缓存,没有缓存smartDNS通过设置的一组公共DNS同时查询,谁快就返回谁,最后就拿到了baidu.com的IP地址,就可以建立链接了。链接后如果有带广告的域名将会被ADguardhome的规则拦截,这样就返回了一个纯净的网页。
3.旁路由国外网络DNS查询3.1 发起请求google.com至lan口、网关填的旁路由,所以经过主路由、到达旁路由,在分流后,发现是国外域名,由于“师夷长技以制夷”的DNS地址指向的是smartDNS的国外组,请求来到smartDNS。smartDNS查看有没有缓存,没有缓存smartDNS通过设置的国外组公共DNS同时查询,谁快就返回谁,最后就拿到了google.com的正确IP地址,就可以建立链接了。
五.ADguardhome的搭建
1.新增映射目录1.1 新增目录adguardhome
1.2 进入目录adguardhome,在新增work和conf
2.获取镜像2.1 搜索镜像库adguardhome,选择adguard/adguardhome并下载
3.配置ADguardhome容器3.1 添加一个新容器
3.2 映射目录 源路径 | 目标路径 | /d/adguardhome/work | /opt/adguardhome/work | /d/adguardhome/conf | /opt/adguardhome/conf |
源路径为刚刚在ikuai创建的路径;目标路径为固定的。
4.配置ADguardhome4.1 访问刚刚配置的容器ip:3000说明安装成功,更具提示完成配置。配置完成后就可以通过容器 ip进行访问了。
4.2 ADguardhome可以暂时放在一边,我们接下来搭建samrtDNS
六.smartDNS搭建
1.新增映射目录1.1 新增目录smartdns
2.获取镜像2.1 搜索镜像库smartdns,选择ghostry/smartdns并下载
3.配置smartDNS容器3.1 添加一个新容器
3.2 映射目录 源路径 | 目标路径 | /d/smartdns | /smartdns/ |
源路径为刚刚在ikuai创建的路径;目标路径为固定的。
3.3 配置完成首先停用此容器
4.编辑smartDNS的配置文件4.1 下载我整理好的smartdns.conf。[点击下载] 也可以在pymumu/smartdns项目下载纯正的配置文件模板。
4.2 了解smartDNS配置文件的分组 参数 | 说明 | -group guonei | /国内分组 | -group guowai | 国外分组 | -exclude-default-group | 从默认分组中排除 | server | 默认DNS类型 UDP | server-tcp | DNS为TCP | server-tls | DNS为tls | server-https | DNS为https |
4.3 如何获得可使用的DNS上游服务器
4.3.1 通过网上搜索公共DNS服务器,再使用刚刚搭建的ADguardhome进行测试是否能连接。
配置ADguardhome的Bootstrap DNS 服务器(它的作用是解析配置在上游DNS列表中的域名,所以我们填写一个快速稳定的DNS服务器地址即可)
这里填写ikuai中获取到的服务商提供的DNS地址
4.3.2 这里分享我整理的DNS上游服务器,复制到ADguardhome的上游DNS服务器列表中,点击测试上游DNS服务器,如果测试不可用,则在smartdns.conf中将条目删除。
记录不可用的DNS服务器地址在smartdns.conf中将条目删除后,我们就得到了一个适合自己的smartdns.conf配置文件。
- <div>#国内
- #阿里
- 223.5.5.5
- tcp://223.5.5.5
- 223.6.6.6
- tcp://223.6.6.6
- https://dns.alidns.com/dns-query
- # 腾讯
- 119.29.29.29
- https://doh.pub/dns-query
- # 360
- 101.226.4.6
- 218.30.118.6
- tcp://218.30.118.6
- # 百度 不稳定
- 180.76.76.76
- #114
- 114.114.114.114
- tcp://114.114.114.114
- 114.114.115.115
- tcp://114.114.115.115
- # 国外
- # CloudflareDNS
- 1.1.1.1
- tcp://1.1.1.1
- tls://1.1.1.1/dns-query
- # Google DNS
- 8.8.8.8
- tcp://8.8.8.8
- 8.8.4.4
- tcp://8.8.4.4
- # Norton ConnectSafe
- 199.85.126.10
- tcp://199.85.126.10
- 199.85.127.10
- tcp://199.85.127.10
- # 威瑞信
- 64.6.64.6
- tcp://64.6.64.6
- 64.6.65.6
- tcp://64.6.65.6
- # Comodo安全DNS
- 8.26.56.2
- tcp://8.26.56.2
- # DNS Watch
- 84.200.69.80
- tcp://84.200.69.80
- 84.200.70.40
- tcp://84.200.70.40
- # freenom
- 80.80.80.80
- 80.80.81.81
- tcp://80.80.80.80
- tcp://80.80.81.81
- # OneDNS
- 112.124.47.27
- 114.215.126.16</div>
复制代码
4.4 将配置好的smartdns.conf文件上传至samrtDNS映射的目录
4.5 启动smartDNS容器
4.6 回到ADguardhome将上游dns服务器配置为smartDNS的国内分组
设置-DNS设置-上游DNS服务器中填写smartDNS容器ip,端口53可以省略
测试上游DNS,测试通过则应用
然后在下方找到DNS缓存配置,将所有选项清空。因为我们不需要使用到ADguardhome的缓存,缓存我们已经交给smartDNS处理了。
4.7 配置ADguardhome广告过滤
删除原有规则,这里推荐一个国内广告屏蔽的规则: - https://raw.githubusercontent.com/BlueSkyXN/AdGuardHomeRules/master/all.txt
复制代码项目地址:BlueSkyXN/AdGuardHomeRules
github下载极慢,耐心等待
七.主路由和旁路由的配置
1.国内组DNS配置1.1 国内组(例如家里的智能设备,不需要经过旁路由,就算旁路由挂了,家里的智能设备也不会掉线)是直接通过主路由访问,所以我希望国内组的设备获得的是国内组且屏蔽广告的DNS,所以我们在DHCP服务器中填写ADguardhome的DNS地址。
2.国外组DNS配置2.1 国外组是使用旁路由的openWRT,所以给客户端分配网关和DNS服务器时均指向openWRT
2.2 openWRT配置
2.2.1 lan口设置中DNS服务器填写ADguardhome的地址。
国外组的设备流量虽然需要通过旁路由,但是大多情况还是访问国内网站,这样填写,访问国内网站也能获得最快的速度和广告屏蔽。
2.2.2 科学客户端的DNS服务器选择UDP请求方式,DNS地址填写smartDNS容器ip+国外组端口例如10.0.0.14:7053保存,测试国内外网络访问是否正常。
教程完毕!开始享受一个极速、纯净的网络世界吧。
请不要胡乱输入以及粘贴、复制等方式灌水
请尊重作者、并共同维护网站的正常阅读,否则账户将会被限制发帖、回帖,并且积分可能会被清零,站内短信以及阅读权限等都会受到影响,谢谢。
具体限制方式:https://www.right.com.cn/forum/thread-8307840-1-1.html
|