Files
tvbox_collect/_posts/2024-08-21-dnsnoleaks-mihomo-ruleset.md
T
2026-07-19 04:51:50 +00:00

6.8 KiB

title, description, date, categories, tags
title description date categories tags
搭载 mihomo 内核配置 DNS 不泄露教程-ruleset 方案 此教程搭载 mihomo 内核并使用其特性防止 DNS 泄露,即针对未知域名走国外 DNS 解析 2024-08-21 07:52:58 +0800
DNS 配置
DNS 防泄漏
Clash
mihomo
进阶
DNS
DNS 泄露

说明 {: .prompt-tip }

  1. 此方案彻底防止了 DNS 泄露(未知域名在匹配 RULE-SET:cnip 规则时会由国外 DNS 解析且配置 ecs,解析出 IP 在国内则走 国内 IP 规则,否则走 漏网之鱼 规则),兼容性高,可放心使用
  2. 本教程以 ShellCrash 为例,其它客户端亦可参考
  3. 本教程搭载 mihomo 内核 Meta 版(导入内核方法可参考《ShellCrash 和 AdGuard Home 快速安装教程/导入 mihomo 内核 或 sing-box 内核》)
  4. 可进入 https://ipleak.net 测试 DNS 是否泄露,“DNS Addresses” 栏目下没有中国国旗(因 ipleak.net 属未知域名,默认走 漏网之鱼 规则),即代表 DNS 没有发生泄露

一、 导入规则集合文件

rule-providers 须添加 fakeip-filtercnproxy,如下:

rule-providers:
  fakeip-filter:
    type: http
    behavior: domain
    format: mrs
    path: ./ruleset/fakeip-filter.mrs
    url: "https://github.com/DustinWin/ruleset_geodata/releases/download/mihomo-ruleset/fakeip-filter.mrs"
    interval: 86400

  cn:
    type: http
    behavior: domain
    format: mrs
    path: ./ruleset/cn.mrs
    url: "https://github.com/DustinWin/ruleset_geodata/releases/download/mihomo-ruleset/cn.mrs"
    interval: 86400

  proxy:
    type: http
    behavior: domain
    format: mrs
    path: ./ruleset/proxy.mrs
    url: "https://github.com/DustinWin/ruleset_geodata/releases/download/mihomo-ruleset/proxy.mrs"
    interval: 86400

二、 ShellCrash 防泄漏配置

进入 ShellCrash 配置脚本 → 2) 功能设置 → 2) DNS 设置 → 9) 修改 DNS 服务器,将“DIRECT-DNS”、“PROXY-DNS”和“DEFAULT-DNS”都设置为 null
ShellCrash 设置

三、 DNS 防泄漏配置

1. DNS 模式为 mix(推荐)

连接 SSH 后执行 vi $CRASHDIR/yamls/user.yaml,按一下 Ins 键(Insert 键),粘贴如下内容:

推荐将 ecs 设置为当前宽带运营商分配的默认 DNS(可进入光猫或路由器拨号页面查看,或者前往公共 DNS 大全查询)的 IP 段,如默认 DNS 为 211.137.58.20,可设置为 211.137.58.0/24 {: .prompt-info }

hosts:
  dns.alidns.com: [223.5.5.5, 223.6.6.6, 2400:3200::1, 2400:3200:baba::1]
  doh.pub: [1.12.12.12, 120.53.53.53]
  dns.google: [8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844]
  dns11.quad9.net: [9.9.9.11, 149.112.112.11, 2620:fe::11, 2620:fe::fe:11]

