OpenWRT+MOSDNS+OpenClash防止dns泄漏

597次阅读
13 条评论

提醒:本文最后更新于2024-03-18 11:21,文中所关联的信息可能已发生改变,请知悉!

前言

OpenClash请使用Meta内核, 某项设置仅支持Meta内核

环境

R4S开发板, 固件自己搓的.

参考文献

文笔不好, 建议参考恩山大佬的图文设置, 这里只是改了部分设置
https://www.right.com.cn/forum/thread-8284982-1-1.html
https://www.right.com.cn/forum/thread-8293938-1-1.html

思路

不使用OpenClash自带的dns分流模块, 将分流工作交给Mosdns处理, 并把解析国外ip请求转发给远程dns(即代理服务器).

操作开始

一.设置mosdns

  1. 取消勾选"DNS 转发", 勾选"本地 DNS", 按需填写"上游 DNS 服务器" "远程 DNS", 其中"远程 DNS"务必使用dot/doh服务器.
    OpenWRT+MOSDNS+OpenClash防止dns泄漏

  2. 进入 高级选项 选项卡, 勾选"防止 DNS 泄漏", 其余随意.

二.设置OpenClash

  1. 模式选择
    进入服务→OpenClash, 在插件设置→模式设置里勾选"使用 Meta 内核", 运行模式随意, 笔者因为有智能家居缘故仍然使用Redir-Host模式.
    进入DNS设置标签, 本地 DNS 劫持选择使用Dnsmasq转发, 并勾选禁止 Dnsmasq 缓存 DNS.
    OpenWRT+MOSDNS+OpenClash防止dns泄漏
    OpenWRT+MOSDNS+OpenClash防止dns泄漏
  2. dns设置
    进入覆写设置→DNS设置,勾选"自定义上游 DNS 服务器", 在下一栏设置自定义上游 DNS 服务器里将NameServer,FallBack里的dns服务器全部取消勾选.
    在NameServer里添加服务器,地址127.0.0.1,端口5335,服务器类型为UDP.
    在Default-NameServer里添加任意国内/国外可以访问的dns服务器, 但不能设置为走代理服务器, 这里以阿里dns为例 并勾选节点域名解析
    或者不填然后在mosdns的规则列表→白名单内添加"domain:你节点的主域名"即可
    OpenWRT+MOSDNS+OpenClash防止dns泄漏
    OpenWRT+MOSDNS+OpenClash防止dns泄漏
    OpenWRT+MOSDNS+OpenClash防止dns泄漏
  3. 其他设置
    在Meta设置里勾选"启用流量(域名)探测"和"探测(嗅探)纯 IP 连接", 其余OpenClash的设置按需选择, 这里不过多赘述. 设置完成后保存并应用, 可以访问
    https://browserleaks.com/dns
    https://ipleak.net/
    检查是否有dns泄漏, 以ipleak为例
    OpenWRT+MOSDNS+OpenClash防止dns泄漏
    OpenWRT+MOSDNS+OpenClash防止dns泄漏

三(可选).设置adgurad home广告过滤

进入服务→openclash, 插件设置→dns设置, 将本地 DNS 劫持改为禁用, 应用配置.
进入网络→DHCP/DNS, 勾选忽略解析文件, 将DNS 查询缓存的大小改为0, 保存并应用.
进入服务→AdGuard Home, 更新核心版本, 勾选启用, 6060重定向为作为dnsmasq上游服务器, 其余随意.
进入http://192.168.11.1:3000/ 账户密码默认root root, 不对可以在手动设置里点击使用模板恢复设置. 设置→dns设置, 上游dns服务器填入127.0.0.1:7874(端口在openclash全局设置 基础设置里可以查看), 选择并行请求, 取消勾选使用私人反向 DNS 解析器, DNS缓存配置清空.
过滤器→dns黑名单, 添加黑名单, 这个随意, 我就加了三个.

217heidai / adblockfilters
https://raw.githubusercontent.com/217heidai/adblockfilters/main/rules/adblockdns.txt

Cats-Team / AdRules
https://raw.githubusercontent.com/Cats-Team/AdRules/main/dns.txt

秋风
https://raw.githubusercontent.com/TG-Twilight/AWAvenue-Ads-Rule/main/AWAvenue-Ads-Rule.txt

因为规则里有误伤, 故加了部分白名单, 可以按需复制

@@||taobao.com^
@@||tmall.com^
@@||jd.com^
@@||flyme.cn^
@@||meizu.com^
@@||jd.com^
@@||sohu.com^
@@||blueskyxn.com^
@@||baidu.com^
@@||microsoft.com^
@@||huya.com^
@@||baidu.com^
@@||qq.com^
@@||yunaq.com^
@@||driverpack.io^
@@||123pan.com^
@@||sogou.com^

想测试拦截效果可以进入一下两个网站测试
https://adblock-tester.com/
https://d3ward.github.io/toolz/adblock.html

结尾

非常感谢你能看到这里, 如果配置有任何问题可以留下你的评论.
水完这次的文章我又可以潜水好几个月了.?

正文完
 0
评论(13 条评论)
2023-11-10 01:06:32 回复

