OpenWRT-MosDNS分流解析

更新

  • 2024年8月1日:额外部分内容

前言

DNS分流解析主要为了DNS缓存、防止DNS污染和DNS泄露(DOH、DOT)。

可以实现这个效果的工具有adguard home、smartdns、mosdns;
最初使用smartdns发现经常不稳定(指基本无法正常解析DNS);
后续改用了挺长一段时间的adguardhome,弱分流、DNS分流缓存,主广告过滤,总体算正常使用,但有时会出现部分域名一直不刷新最新IP(即使设置过TTL、开关过乐观缓存),只有手动清除缓存才能刷新。

现在尝试使用mosdns,可以更精准控制DNS查询、国内外分流、DNS缓存、广告过滤,目前用下来没有发现什么问题。

DNS工具、插件可以装在多种环境,由于涉及网络、路由部分,建议装在路由中,所以本篇以在OpenWRT软路由上使用mosdns


测试环境

  • OpenWRT iStoreOS 22.03.6 2024062810
  • MosDNS v5.3.1

1. 安装

OpenWRT安装根据GitHub – sbwml/luci-app-mosdns: 一个 DNS 转发器 – OpenWrt 🎁 MosDNS v5 is Ready! 🎉
输入命令

opkg update
opkg install curl

sh -c "$(curl -ksS https://raw.githubusercontent.com/sbwml/luci-app-mosdns/v5/install.sh)"

安装成功后刷新页面就能看到MosDNS

或者可以docker方式安装irinesistiana/mosdns

 docker run -d --name mosdns -p 5454:53/udp -p 5454:53/tcp -v /etc/mosdns:/etc/mosdns irinesistiana/mosdns:latest

2. 配置

配置文件可以使用内置预设自定义配置文件,此处以简单可视化的内置预设配置。

基本选项

  • 配置文件:内置预设
  • 监听端口:5335

勾选

  • DNS转发
  • 远程DNS优选IPv4
  • 自定义国内DNS

2024/07/27/xe5l3l-0

国内DNS服务器,添加

https://1.12.12.12/dns-query
https://120.53.53.53/dns-query
https://223.5.5.5/dns-query

# 可以去阿里云申请专属自己的doh,大概格式↓
# https://user_id.alidns.com/dns-query

(可以填普通dns,但可能会出现泄露问题;应该优先使用IP方式)

远程DNS服务器,添加

https://dns.google/dns-query
https://cloudflare-dns.com/dns-query
https://dns.opendns.com/dns-query
https://dns.quad9.net/dns-query

Bootstrap DNS 服务器,可以选个国内的,或者使用自定义配置自己设置当地运营商DNS
(bootstrap dns用于解析上面的host域名)

2024/07/27/xfdfe6-0


高级选项

  • DNS 服务器并发数:2
  • TCP/DoT 连接复用——勾选
    “启用 TCP/DoT RFC 7766 新型 Query Pipelining 连接复用模式”
  • 禁用 TLS 证书——可选
    可以使用TLS证书已过期的dns域名
  • 启用 EDNS 客户端子网——无需勾选
  • 防止 DNS 泄漏——勾选
    “启用此选项 fallback 策略会强制转发到远程 DNS”

2024/07/27/xhapth-0

  • DNS 缓存大小:根据自己软路由存储空间设置
    我使用mosdns缓存,设置为8000
  • 乐观缓存 TTL:86400
    86400(1天),借用adguardhome形容“即使条目已过期,仍让mosdns从缓存中响应,并尝试刷新它们”
  • 自动保存缓存——勾选
    “保存缓存到本地文件,以供下次启动时重新载入使用”
  • 自动保存缓存间隔(秒):3600
  • 覆盖最小 TTL 值(默认 0):0
    “0表示不修改”
  • 覆盖最大 TTL 值(默认 0):0
  • 启用 DNS 广告过滤——可选

2024/07/27/xj0v9z-0

勾选启用,应用并保存。
(可以在网络-DHCP/DNS的DNS转发看到已经自动设置为127.0.0.1#5335

2024/07/27/xjinbd-0

更新数据库
启用自动更新,网络有阻碍可以选github代理

2024/07/27/xk70gu-0


3. 测试

DNS并不好测试,有点“玄学”,没能直观呈现效果,可以配置后使用一段时间感受下。

DNS泄露测试:
访问IP/DNS Detect,在DNS Addresses中(身在国内)如果没有出现国内IP则代表没有泄露

如果DNS服务器只填了DOH、DOT,那日志INFO中实测不会显示解析信息。


4. 额外

有简单的自定义规则可在规则列表中设置(仅适用“内置预设”)

内置预设的JSON配置文件应用使用时在OpenWRT中路径为

/var/etc/mosdns.json

配合passwall
DNS

  • 远程 DNS 协议:TCP/UDP
  • 远程 DNS:127.0.0.1:5335

配合openclash

  1. 插件设置-DNS设置
    停用本地DNS劫持
    禁止Dnsmasq缓存DNS

  2. 覆盖设置-DNS设置
    勾选自定义上游DNS服务器
    NameServer、FallBack各勾填一个地址127.0.0.1,端口5335UDP类型


参考

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