首页
关于
Search
1
AdGuardHome 安装及部署教程
48,936 阅读
2
Oracle开放全部端口并关闭防火墙
13,000 阅读
3
关于微软Azure学生白嫖指南
12,709 阅读
4
搭建基于telegram的无限网盘
11,955 阅读
5
最新Cloudflare免费自选IP教程(非Partner)
10,500 阅读
默认分类
技术搬砖
教学设计
故事奇谈
生活琐事
错题分析
精品软件
登录
找到
2
篇与
AdGuard Home
相关的结果
2026-04-28
Mosdns+ADG实现DNS分流、缓存、去广告
Mosdns+ADG实现DNS分流、缓存、去广告 参考链接:https://linux.do/t/topic/155566 参考链接:https://linux.do/t/topic/1146529 Mosdns:仅负责 DNS 分流查询 AdGuard Home(ADG):负责 DNS 去广告、缓存 DNS泄漏: " 所谓的DNS泄露国内节点,只是在IP分流时,查询了国内DNS引起,仅在理论上有安全问题。当然这个DoH使用境外服务器进行IP分流,完美解决泄漏问题 [DNS分流与泄露分析] "境内检测:https://nstool.netease.com 境外检测:DNS Leak Test - BrowserLeaks MosDNS搭建 官方文档:mosdns wiki | mosdns-wiki-zh 配置文件 下载分流所需文件 使用以下脚本,修改变量 v2dat_dir 为你的保存路径 (保存为 .sh 文件后, 记得 chmod +x xxx.sh 赋权): #!/bin/sh set -e # Exit if any command fails TMPDIR=$(mktemp -d) trap 'rm -rf "$TMPDIR"' EXIT # Ensure temporary directory is removed on script exit v2dat_dir=<自定义路径>/mosdns geodat_update() { curl --connect-timeout 5 -m 60 -kfSL -o "$TMPDIR/geoip.dat" "https://raw.githubusercontent.com/Loyalsoldier/geoip/release/geoip-only-cn-private.dat" curl --connect-timeout 5 -m 60 -kfSL -o "$TMPDIR/geosite.dat" "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat" \cp -a "$TMPDIR"/geoip.dat "$TMPDIR"/geosite.dat $v2dat_dir } # Unpack and process the data v2dat_dump() { mkdir -p "$v2dat_dir/rules/" curl -fSL -o "$v2dat_dir/v2dat" "https://raw.githubusercontent.com/xukecheng/scripts/main/v2dat" chmod +x "$v2dat_dir/v2dat" rm -f "$v2dat_dir/rules/geo"*.txt "$v2dat_dir/v2dat" unpack geoip -o "$v2dat_dir/rules/" -f cn "$v2dat_dir/geoip.dat" "$v2dat_dir/v2dat" unpack geosite -o "$v2dat_dir/rules/" -f apple -f cn -f 'geolocation-!cn' "$v2dat_dir/geosite.dat" rm -rf "$v2dat_dir/v2dat" } update_local_ptr() { curl --connect-timeout 5 -m 60 -kfSL -o "$v2dat_dir/rules/local-ptr.txt" "https://raw.githubusercontent.com/sbwml/luci-app-mosdns/v5/luci-app-mosdns/root/etc/mosdns/rule/local-ptr.txt" } geodat_update v2dat_dump update_local_ptr touch $v2dat_dir/rules/force-nocn.txt touch $v2dat_dir/rules/force-cn.txt # force-cn 是强制本地解析域名,force-nocn 是强制非本地解析域名 echo "localhost 127.0.0.1" >> $v2dat_dir/rules/hosts.txtchmod +x xxx.sh ./xxx.sh检查文件 tree -f <变量 v2dat_dir 定义的路径><变量 v2dat_dir 定义的路径> ├── <变量 v2dat_dir 定义的路径>/geoip.dat ├── <变量 v2dat_dir 定义的路径>/geosite.dat └── <变量 v2dat_dir 定义的路径>/rules ├── <变量 v2dat_dir 定义的路径>/rules/force-cn.txt ├── <变量 v2dat_dir 定义的路径>/rules/force-nocn.txt ├── <变量 v2dat_dir 定义的路径>/rules/geoip_cn.txt ├── <变量 v2dat_dir 定义的路径>/rules/geosite_apple.txt ├── <变量 v2dat_dir 定义的路径>/rules/geosite_cn.txt ├── <变量 v2dat_dir 定义的路径>/rules/geosite_geolocation-!cn.txt ├── <变量 v2dat_dir 定义的路径>/rules/hosts.txt └── <变量 v2dat_dir 定义的路径>/rules/local-ptr.txtDNS 配置文件 dns.yaml ################ DNS Plugins ################# plugins: - tag: google type: forward args: concurrent: 2 upstreams: - addr: "tls://dns.google" dial_addr: "8.8.8.8" enable_pipeline: true # TCP/DoT 启用 RFC 7766 新的 query pipelining 连接复用模式 - addr: "tls://dns.google" dial_addr: "8.8.4.4" enable_pipeline: true - tag: cloudflare type: forward args: concurrent: 2 upstreams: - addr: "tls://1dot1dot1dot1.cloudflare-dns.com" dial_addr: "1.1.1.1" enable_pipeline: true - addr: "tls://1dot1dot1dot1.cloudflare-dns.com" dial_addr: "1.0.0.1" enable_pipeline: true - tag: ali type: forward args: concurrent: 2 upstreams: - addr: "tls://dns.alidns.com" dial_addr: "223.5.5.5" enable_pipeline: false - addr: "tls://dns.alidns.com" dial_addr: "223.6.6.6" enable_pipeline: false # dnspod doh dot - tag: dnspod type: forward args: concurrent: 2 upstreams: - addr: "tls://dot.pub" dial_addr: "120.53.53.53" enable_pipeline: true - addr: "tls://dot.pub" dial_addr: "1.12.12.12" enable_pipeline: true # local dns # - tag: local # type: forward # args: # concurrent: 1 # upstreams: # - addr: "udp://192.168.1.1:53" # server 失败 - tag: reject_2 type: sequence args: - exec: reject 2 # 拒绝响应 - tag: reject_3 type: sequence args: - exec: reject 3 # 不支持的操作 - tag: reject_5 type: sequence args: - exec: reject 5配置文件 config.yaml 在本配置中,禁用了对IPv6的解析。如需启用,去除 prefer_ipv4 相关即可 配置中设置了ECS 并固定了IP(见 ecs_cn 部分),建议自行修改,否则可能明显减速 ECS: EDNS Client Subnet 附官方文档关于 ECS 部分:可执行插件 | mosdns-wiki-zh (gitbook.io) log: level: info # file: "/etc/mosdns/mosdns.log" api: http: "0.0.0.0:5534" include: ['/etc/mosdns/dns.yaml'] plugins: # 国内域名 - tag: geosite_cn type: domain_set args: files: - "/etc/mosdns/rules/geosite_cn.txt" # 国内 IP - tag: geoip_cn type: ip_set args: files: - "/etc/mosdns/rules/geoip_cn.txt" # 苹果域名 - tag: geosite_apple type: domain_set args: files: - "/etc/mosdns/rules/geosite_apple.txt" # 国外域名 - tag: geosite_no_cn type: domain_set args: files: - "/etc/mosdns/rules/geosite_geolocation-!cn.txt" - tag: hosts type: hosts args: files: - "/etc/mosdns/rules/hosts.txt" - tag: local_ptr type: domain_set args: files: - "/etc/mosdns/rules/local-ptr.txt" - tag: forward_udp type: forward args: concurrent: 2 upstreams: - addr: "223.5.5.5" - addr: "119.29.29.29" - tag: forward_local type: fallback args: primary: ali # 主dns secondary: dnspod # 备用dns threshold: 500 always_standby: true - tag: forward_remote type: fallback args: primary: cloudflare # 主dns secondary: google # 备用dns threshold: 500 always_standby: true # ECS - tag: ecs_cn type: "ecs_handler" args: forward: false # 是否转发来自下游的 ecs preset: 202.38.193.28 # 发送预设 ecs | 华工IP send: false # 是否发送 ecs mask4: 24 # ipv4 掩码。默认 24 | 12 mask6: 48 # ipv6 掩码。默认 48 | 32 - tag: no_ecs type: "ecs_handler" args: forward: false # 是否转发来自下游的 ecs preset: "" # 发送预设 ecs send: false # 是否发送 ecs mask4: 24 mask6: 48 # 国外解析 - tag: forward_remote_upstream type: sequence args: - exec: $no_ecs - exec: prefer_ipv4 - exec: query_summary forward_remote - exec: $forward_remote # 响应操作 - tag: has_resp_sequence type: sequence args: - matches: has_resp exec: accept # 查询国内域名 # 返回非国内IP则 drop_resp - tag: query_is_non_local_ip type: sequence args: - exec: $ecs_cn - exec: prefer_ipv4 - exec: $forward_local - matches: "!resp_ip $geoip_cn" exec: drop_resp # fallback: 失败时回滚 # 回滚机制: 如果 primary 抛出错误,或返回但没有应答,或在 threshold 毫秒内无响应,则执行 secondary 。因无响应触发 fallback 时,如果 primary 比 secondary 先返回了应答,则依旧会采用 primary 的应答。 # 错误处理: 如果 primary 和 secondary 都无应答 (抛出了错误,无响应直到超时,返回了但无应答),则抛出错误。 ## 此处做了防止DNS泄露的处理: 强制转发到远程DNS (摘自Github: sbwml/luci-app-mosdns) - tag: fallback type: fallback args: primary: forward_remote_upstream secondary: forward_remote_upstream threshold: 500 always_standby: true # 原做法 # - tag: fallback # type: fallback # args: # primary: query_is_non_local_ip # secondary: forward_remote_upstream # threshold: 500 # always_standby: true - tag: apple_domain_fallback type: fallback args: primary: query_is_non_local_ip secondary: forward_udp threshold: 100 always_standby: true # 匹配苹果域名的插件 - tag: query_is_apple_domain type: sequence args: - matches: qname $geosite_apple exec: $apple_domain_fallback - exec: query_summary apple_domain_fallback # 匹配本地域名的插件 - tag: query_is_local_domain type: sequence args: - exec: $ecs_cn - exec: prefer_ipv4 - matches: qname $geosite_cn exec: $forward_local - exec: query_summary forward_local # 查询国外域名 - tag: query_is_no_local_domain type: sequence args: - matches: qname $geosite_no_cn exec: $forward_remote_upstream - tag: query_is_reject_domain type: sequence args: - matches: - qtype 12 - qname $local_ptr exec: reject 3 - matches: qtype 65 exec: reject 3 # 主要的运行逻辑插件 # sequence 插件中调用的插件 tag 必须在 sequence 前定义, # 否则 sequence 找不到对应插件。 - tag: main_sequence type: sequence args: - exec: $hosts - exec: jump has_resp_sequence - exec: forward_edns0opt 8 - exec: $query_is_apple_domain - exec: jump has_resp_sequence - exec: $query_is_reject_domain - exec: jump has_resp_sequence - exec: $query_is_local_domain - exec: jump has_resp_sequence - exec: $query_is_no_local_domain - exec: jump has_resp_sequence - exec: $fallback - exec: jump has_resp_sequence # 启动 udp 服务器 - tag: udp_server type: udp_server args: entry: main_sequence listen: ":5353" # 启动 tcp 服务器 - tag: tcp_server type: tcp_server args: entry: main_sequence listen: ":5353"末尾两项配置为 Mosdns 的 DNS 服务端口配置 Cloudflare 优选IP配置 保存Cloudflare IP网段 cd rules wget https://www.cloudflare.com/ips-v4 -O cf4.txt wget https://www.cloudflare.com/ips-v6 -O cf6.txt cat cf4.txt cf6.txt > cloudflare-cidr.txt 需要自行创建优选 Cloudflare IP文件:cloudflare-ip.txt config.yaml 加入配置: ## 原配置文件新增: # 匹配 Cloudflare IP # source: https://www.cloudflare.com/zh-cn/ips - tag: cloudflare_cidr type: ip_set args: files: - "/etc/mosdns/rules/cloudflare-cidr.txt" # 优选 Cloudflare IP # 需自行创建填写 - tag: cloudflare_ip type: ip_set args: files: - "/etc/mosdns/rules/cloudflare-ip.txt" ## 原配置文件修改: # 有响应终止返回 - tag: has_resp_sequence type: sequence args: - matches: has_resp exec: accept - matches: resp_ip $cloudflare_cidr exec: black_hole $cloudflare_ip启动 Docker 创建docker-compose.yaml文件 services: mosdns: image: irinesistiana/mosdns:latest container_name: mosdns restart: unless-stopped network_mode: host environment: - TZ=Asia/Shanghai volumes: # 请将下面的 "<自定义路径>" 替换为你实际想要的宿主机路径,例如 ./mosdns 或 /opt/mosdns - <自定义路径>:/etc/mosdnsdocker-compose up -d测试可用性 dig +short www.baidu.com @127.0.0.1 -p 5353正常会有IP输出,否则请检查 Mosdns 容器日志看启动是否正常 AdGuard Home 官方脚本安装 在终端中运行以下命令: curl -sSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh如果提示 curl: command not found ,那是因为没装 Curl ubuntu/debian 系统安装 Curl 方法: apt-get install curl -ycentos 系统安装 Curl 方法: yum install curl -y以 IP:映射出的端口 方式进入引导配置界面(如:http://127.0.0.1:3000),在引导步骤中配置各服务监听端口 监听的端口需要是宿主机未使用的端口,因为后面会以 host 网络模式重建容器 【网页管理界面】的监听端口默认 80 ,这个端口很可能会有冲突,特别是在 云服务器 上部署的,建议修改 【DNS服务器】监听接口默认53,国内未经备案使用,可能被主机商检测到,建议修改 image图片 设置管理用户 设置的用户名与密码请三思。因为后续无法在面板上直接更改,只能通过 htpasswd 重新生成hash再修改到配置文件,麻烦了点 image图片 后面一路选择 “下一步” 即可。 最后如果你点击了 “打开仪表盘”,若是先前的【网页管理界面】的监听端口设置的不是已映射的端口,跳转后打不开是正常的基础设置 1. 将上游DNS服务器设置为Mosdns image图片 应用设置: image图片 image图片 2. 禁用 IPv6 解析 由于上面 Mosdns 的配置里也禁用了对 IPv6 的解析,所以这里顺便也禁用吧image图片 3. DNS 缓存 image图片 4. 去广告 image图片 添加规则集: image图片 # 黑名单: filters: - enabled: true url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt name: AdGuard DNS filter id: 1 - enabled: true url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_2.txt name: AdAway Default Blocklist id: 2 - enabled: true url: https://anti-ad.net/easylist.txt name: Anti-ad id: 1717366234 - enabled: true url: https://gist.githubusercontent.com/Ewpratten/a25ae63a7200c02c850fede2f32453cf/raw/b9318009399b99e822515d388b8458557d828c37/hosts-yt-ads name: YouTobe id: 1717366236 - enabled: true url: https://cdn.jsdelivr.net/gh/jdlingyu/ad-wars@master/hosts name: 大圣净化 id: 1717366237 - enabled: true url: https://raw.githubusercontent.com/xinggsf/Adblock-Plus-Rule/master/mv.txt name: 乘风视频 id: 1717366238 - enabled: true url: https://easylist-downloads.adblockplus.org/easylistchina.txt name: easylistchina id: 1717366239 - enabled: true url: https://easylist-downloads.adblockplus.org/easylist.txt name: easylist id: 1717366240 - enabled: true url: https://raw.githubusercontent.com/Cats-Team/AdRules/main/dns.txt name: ad-dns id: 1717366242 - enabled: true url: https://raw.githubusercontent.com/Goooler/1024_hosts/master/hosts name: 澳门皇家赌场 id: 1717366244 - enabled: true url: https://raw.githubusercontent.com/TG-Twilight/AWAvenue-Ads-Rule/main/AWAvenue-Ads-Rule.txt name: 秋风 id: 1718626718 - enabled: true url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_29.txt name: 'CHN: AdRules DNS List' id: 1720846363可在 自定义过滤规则 中单独放行/拉黑(子)域名 # 白名单(自定义过滤规则): @@||dataflow.biliapi.com^$important @@||lxcdn.dl.files.xiaomi.net^$important ||u3.ucweb.com^ @@||ip.taobao.com^$important @@||adashbc.ut.taobao.com^$important @@||s.click.tmall.com^$important @@||s.click.taobao.com^$important @@||taobao.com^ @@||clientlog3.music.163.com^$important @@||app-monitor.ele.me^$important @@||mon.snssdk.com^$important @@||datacollector-drcn.dt.hicloud.com^$important @@||ele.me^ @@||elemcdn.com^ @@||alipayobjects.com^ @@||jianshu.com^ #||ctobsnssdk.com^ #||pangolin.snssdk.com^ #||pangolin-sdk-toutiao.com^ #||pangolin-sdk-toutiao-b.com^ #||pglstatp-toutiao.com^ #||dm.toutiao.com^ #||ulogs.umeng.com^ #||aaid.umeng.com^ #||tnc*.zijieapi.com^ #||mssdk-bu.bytedance.com^ ||api2.coolapk.com/v6/feed/detail$replace=/"include_goods_ids":\[.*?]\,"include_goods":\[.*?]\,/ / ||api2.coolapk.com/v6/feed/detail$replace=/\,"detailSponsorCard":{.*}/}}/ # csdn广告 ||lupic.cdn.bcebos.com^ # 简书广告 ||pp.chuzushijian.cn^ ||cdn-file-ssl-wan.ludashi.com^ ||cdn-file-ssl-wan.ludashi.com/wan/newswf/dlgglm^$important # 解除张大妈 @@||smzdm.com^ @@||zdmimg.com^ # 贴吧 ## tieba-ares.cdn.bcebos.com/mis/2023-5/1683789351139/ac0b4431fb1b.gif ||tieba-ares.cdn.bcebos.com/mis^$important ||tieba-ares.cdn.bcebos.com^$important # 解除夸克 @@||myquark.cn^ @@||quark.cn^ # 解除阿里 @@||aliyuncs.com^ # @@||netease.com^ # 酷安_测试faild #||tr.byteurl.cn^$important #||pull-flv-f29.douyincdn.com^$important #||pull-hls-vr-l11.douyincdn.com^$important #||frontier100-toutiao.toutiaoapi.com^$important #||p3-shortvideo-sign.toutiaoimg.com^$important #||niu-agjsnj.snssdk.com^$important #||mssdk3-normal-lf.zijieapi.com^$important # 酷安+番茄 ||pangolin-sdk-toutiao.com^ ||zijieapi.com^$app=com.dragon.read ||frontier-toutiao.snssdk.com^$app=com.dragon.read ||pangolin-sdk-toutiao-b.com^ ||ads5-normal-lf.zijieapi.com^$app=com.dragon.read ||pglstatp-toutiao.com^ # 解除CSDN #@@||blog.csdn.net # 解除哔哩哔哩 @@||bilibili.com^ # 同花顺看点 @@||10jqka.com.cn^$important #@@||mo.baidu.com^$important # 京东 @@||jd.com^$important @@||360buyimg.com^$important # 王者 @@||ap6.ssl.msdk.qq.com^$important @@||szlong.weixin.qq.com^$important # 快手? @@||kuaishou.httpdns.pro^$important @@||mime.baidu.com^$important #||astrill4u.com^$client='103.98.17.11' #||astrill4u.com^$important @@||dc.sigmob.cn^$important # Copilot @@||githubusercontent.com^$important @@||github.com^$important # 阻止扫描 ||astrill4u.com^$important #@@||qq.com^$important @@||3g.qq.com^$important @@||public.gdtimg.com^$important # shoppy @@||shoppy.gg^$important # QQ @@||qpic.cn^$important #@@||qq.com^$important @@||t9.baidu.com^$important @@||b.bdstatic.com^$important @@||t7.baidu.com^$important @@||sofire.baidu.com^$important @@||t8.baidu.com^$important @@||smartop-sdkapi.jiguang.cn^$importantDOH / DOT / DOQ 配置 首先你需要一个域名,并为其申请好了证书 1. 配置域名 & 端口 转到【设置】\=\>【加密设置】: image图片 注意:如果配置了 DOH 端口,那么这个端口也是可以直接访问ADG面板!! 2. 配置域名证书 & 密钥 这里选择直接粘贴。当然你也可以配置路径image图片 配置完成后,各协议的使用地址见菜单栏的【设置指导】,如: https://域名:DOH端口/dns-query quic://域名:DOQ端口 tls://域名:DOT端口安卓的系统设置中的【私密/加密DNS】为 DOT 协议,且只能填写域名、使用 853 端口,无法更改 如果你的 853 端口惨遭阻断,可以使用 AdGuard 这个APP 3. Nginx反代 如果不想使用带端口的地址,需要Nginx反代,共用443端口 location /dns-query { # 关键修改点:使用 https 协议,并且指向你截图中的 DOH 端口 proxy_ssl_server_name on; proxy_ssl_name $host; proxy_pass https://127.0.0.1:你的doh端口/dns-query; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 防止长连接断开 proxy_read_timeout 60s; proxy_send_timeout 60s; }使用教程 IPhone启用系统级DoH,从此直连L站 第一步:获取并下载描述文件 (:⚠️: 必须使用 Safari 浏览器) 苹果系统限制了只有自带的 Safari 浏览器才能触发描述文件的下载和安装机制。 打开手机上的 Safari 浏览器。访问专门为苹果设备生成 DNS 描述文件的开源工具网站。推荐使用这个极简又安全的生成器: DNS Profile Creator (这是一个著名的开源项目,专门生成苹果系统能认的 .mobileconfig 文件) (如图:选择DoH,并填写DoH server URL:https://域名/dns-query,上面还有个Name of DNS provider,随便取个名字就行) image图片 第二步:点击最下面add to profile,之后在跳转的这个界面里面点击download下载,之后会有个弹出框,需要点击一下允许 image图片 第三步:在 iOS 设备进入 设置 → 通用 → VPN 与设备管理,找到 EMAS HTTPDNS DoH Configuration,点击安装 image图片 电脑端DoH服务器使用教程 对于Edge,打开设置\=\>隐私、搜索和服务\=\>安全性,然后修改以下的选项成图中的样子 image图片 对于Chrome,打开设置\=\>隐私与安全\=\>安全,然后启用"使用安全DNS",像下面这样! image图片 其他自建DOH方案 RethinkDNS 无需服务器,Deno/Cloudflare等均可部署, ①Cloudflare一键部署本方案 注意:由于worker域名被墙,最好有一个托管在cf的域名指向这个worker ②Deno教程: 先去这个项目的Github地址,Fork一份到自己的仓库 image图片 打开deno部署官网,登陆Github账号 点击 image图片 来创建新的来自Github的项目 然后,点击自己的头像,找到你Fork的"serverless-dns项目" 就像这样! image图片 仿照这样填完,点击"Deploy Project"! image图片 稍等两分钟左右 等待部署好后,你就拥有了自己的DoH服务器! 食用方法: image图片 复制这里的部署地址,然后拼贴到下面这个网址中就是你的DoH服务地址(我使用Edge,所以这里也是Edge的配置!) https://[上面你获取的地址]/dns-query{?dns}NbDNS 前提 首先,你要有一台外国的Linux服务器,面板可选(如果你没有我就默认你可以自己完成下面的文件操作!) 十分建议配置反向代理,如果你不配置也可以,但你的DoH服务将会裸奔 打开/home/nbdns/data文件夹 首先在其中创建config.json,并复制粘贴以下内容进去 { "serve_addr": "127.0.0.1:8853", "web_addr": "0.0.0.0:8854", "strategy": 2, "timeout": 4, "built_in_cache": false, "bootstrap": [ {"address": "tcp://8.8.4.4:53"}, {"address": "tcp://1.0.0.1:53"} ], "upstreams": [ {"address": "tcp-tls://dns.google:853"}, {"address": "tcp-tls://one.one.one.one:853"}, {"address": "https://dns.google/dns-query"}, {"address": "https://cloudflare-dns.com/dns-query"}, {"address": "https://dns.opendns.com/dns-query"}, {"address": "https://doh.sb/dns-query"}, {"address": "https://dns9.quad9.net/dns-query"} ], "doh_server": { }, "blacklist": [".discord.com",".linux.do",".github.com"] }下载 china.txt 并改名为 china_ip_list.txt 到 data 文件夹 wget https://raw.githubusercontent.com/gaoyifan/china-operator-ip/refs/heads/ip-lists/china.txt -O data/china_ip_list.txt文件结构: |- home |- nbdns |- data |- config.json |- china_ip_list.txt直接Docker部署! services: nbdns: volumes: - '/home/nbdns/data:/nbdns/data' ports: - '8853:8853/udp' - '8854:8854' container_name: nbdns image: ghcr.io/naiba/nbdnsdocker-compose up -d本配置没有为DoH服务配置密码,所以十分建议使用Nginx反代端口(8854)后使用https+域名访问 Cloudflare DOH 进入Cloudflare Zero Trust界面 image图片 创建 DNS 位置,位置名称自定义,并如图勾选,然后依次点击 继续 - 完成 完成创建 image图片 记录好 基于 HTTPS 的 DNS 的值,形如 https://xxxxxx.cloudflare-gateway.com/dns-query 后面将会用到 创建描述文件 替换 DoH 接入地址后将文件重命名为 dns-over-https.mobileconfig 后下载到 iOS 设备,这里提供一个临时文件中转服务:FF2A File,然后在 iOS 设备进入 设置 → 通用 → VPN 与设备管理,找到 EMAS HTTPDNS DoH Configuration,点击安装 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>PayloadContent</key> <array> <dict> <key>DNSSettings</key> <dict> <key>DNSProtocol</key> <string>HTTPS</string> <key>ServerURL</key> <!---- 把此处的地址替换为 DoH 接入地址 ---> <string>https://xxxxxx.cloudflare-gateway.com/dns-query</string> </dict> <key>PayloadDescription</key> <string>Configures iOS to use EMAS HTTPDNS DoH</string> <key>PayloadDisplayName</key> <string>EMAS HTTPDNS DoH</string> <key>PayloadIdentifier</key> <string>com.apple.dnsSettings.managed.9B498EC0C-EF6C-44F0-BFB7-0000658B99AC</string> <key>PayloadType</key> <string>com.apple.dnsSettings.managed</string> <key>PayloadUUID</key> <string>465AB183-5E34-4794-9BEB-B5327CF61F27</string> <key>PayloadVersion</key> <integer>1</integer> <key>ProhibitDisablement</key> <false/> </dict> </array> <key>PayloadDescription</key> <string>Adds EMAS HTTPDNS DoH configuration to iOS</string> <key>PayloadDisplayName</key> <string>EMAS HTTPDNS DoH Configuration</string> <key>PayloadIdentifier</key> <string>com.emas.apple-dns</string> <key>PayloadRemovalDisallowed</key> <false/> <key>PayloadType</key> <string>Configuration</string> <key>PayloadUUID</key> <string>130E6D6F-69A2-4515-9D77-99342CB9AE76</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist>各种Cloudflare Worker-Doh脚本 [!NOTE] Cloudflare脚本的使用都差不多,你所需要做的只是 \=\>进入你的Cloudflare控制主页 \=\>计算与AI \=\>Workers与Pages \=\>创建应用程序 \=\> 点击从 Hello World! 开始右侧的开始使用 \=\>编辑代码 \=\>粘贴你获得到的代码(我们称这个为Worker代码) 非常推荐的步骤(拥有域名的前提下,设置自定义域):\=\> 设置 \=\> 域和路由 \=\> + 添加 \=\> 自定义域 \=\> 填入你需要的域名名称 (这个域名需要在你的CF账户内) \=\> 添加域 (可选,此举可以提高安全性)\=\> 回到域与路由 \=\> 类型workers.dev右侧的三个点 \=\>禁用域 然后你的"Worker地址"应该为你最新绑定的域名,否则为原显示域名 可选/部分项目要求的步骤:\=\>设置 \=\>变量与机密 \=\>+ 添加 \=\>填写表单 变量名称与值视项目所定 jqknono佬的CF-Doh项目 jqknono/cloudflare-doh: 使用cloudflare代理DoH 本项目的Worker代码链接为 复制这个里面获得的所有文本 然后添加环境变量 变量名称为 DOMAIN_MAPPINGS内容为 { "/google": { "targetDomain": "dns.google", "pathMapping": { "/query-dns": "/dns-query" } }, "/cloudflare": { "targetDomain": "one.one.one.one", "pathMapping": { "/query-dns": "/dns-query" } }, "/quad9": { "targetDomain": "dns.quad9.net", "pathMapping": { "/query-dns": "/dns-query" } } }之后,你可以拥有以下端点的DoH服务器 GoogleDoH https://[你的Worker地址]/google/query-dns{?dns}CloudflareDoH https://[你的Worker地址]/cloudflare/query-dns{?dns}Quad9DoH https://[你的Worker地址]/quad9/query-dns{?dns}cmliu佬的cf-DoH项目 cmliu/CF-Workers-DoH: CF-Workers-DoH 是一个基于 Cloudflare Workers 构建的 DNS over HTTPS (DoH) 解析服务。 本项目的Worker代码链接为:复制这个里面获得的所有文本 直接部署即可食用,默认DoH为Cloudflare,可参照项目修改 之后,你可以拥有以下端点的DoH服务器 CloudflareDoH https://[你的Worker地址]/dns-query{?dns}
技术搬砖
# AdGuard Home
# Cloudflare
# Mosdns
# DOH
admin
9小时前
0
8
1
2021-04-29
AdGuardHome 安装及部署教程
AdGuardHome是什么 AdGuardHome 是一款全网广告拦截与反跟踪软件。它是一个开源的 DNS 服务器,部署方便、UI 友好易用,有着防污染、防跟踪、防篡改的能力,其次才是它的去广告、反跟踪功能,是通过重定向 DNS 解析记录实现的。官网地址 项目GitHub地址 项目Docker地址 AdGuard Home 去广告效果怎样? 既然有去广告功能,自然还是要讨论它的去广告效果的。不过在这里博主要给小伙伴们直接泼一盆冷水了,广告的种类和形态是多样的,不要指望一个 DNS 能把所有的广告消灭干净了。 对于 PC 端的网页广告效果最好的有且仅有浏览器插件,如果配合 AdGuard Home 在广告到达浏览器之前进行阻挡一些会给设备节省不少的计算开销,理论上来说会起到一定的省电效果,但估计也没人会在意。如果只是单纯的使用 AdGuard Home 并没有什么效果,少量的被拦截的广告会在页面上留下一个空白区域。 对于手机上的广告最直观的感受是手机收到的推送广告明显减少了,然后是部分 App 的开屏广告消失了,还是能起到一定作用的。对于 ADUI 这样的广告级魔改安卓系统效果尤其明显 AdGuard Home安装教程 1、开放端口 `53`:DNS 端口。即其他设备访问 AdGuard Home 进行 DNS 解析的默认端口。因为部分系统不支持自定义 DNS 端口,所以不建议自定义。部署前务必要查看是否有其它程序占用。 `67, 68`: DHCP 端口。除非想代替你路由上的 DHCP 服务器,否则用不到。 `80`: 管理页面默认 HTTP 端口。可忽略,在初始化页面设置管理端口为 `3000` 端口即可。 `443`:HTTPS 和 DoH 端口。本地内网环境不需要。 `853`:DoT 端口。不使用相关功能可忽略。 `3000`:初始化设置端口。除非通过配置文件去设置,否则必须开启。2、自动安装(Linux和Mac) 在终端中运行以下命令: curl -sSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh如果提示 curl: command not found ,那是因为没装 Curl ubuntu/debian 系统安装 Curl 方法: apt-get install curl -ycentos 系统安装 Curl 方法: yum install curl -y3、手动安装(Linux x64) 在终端中运行以下命令: wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gztar xvf AdGuardHome_linux_amd64.tar.gz进入解压目录执行以下命令安装 cd AdGuardHome ./AdGuardHome -s install4、Windows安装 前往 AdGuard Home 官网下载安装包。 下载二进制文件 使用浏览器 / 下载工具下载:https://static.adguard.com/adguardhome/edge/AdGuardHome_windows_amd64.zip 解压压缩包得到 AdGuardHome.exe 文件 图片 将 AdGuardHome.exe 移动到 C:\Program Files\AdGuard_Home 文件夹中 图片 以管理员身份打开命令提示符,执行以下命令 cd "C:\Program Files\AdGuard_Home" .\AdGuardHome.exe --service install图片 当提示 AdGuard Home is successfully installed and will automatically start on boot. 即表示 AdGuard Home 在当前系统上安装成功。在命令行中会显示管理后台的地址与端口,默认为 http://IP:3000 5、Docker安装(Linux x64) (1)Bridge 网络模式 docker run -d \ --name adguardhome \ -v $PWD/adguardhome/work:/opt/adguardhome/work \ -v $PWD/adguardhome/conf:/opt/adguardhome/conf \ -p 53:53/tcp \ -p 53:53/udp \ -p 3000:3000/tcp \ adguard/adguardhome(2)Host 网络模式 Host 网络模式直接使用宿主机的网络,没有网络隔离,不需要考虑容器端口的映射,在容器启动后可以自由调整被占用的端口。适合在本机使用 (localhost),或者直通外网的设备对外开放服务,就比如 VPS 、主路由。docker run -d \ --name adguardhome \ --restart unless-stopped \ --log-opt max-size=1m \ --network host \ -v $PWD/adguardhome/work:/opt/adguardhome/work \ -v $PWD/adguardhome/conf:/opt/adguardhome/conf \ adguard/adguardhomeAdGuard Home设置教程 1、初始化设置 使用网页浏览器访问 IP + 3000 端口即可进入到 AdGuard Home 的初始化界面,比如 IP 是 10.0.0.53,那么就访问 http://10.0.0.53:3000 图片 接着是监听接口(网卡)和端口设置,根据不同的网络模式和实际情况需要作出不同的修改 图片 然后是设置管理用户名和密码,后面都是直接下一步: 图片 完事之后输入用户名和密码登录,就来到了仪表盘页面。 图片 至此 AdGuard Home 就部署完成了。 2、高级配置 图片 图片 (1)常规设置 图片 过滤器更新间隔:DNS 过滤清单默认更新间隔,一般为 3 天 - 7 天 使用 AdGuard 「浏览安全」网页服务:作用与 Chrome 网页安全性检查类似,开启后,当用户访问存在潜在威胁的网站时,AdGuard 会主动拦截并弹出提示 使用 AdGuard 「家长控制」 服务:如果家中有尚未成年的孩子,建议开启,避免访问不良网站 强制安全搜索:隐藏 Bing、Google、Yandex、YouTube 网站上 NSFW 等不适宜的内容 查询记录保留时间:AdGuard Home 服务端采用 Sqlite 文件数据库存储日志,长时间保留可能会降低运行速度,同时占用大量的储存空间,家庭用户一般保留 24 小时 - 7 天即可 统计数据保留时间:用于仪表盘的数据展示,一般保留 24 小时 - 7 天即可 (2)DNS 设置 图片 上游 DNS 服务器:AdGuard Home 的上游 DNS 服务器,可参考下方推荐列表,一般保留 1 - 2 个即可。AdGuard Home 除了可以作为广告过滤网关,如果设置了纯净 DNS 后,还可以避免运营商的 DNS 劫持 tls://dot.360.cn https://doh.360.cn/dns-query tls://dns.pub https://dns.pub/dns-query tls://dns.alidns.com https://dns.alidns.com/dns-query tls://dns.ipv6dns.com https://dns.ipv6dns.com/dns-query BootStrap DNS 服务器地址:作为 DoH / DoT DNS 的前置 DNS 解析器,可参考下方推荐列表 119.29.29.29 223.5.5.5 180.76.76.76 2400:3200::1 2400:da00::6666 240C::6666 查询方式、速度限制、EDNS、DNSSEC、拦截模式、DNS 缓存设置、访问设置可根据需要进行调整,一般保持默认设置即可 速度限制:0 使用 EDNS :已知前面提及的上游 DNS 服务器都是支持 EDNS 技术的,它有助于获取到更合适的 CDN 节点,建议勾选。 使用 DNSSEC : 用于效验 DNS 记录的签名,防止 DNS 缓存被投毒,建议勾选。勾选后会在日志页面请求列显示小绿锁图标。 禁用 IPv6 :丢弃 IPv6 的 DNS 查询。在本地网络和网站都支持 IPv6 会优先使用 IPv6 去访问网站,但目前 IPv6 的建设还处于初级阶段,大多数地区的 IPv6 网络体验都一般。还有一些代理软件对 IPv6 支持不佳,开启后可能会影响国际互联网的访问。如果对此没有特殊需求,那么直勾选即可,这样既不影响 BT 软件连接 IPv6 网络,又可以优先使用 IPv4 来上网。如果只有 IPv4 ,那么是否勾选没有区别 DNS 缓存配置,目前多数域名的 TTL 值普遍在 300 以内,所以给出以下设置参考值:覆盖最小 TTL 值:600;覆盖最大 TTL 值:3600 (3) DNS 封锁清单 为了更好地发挥 AdGuard Home 去广告的功能,仅依靠默认的过滤规则是不够的,但也不宜过多,过多的过滤规则会影响解析的速度,各位可以根据需要添加过滤规则。 图片 halflife https://raw.githubusercontent.com/o0HalfLife0o/list/master/ad.txt anti-AD https://anti-ad.net/easylist.txt neoHosts https://cdn.jsdelivr.net/gh/neoFelhz/neohosts@gh-pages/full/hosts.txt 大圣净化 - 针对国内视频网站 https://raw.githubusercontent.com/jdlingyu/ad-wars/master/hosts adgk手机去广告规则 https://raw.githubusercontent.com/banbendalao/ADgk/master/ADgk.txt 广告终结者 http://sub.adtchrome.com/adt-chinalist-easylist.txt Adbyby https://raw.githubusercontent.com/adbyby/xwhyc-rules/master/lazy.txt EasyList China+EasyList https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt EasyPrivacy https://easylist-downloads.adblockplus.org/easyprivacy.txt(4) DNS允许清单 anti-ad白名单 https://raw.githubusercontent.com/privacy-protection-tools/dead-horse/master/anti-ad-white-list.txt filter_whitelist https://raw.githubusercontent.com/hl2guide/Filterlist-for-AdGuard/master/filter_whitelist.txt LWJ's white list https://raw.githubusercontent.com/liwenjie119/adg-rules/master/white.txt DNS允许白名单 https://raw.githubusercontent.com/ChengJi-e/AFDNS/master/QD.txtAdGuard Home 所有的配置参数都保存在一个名为 AdGuardHome.yaml 的配置文件中,这个配置文件默认路径通常为 AdGuard Home 二进制文件 AdGuardHome 所在的目录。 这里我们只需调整以下两个参数,就是可以明显提升 AdGuard Home 的 QPS 能力。 ratelimit : DDoS保护,客户端每秒接收的数据包数。默认值是 20,建议禁用该参数(将值改为 0)。 blocked_response_ttl : 缓存时间,默认值是 10,建议设置为 60 。 (5)开启DoH/DoT 设置一个DNS的解析域名并申请SSL证书,进入加密设置,勾选启用加密,输入自己刚刚设置好的域名,HTTPS端口填写没有被占用的端口,粘贴好SSL证书和秘钥后保存配置即大功告成,宝塔面板反代http://ip:8080并开启SSL。 图片 在设备上使用 AdGuard Home DNS 最后你可以在 AdGuard Home 的设置指导页面找到相应系统的 DNS 设置方法,先不要着急在路由器上使用,建议先设置电脑或手机,通过访问一些网站来测试是否能正常解析。正常的情况下在仪表盘界面会有统计信息,在查询日志界面你会看到解析的详细记录信息。 图片 完成 AdGuard Home 的设置后,便可将 AdGuard Home 的 DNS 地址部署到局域网设备上。 1、更改路由器 DNS 地址 不同品牌路由器修改的方法各有差异,具体步骤可参照说明书或网上的教程(路由器型号 + 更改 DNS),下方以 Redmi AC2100 路由器为例。 打开并登录路由器的后台管理页面。 图片 在局域网设置中找到 DNS 设置,将首选 DNS 服务器更改为 AdGuard Home 的 DNS 地址,可设置为其它的 DNS 服务商,避免因 AdGuard Home 服务器宕机而导致局域网无法访问互联网。更改完成后点击保存即可。在路由器更改 DNS 后,局域网内的所有设备的 DNS 解析都会通过 AdGuard Home DNS 完成,实现过滤广告与反隐私跟踪。 图片 2、更改手机 DNS 地址 图片 进入「设定 - 网络和互联网 - Wi-Fi」,点击当前已连接网络的一旁的设置按钮,在 Wi-Fi 详情信息页面点击「编辑」按钮 找到「IP 设定」 分别输入该设备的 IP、网关与 AdGuard Home 服务器地址 3、 iOS 设备 图片 进入「设置 - 无线局域网」,点击当前已连接网络的名称 在 Wi-Fi 详情信息页面找到「配置 DNS」 切换为手动设置,并输入 AdGuard Home 服务器地址 4、更改电脑 DNS 地址 图片 图片 图片 打开「Windows 设置 - 网络和 Internet」,点击「更改适配器选项」 选中有线 / 无线网卡,点击工具栏「更改此连接的设置」 找到「Internet 协议版本 4」,点击「属性」按钮 填写 DNS 服务器,点击「编辑」按钮 常见问题 1、端口冲突 在 Linux 设备上运行 AdGuard Home,通常会出现 53(本地 DNS 服务器)、68(DHCP 客户端)、80(Http)、443(Https) 端口冲突的问题,可以通过netstat -tunlp | grep 端口号 查询占用进程。有两种解决方案:使用不同端口、停用冲突进程。 如果是通过 Docker 方式运行 AdGuard Home,出现 listen udp 0.0.0.0:53: bind: address already in use 的提示,需要手动处理,方法如下: #停止 DNSStubListener systemctl stop systemd-resolved #创建文件夹(如果不存在) mkdir /etc/systemd/resolved.conf.d/ #使用 Nano 创建配置文件2021-04-29 16:16:00 星期四 nano /etc/systemd/resolved.conf.d/adguardhome.conf在编辑器中粘贴以下内容: [Resolve] DNS=127.0.0.1 DNSStubListener=no保存后执行以下命令。 #创建备份 sudo mv /etc/resolv.conf /etc/resolv.conf.backup #将 /etc/resolv.conf 链接至 /run/systemd/resolve/resolv.conf ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf #重启 DNSStubListener systemctl restart systemd-resolved完成后使用 netstat -tunlp | grep 53 命令检查是否依旧有进程占用 53 端口,如无冲突,重启 AdGuard Home 容器即可。 2、平均处理时间过长? 以下几个因素会使 AdGuard Home 的处理时间过长: 本地到上游DNS的速度:如果本地运营商的 DNS 没有 DNS 劫持、投毒的问题,建议使用运营商 DNS + 公共 DNS 的方案,DNS 速度可以通过 Ping 值比较。并在 AdGuard Home 中选择以「并行请求」的方式处理 DNS 请求 浏览安全、家庭控制与强制安全搜索服务:以上三个功能,在 DNS 请求时不会经过 DNS 缓存,直接向上游 DNS 服务器请求,从而减慢 AdGuard Home 的处理速度 IPv6:如果使用的宽带、校园网不支持 IPv6,可以禁用解析 IPv6,提高响应速度 过滤规则:过多的过滤规则会影响响应速度,宁缺毋滥,选择最合适自己的规则,一般保留 3 - 4 个广告过滤规则即可。 统计周期: 在完成以上优化后,发现平均处理时间并没有太大改变,使用体验上也并不慢,有可能是因为统计周期过长,将优化前的结果计入,导致优化前后的结果无太大差异。不妨将仪表盘的统计周期缩短为 24 小时再看看。 完成以上步骤后使用体验比没有使用 AdGuard Home 还要糟糕,问题有亿点严重了。这个时候需要查找 AdGuard Home 的日志,寻找问题的原因。
技术搬砖
# AdGuard Home
# 私人
admin
5年前
0
48,936
33