大佬是在网站的哪里引用了 api.xcnya.cn/b-random-sticker 吗,我更换了 API 端点,如果需要引用的话还请更换为 api.xcnya.cn/random/sticker 喵~

 Windows  Chrome  西班牙马德里马德里
Echo
2023-11-13 20:24:09 回复

大佬,我是从https://songchenwen.com/tproxy-split-by-dns参考完然后过来的,然后完全按照你的配置,为啥adguardhome那里测试上游 DNS 服务器也填写了127.0.0.1:7874(确认过是7874)但是就是提示无法使用,请检查你输入是否正确

 Macintosh  Chrome  荷兰
    2023-11-13 20:59:35 回复

    @Echo 看一下dns监听端口是不是7874, 终端nslookup查询看看能不能解析, 我之前方便dns监听端口改成5337就是127.0.0.1:5337, 解析不了可以查一下监听端口是不是被占用/ nameserver的端口是不是mosdns的监听点开/ mosdns的国外分流有没有正常解析之类的
    1.th.png
    2.th.png

     Windows  Chrome  中国江苏省淮安市电信
Echo
2023-11-13 22:09:13 回复

搞定了,可能是我防火墙拦截了转发,我刚设置规则了,但是现在我在这两“https://browserleaks.com/dns
https://ipleak.net/”查询均有好几个泄漏,是我设置问题吗,我是主路由使用

 Macintosh  Chrome  新加坡
    2023-11-13 22:23:27 回复

    @Echo 看一下adgurad和openclash的上游dns服务器有没有启用别的服务器,
    或者检查一下你的网络连接有没有别的连接, windows会通过所有可用的的网络连接发送dns请求

     Windows  Chrome  中国江苏省淮安市电信
yiyi
2023-11-21 11:19:23 回复

"domain:你节点的主域名" 是指代理节点的域名?

 Macintosh  Chrome  中国北京北京市联通
    2023-11-21 11:33:44 回复

    @yiyi 是, 大部分机场节点因为有多台中转 二级域名也有多个, 不过一级域名就一两个
    例如我机场的节点域名有relay-1.520705.xyz, relay-2.520705.xyz等
    mosdns里白名单规则只用填domain:520705.xyz就行

     Windows  Chrome  中国江苏省淮安市电信
Dddye888
2023-11-24 00:02:53 回复

如果在白名单中添加订阅域名的话,订阅是是不是就会用本地的dns去请求订阅域名/节点域名,这个时候也泄露了吧

 Windows  Chrome  美国
    2023-11-24 10:00:28 回复

    @Dddye888 无论是doh/dot还是普通的udp直连国外dns的连通性都不是很好, 动不动被阻断/劫持. 除了搭建私人dns似乎没什么好的办法, 只知道你在挂代理总比知道你在看哪些网站好一点?

     Windows  Chrome  中国江苏省淮安市电信
      Dddye888
      2023-11-24 17:50:01 回复

      @LeaF 也确实是这样
      我现在是把节点域名丢到灰名单里,走远程dns代理,然后mosdns里远程代理手填1.1.1.1,用223.5.5.5去解析1111,这样也能走通,理论上暴露出来的只有本级用223.5.5.5去请求1.1.1.1

       Macintosh  Chrome  美国
      Dddye888
      2023-11-25 00:56:29 回复

      @LeaF 又测试了一轮,发现上面有个描述可能有点小问题
      “则会送给远程dns请求, 而我们开启了防止dns污染, 要将请求送给代理服务器, 让代理服务器为我们发送dns请求”
      这段话里,对于mos开启防止dns污染时,我测试下来是直接给mos上配置的远程dns解析,解析完成后会把ip给clash,让它能连上节点,不会死循环
      我一开始远程dns直接按现有列表里选了几个,1111和8888都选上了,clash一直报错连接不到dns服务器,大概率内置的都是域名段doh。
      我试过手填--1.1.1.1,测试一下就能跑通链路了。

      然后又加测过一个逻辑,远程dns里写了域名段的doh,然后把节点域名放到灰名单,跑不通——这里应该是死循环了,因为doh没有被代理,无法解析节点域名,导致节点连不上。
      然后我把节点域名放到白名单又通了。

      我现在是远程dns放:
      https://1.1.1.1/dns-query
      https://8.8.4.4/dns-query
      就是面板上一直有一条我公网ip连接dns节点的记录,看着很是心烦。用udp纯ip又担心不安全.

       Windows  Chrome  新加坡
Dddye888
2023-11-24 00:07:30 回复

同理,在default-nameserver里面配置国内的dns服务器去解析节点,是不是也同样会有这个问题..节点域名是国外的情况下

 Windows  Chrome  美国
Rich5000
2024-05-22 21:02:36 回复

感谢下这个流程分享,全流程跑完了。
之前尝试过songchenwen大佬的那段流程,但是最后卡在ADG中点击“测试上游”还是提示“服务器 «127.0.0.1:5335»:无法使用”,虽然这时mosdns的运行log显示是一切正常的,推测是不是也是被防火墙屏蔽了,但是没有排查出来具体问题...

 Windows  Chrome  中国香港层峰网络