dns:
  enable: true
  ipv6: true
  listen: 0.0.0.0:1053
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.0/15
  fake-ip-range6: fc00::/16
  fake-ip-filter-mode: rule
  fake-ip-filter:
    - RULE-SET,fakeip-filter,real-ip
    - RULE-SET,proxy,fake-ip
    - RULE-SET,cn,real-ip
    - MATCH,real-ip
  respect-rules: true
  nameserver:
    # 推荐将 `ecs` 设置为当前宽带运营商分配的默认 DNS 的 IP 段
    - 'https://dns.google/dns-query#ecs=211.137.58.0/24&ecs-override=true'
    - 'quic://dns11.quad9.net:853#ecs=211.137.58.0/24&ecs-override=true'
  proxy-server-nameserver:
    - quic://dns.alidns.com:853
    - https://doh.pub/dns-query
  direct-nameserver:
    - quic://dns.alidns.com:853
    - https://doh.pub/dns-query
  direct-nameserver-follow-policy: true
  nameserver-policy:
    'rule-set:fakeip-filter,cn':
      - quic://dns.alidns.com:853
      - https://doh.pub/dns-query

按一下 Esc 键(退出键),输入英文冒号 :,继续输入 wq 并回车

2. DNS 模式为 fake-ip(不推荐)

  • ① 额外编辑配置文件 在《生成带有自定义策略组和规则的 mihomo 配置文件直链-ruleset 方案/添加模板》编辑 .yaml 配置文件时,将 rules 里所有 IP 相关的规则末尾加上 no-resolve,即修改为:

      - RULE-SET,telegramip,📲 电报消息,no-resolve
      - RULE-SET,privateip,🔒 私有网络,no-resolve
      - RULE-SET,cnip,🀄️ 国内 IP,no-resolve
    
  • ② 连接 SSH 后执行 vi $CRASHDIR/yamls/user.yaml,按一下 Ins 键(Insert 键),粘贴如下内容:

    hosts:
      dns.alidns.com: [223.5.5.5, 223.6.6.6, 2400:3200::1, 2400:3200:baba::1]
      doh.pub: [1.12.12.12, 120.53.53.53]
    
    dns:
      enable: true
      prefer-h3: true
      ipv6: true
      listen: 0.0.0.0:1053
      enhanced-mode: fake-ip
      fake-ip-range: 198.18.0.0/15
      fake-ip-range6: fc00::/16
      fake-ip-filter: [rule-set:fakeip-filter]
      nameserver:
        - quic://dns.alidns.com:853
        - https://doh.pub/dns-query
    

    按一下 Esc 键(退出键),输入英文冒号 :,继续输入 wq 并回车

3. DNS 模式为 redir-host

连接 SSH 后执行 vi $CRASHDIR/yamls/user.yaml,按一下 Ins 键(Insert 键),粘贴如下内容:

推荐将 ecs 设置为当前宽带运营商分配的默认 DNS(可进入光猫或路由器拨号页面查看,或者前往公共 DNS 大全查询)的 IP 段,如默认 DNS 为 211.137.58.20,可设置为 211.137.58.0/24 {: .prompt-info }

hosts:
  dns.alidns.com: [223.5.5.5, 223.6.6.6, 2400:3200::1, 2400:3200:baba::1]
  doh.pub: [1.12.12.12, 120.53.53.53]
  dns.google: [8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844]
  dns11.quad9.net: [9.9.9.11, 149.112.112.11, 2620:fe::11, 2620:fe::fe:11]

dns:
  enable: true
  ipv6: true
  listen: 0.0.0.0:1053
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.0/15
  fake-ip-range6: fc00::/16
  fake-ip-filter: ['+.*']
  respect-rules: true
  nameserver:
    # 推荐将 `ecs` 设置为当前宽带运营商分配的默认 DNS 的 IP 段
    - 'https://dns.google/dns-query#ecs=211.137.58.0/24&ecs-override=true'
    - 'quic://dns11.quad9.net:853#ecs=211.137.58.0/24&ecs-override=true'
  proxy-server-nameserver:
    - quic://dns.alidns.com:853
    - https://doh.pub/dns-query
  direct-nameserver:
    - quic://dns.alidns.com:853
    - https://doh.pub/dns-query
  direct-nameserver-follow-policy: true
  nameserver-policy:
    'rule-set:cn':
      - quic://dns.alidns.com:853
      - https://doh.pub/dns-query

按一下 Esc 键(退出键),输入英文冒号 :,继续输入 wq 并回车