Skip to content

Commit 6ffd7af

Browse files
committed
优化 DNS 分流和 DNS 防泄漏配置
1 parent 3f6a5c5 commit 6ffd7af

6 files changed

+199
-150
lines changed

_posts/2024-08-21-dnsbypass-mihomo-geodata.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ tags: [Clash, mihomo, 进阶, DNS, DNS 分流]
1010
{: .prompt-tip }
1111
1. 使用 [ShellCrash](https://github.com/juewuy/ShellCrash) 搭配 [AdGuard Home](https://github.com/AdguardTeam/AdGuardHome) 并将 AdGuard Home 作为上游时不要使用该方法
1212
2. 本教程以 ShellCrash 为例,其它客户端亦可参考
13-
3. DNS 分流简单来说就是**指定国内域名走国内 DNS 解析,其它域名包括国外域名都走 `fake-ip`,未知域名走国内 DNS 解析,解析出 IP 在国内则走 `🀄️ 直连 IP` 规则,否则走 `🐟 漏网之鱼` 规则**
13+
3. DNS 分流简单来说就是**指定国内域名走国内 DNS 解析,国外域名走 `fake-ip`**。未知域名也走 `fake-ip`(在匹配 `rules.GEOIP:cn` 规则时会由国内 DNS 解析,解析出 IP 在国内则走 `🀄️ 直连 IP` 规则,否则走 `🐟 漏网之鱼` 规则
1414
4. 部分用户觉得未知域名处理方式会导致 DNS 泄露,可参考《[搭载 mihomo 内核配置 DNS 不泄露教程-geodata 方案](https://proxy-tutorials.dustinwin.us.kg/posts/dnsnoleaks-mihomo-geodata)
1515

1616
## 一、 导入路由规则文件
@@ -35,9 +35,9 @@ dns:
3535
prefer-h3: true
3636
ipv6: true
3737
listen: 0.0.0.0:1053
38+
enhanced-mode: fake-ip
3839
fake-ip-range: 28.0.0.1/8
3940
fake-ip-range6: fc00::/16
40-
enhanced-mode: fake-ip
4141
fake-ip-filter: ['geosite:fakeip-filter,cn']
4242
nameserver:
4343
- https://dns.alidns.com/dns-query

_posts/2024-08-21-dnsbypass-mihomo-ruleset.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ tags: [Clash, mihomo, 进阶, DNS, DNS 分流]
1010
{: .prompt-tip }
1111
1. 使用 [ShellCrash](https://github.com/juewuy/ShellCrash) 搭配 [AdGuard Home](https://github.com/AdguardTeam/AdGuardHome) 并将 AdGuard Home 作为上游时不要使用该方法
1212
2. 本教程以 ShellCrash 为例,其它客户端亦可参考
13-
3. DNS 分流简单来说就是**指定国内域名走国内 DNS 解析,其它域名包括国外域名都走 `fake-ip`,未知域名走国内 DNS 解析,解析出 IP 在国内则走 `🀄️ 直连 IP` 规则,否则走 `🐟 漏网之鱼` 规则**
13+
3. DNS 分流简单来说就是**指定国内域名走国内 DNS 解析,国外域名走 `fake-ip`**。未知域名也走 `fake-ip`(在匹配 `rules.RULE-SET:cn` 规则时会由国内 DNS 解析,解析出 IP 在国内则走 `🀄️ 直连 IP` 规则,否则走 `🐟 漏网之鱼` 规则
1414
4. 部分用户觉得未知域名处理方式会导致 DNS 泄露,可参考《[搭载 mihomo 内核配置 DNS 不泄露教程-ruleset 方案](https://proxy-tutorials.dustinwin.us.kg/posts/dnsnoleaks-mihomo-ruleset)
1515

1616
## 一、 导入规则集合文件
@@ -54,9 +54,9 @@ dns:
5454
prefer-h3: true
5555
ipv6: true
5656
listen: 0.0.0.0:1053
57+
enhanced-mode: fake-ip
5758
fake-ip-range: 28.0.0.1/8
5859
fake-ip-range6: fc00::/16
59-
enhanced-mode: fake-ip
6060
fake-ip-filter: ['rule-set:fakeip-filter,cn']
6161
nameserver:
6262
- https://dns.alidns.com/dns-query

_posts/2024-08-21-dnsnoleaks-mihomo-geodata.md

Lines changed: 14 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ tags: [Clash, mihomo, 进阶, DNS, DNS 泄露]
88

99
> 说明
1010
{: .prompt-tip }
11-
1. 此方案彻底防止了 DNS 泄露(针对未知域名走国外 DNS 解析,解析出 IP 在国内则走 `🀄️ 直连 IP` 规则,否则走 `🐟 漏网之鱼` 规则),兼容性无法保证,请慎用
11+
1. 此方案彻底防止了 DNS 泄露(未知域名在匹配 `rules.GEOIP:cn` 规则时会走国外 DNS 解析且配置 `ecs`,解析出 IP 在国内则走 `🀄️ 直连 IP` 规则,否则走 `🐟 漏网之鱼` 规则),兼容性高,可放心使用
1212
2. 本教程以 [ShellCrash](https://github.com/juewuy/ShellCrash) 为例,其它客户端亦可参考
1313
3. 可进入 <https://ipleak.net> 测试 DNS 是否泄露,“DNS Addresses” 栏目下没有中国国旗(因 `ipleak.net` 属未知域名,默认走 `🐟 漏网之鱼` 规则),即代表 DNS 没有发生泄露
1414

@@ -20,7 +20,7 @@ geosite.dat 文件须包含 `fakeip-filter` 和 `cn`,推荐导入我定制的[
2020
<img src="/assets/img/dns/dns-null.png" alt="ShellCrash 设置" width="60%" />
2121

2222
## 三、 DNS 防泄漏配置
23-
### 1. DNS 模式为 `mix` 并配置 `ecs`(推荐)
23+
### 1. DNS 模式为 `mix`(推荐)
2424
连接 SSH 后执行 `vi $CRASHDIR/yamls/user.yaml`,按一下 Ins 键(Insert 键),粘贴如下内容:
2525
>推荐将 `ecs` 设置为当前网络的公网 IP 段,如当前网络公网 IP 为 `202.103.17.123`,可设置为 `202.103.17.0/24`(后续维护更新可直接执行命令 `sed -i -E "s/(ecs=)[0-9.]+\/[0-9]+/\1$(curl -s 4.ipw.cn | cut -d. -f1-3).0\/24/" $CRASHDIR/yamls/user.yaml`
2626
{: .prompt-info }
@@ -36,9 +36,9 @@ dns:
3636
enable: true
3737
ipv6: true
3838
listen: 0.0.0.0:1053
39+
enhanced-mode: fake-ip
3940
fake-ip-range: 28.0.0.1/8
4041
fake-ip-range6: fc00::/16
41-
enhanced-mode: fake-ip
4242
fake-ip-filter: ['geosite:fakeip-filter,cn']
4343
respect-rules: true
4444
nameserver:
@@ -55,39 +55,7 @@ dns:
5555
5656
按一下 Esc 键(退出键),输入英文冒号 `:`,继续输入 `wq` 并回车
5757

58-
### 2. DNS 模式为 `mix`
59-
连接 SSH 后执行 `vi $CRASHDIR/yamls/user.yaml`,按一下 Ins 键(Insert 键),粘贴如下内容:
60-
61-
```yaml
62-
hosts:
63-
dns.alidns.com: [223.5.5.5, 223.6.6.6, 2400:3200::1, 2400:3200:baba::1]
64-
doh.pub: [1.12.12.12, 1.12.12.21, 120.53.53.53]
65-
dns.google: [8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844]
66-
cloudflare-dns.com: [1.1.1.1, 1.0.0.1, 2606:4700:4700::1111, 2606:4700:4700::1001]
67-
68-
dns:
69-
enable: true
70-
ipv6: true
71-
listen: 0.0.0.0:1053
72-
fake-ip-range: 28.0.0.1/8
73-
fake-ip-range6: fc00::/16
74-
enhanced-mode: fake-ip
75-
fake-ip-filter: ['geosite:fakeip-filter,cn']
76-
respect-rules: true
77-
nameserver:
78-
- https://dns.google/dns-query
79-
- https://cloudflare-dns.com/dns-query
80-
proxy-server-nameserver:
81-
- https://dns.alidns.com/dns-query
82-
- https://doh.pub/dns-query
83-
direct-nameserver:
84-
- https://dns.alidns.com/dns-query
85-
- https://doh.pub/dns-query
86-
```
87-
88-
按一下 Esc 键(退出键),输入英文冒号 `:`,继续输入 `wq` 并回车
89-
90-
### 3. DNS 模式为 `fake-ip`
58+
### 2. DNS 模式为 `fake-ip`(不推荐)
9159
- ① 额外编辑配置文件,在《[生成带有自定义策略组和规则的 mihomo 配置文件直链-geodata 方案/添加模板](https://proxy-tutorials.dustinwin.us.kg/posts/link-mihomo-geodata/#%E4%BA%8C-%E6%B7%BB%E5%8A%A0%E6%A8%A1%E6%9D%BF)》编辑 .yaml 配置文件时,将 `rules` 里的所有 `GEOIP` 规则末尾加上 `no-resolve`,即修改为:
9260

9361
```yaml
@@ -107,39 +75,42 @@ dns:
10775
prefer-h3: true
10876
ipv6: true
10977
listen: 0.0.0.0:1053
78+
enhanced-mode: fake-ip
11079
fake-ip-range: 28.0.0.1/8
11180
fake-ip-range6: fc00::/16
112-
enhanced-mode: fake-ip
11381
fake-ip-filter: ['geosite:fakeip-filter']
11482
nameserver:
11583
- https://dns.alidns.com/dns-query
11684
- https://doh.pub/dns-query
11785
```
11886

119-
- 按一下 Esc 键(退出键),输入英文冒号 `:`,继续输入 `wq` 并回车
87+
按一下 Esc 键(退出键),输入英文冒号 `:`,继续输入 `wq` 并回车
12088

121-
### 4. DNS 模式为 `redir-host`
89+
### 3. DNS 模式为 `redir-host`
12290
连接 SSH 后执行 `vi $CRASHDIR/yamls/user.yaml`,按一下 Ins 键(Insert 键),粘贴如下内容:
91+
>推荐将 `ecs` 设置为当前网络的公网 IP 段,如当前网络公网 IP 为 `202.103.17.123`,可设置为 `202.103.17.0/24`(后续维护更新可直接执行命令 `sed -i -E "s/(ecs=)[0-9.]+\/[0-9]+/\1$(curl -s 4.ipw.cn | cut -d. -f1-3).0\/24/" $CRASHDIR/yamls/user.yaml`)
92+
{: .prompt-info }
12393

12494
```yaml
12595
hosts:
12696
dns.alidns.com: [223.5.5.5, 223.6.6.6, 2400:3200::1, 2400:3200:baba::1]
12797
doh.pub: [1.12.12.12, 1.12.12.21, 120.53.53.53]
12898
dns.google: [8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844]
129-
cloudflare-dns.com: [1.1.1.1, 1.0.0.1, 2606:4700:4700::1111, 2606:4700:4700::1001]
99+
dns11.quad9.net: [9.9.9.11, 149.112.112.11, 2620:fe::11, 2620:fe::fe:11]
130100
131101
dns:
132102
enable: true
133103
ipv6: true
134104
listen: 0.0.0.0:1053
105+
enhanced-mode: fake-ip
135106
fake-ip-range: 28.0.0.1/8
136107
fake-ip-range6: fc00::/16
137-
enhanced-mode: fake-ip
138108
fake-ip-filter: ['+.*']
139109
respect-rules: true
140110
nameserver:
141-
- https://dns.google/dns-query
142-
- https://cloudflare-dns.com/dns-query
111+
# 推荐将 `ecs` 设置为当前网络的公网 IP 段
112+
- 'https://dns.google/dns-query#ecs=202.103.17.0/24'
113+
- 'https://dns11.quad9.net/dns-query#ecs=202.103.17.0/24'
143114
proxy-server-nameserver:
144115
- https://dns.alidns.com/dns-query
145116
- https://doh.pub/dns-query

_posts/2024-08-21-dnsnoleaks-mihomo-ruleset.md

Lines changed: 14 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ tags: [Clash, mihomo, 进阶, DNS, DNS 泄露]
88

99
> 说明
1010
{: .prompt-tip }
11-
1. 此方案彻底防止了 DNS 泄露(针对未知域名走国外 DNS 解析,解析出 IP 在国内则走 `🀄️ 直连 IP` 规则,否则走 `🐟 漏网之鱼` 规则),兼容性无法保证,请慎用
11+
1. 此方案彻底防止了 DNS 泄露(未知域名在匹配 `rules.RULE-SET:cn` 规则时会走国外 DNS 解析且配置 `ecs`,解析出 IP 在国内则走 `🀄️ 直连 IP` 规则,否则走 `🐟 漏网之鱼` 规则),兼容性高,可放心使用
1212
2. 本教程以 [ShellCrash](https://github.com/juewuy/ShellCrash) 为例,其它客户端亦可参考
1313
3. 可进入 <https://ipleak.net> 测试 DNS 是否泄露,“DNS Addresses” 栏目下没有中国国旗(因 `ipleak.net` 属未知域名,默认走 `🐟 漏网之鱼` 规则),即代表 DNS 没有发生泄露
1414

@@ -39,7 +39,7 @@ rule-providers:
3939
<img src="/assets/img/dns/dns-null.png" alt="ShellCrash 设置" width="60%" />
4040

4141
## 三、 DNS 防泄漏配置
42-
### 1. DNS 模式为 `mix` 并配置 `ecs`(推荐)
42+
### 1. DNS 模式为 `mix`(推荐)
4343
连接 SSH 后执行 `vi $CRASHDIR/yamls/user.yaml`,按一下 Ins 键(Insert 键),粘贴如下内容:
4444
>推荐将 `ecs` 设置为当前网络的公网 IP 段,如当前网络公网 IP 为 `202.103.17.123`,可设置为 `202.103.17.0/24`(后续维护更新可直接执行命令 `sed -i -E "s/(ecs=)[0-9.]+\/[0-9]+/\1$(curl -s 4.ipw.cn | cut -d. -f1-3).0\/24/" $CRASHDIR/yamls/user.yaml`)
4545
{: .prompt-info }
@@ -55,9 +55,9 @@ dns:
5555
enable: true
5656
ipv6: true
5757
listen: 0.0.0.0:1053
58+
enhanced-mode: fake-ip
5859
fake-ip-range: 28.0.0.1/8
5960
fake-ip-range6: fc00::/16
60-
enhanced-mode: fake-ip
6161
fake-ip-filter: ['rule-set:fakeip-filter,cn']
6262
respect-rules: true
6363
nameserver:
@@ -74,39 +74,7 @@ dns:
7474
7575
按一下 Esc 键(退出键),输入英文冒号 `:`,继续输入 `wq` 并回车
7676

77-
### 2. DNS 模式为 `mix`
78-
连接 SSH 后执行 `vi $CRASHDIR/yamls/user.yaml`,按一下 Ins 键(Insert 键),粘贴如下内容:
79-
80-
```yaml
81-
hosts:
82-
dns.alidns.com: [223.5.5.5, 223.6.6.6, 2400:3200::1, 2400:3200:baba::1]
83-
doh.pub: [1.12.12.12, 1.12.12.21, 120.53.53.53]
84-
dns.google: [8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844]
85-
cloudflare-dns.com: [1.1.1.1, 1.0.0.1, 2606:4700:4700::1111, 2606:4700:4700::1001]
86-
87-
dns:
88-
enable: true
89-
ipv6: true
90-
listen: 0.0.0.0:1053
91-
fake-ip-range: 28.0.0.1/8
92-
fake-ip-range6: fc00::/16
93-
enhanced-mode: fake-ip
94-
fake-ip-filter: ['rule-set:fakeip-filter,cn']
95-
respect-rules: true
96-
nameserver:
97-
- https://dns.google/dns-query
98-
- https://cloudflare-dns.com/dns-query
99-
proxy-server-nameserver:
100-
- https://dns.alidns.com/dns-query
101-
- https://doh.pub/dns-query
102-
direct-nameserver:
103-
- https://dns.alidns.com/dns-query
104-
- https://doh.pub/dns-query
105-
```
106-
107-
按一下 Esc 键(退出键),输入英文冒号 `:`,继续输入 `wq` 并回车
108-
109-
### 3. DNS 模式为 `fake-ip`
77+
### 2. DNS 模式为 `fake-ip`(不推荐)
11078
- ① 额外编辑配置文件
11179
在《[生成带有自定义策略组和规则的 mihomo 配置文件直链-ruleset 方案/添加模板](https://proxy-tutorials.dustinwin.us.kg/posts/link-mihomo-ruleset/#%E4%BA%8C-%E6%B7%BB%E5%8A%A0%E6%A8%A1%E6%9D%BF)》编辑 .yaml 配置文件时,将 `rules` 里所有 IP 相关的规则末尾加上 `no-resolve`,即修改为:
11280

@@ -128,39 +96,42 @@ dns:
12896
prefer-h3: true
12997
ipv6: true
13098
listen: 0.0.0.0:1053
99+
enhanced-mode: fake-ip
131100
fake-ip-range: 28.0.0.1/8
132101
fake-ip-range6: fc00::/16
133-
enhanced-mode: fake-ip
134102
fake-ip-filter: ['rule-set:fakeip-filter']
135103
nameserver:
136104
- https://dns.alidns.com/dns-query
137105
- https://doh.pub/dns-query
138106
```
139107

140-
- 按一下 Esc 键(退出键),输入英文冒号 `:`,继续输入 `wq` 并回车
108+
按一下 Esc 键(退出键),输入英文冒号 `:`,继续输入 `wq` 并回车
141109

142-
### 4. DNS 模式为 `redir-host`
110+
### 3. DNS 模式为 `redir-host`
143111
连接 SSH 后执行 `vi $CRASHDIR/yamls/user.yaml`,按一下 Ins 键(Insert 键),粘贴如下内容:
112+
>推荐将 `ecs` 设置为当前网络的公网 IP 段,如当前网络公网 IP 为 `202.103.17.123`,可设置为 `202.103.17.0/24`(后续维护更新可直接执行命令 `sed -i -E "s/(ecs=)[0-9.]+\/[0-9]+/\1$(curl -s 4.ipw.cn | cut -d. -f1-3).0\/24/" $CRASHDIR/yamls/user.yaml`)
113+
{: .prompt-info }
144114

145115
```yaml
146116
hosts:
147117
dns.alidns.com: [223.5.5.5, 223.6.6.6, 2400:3200::1, 2400:3200:baba::1]
148118
doh.pub: [1.12.12.12, 1.12.12.21, 120.53.53.53]
149119
dns.google: [8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844]
150-
cloudflare-dns.com: [1.1.1.1, 1.0.0.1, 2606:4700:4700::1111, 2606:4700:4700::1001]
120+
dns11.quad9.net: [9.9.9.11, 149.112.112.11, 2620:fe::11, 2620:fe::fe:11]
151121
152122
dns:
153123
enable: true
154124
ipv6: true
155125
listen: 0.0.0.0:1053
126+
enhanced-mode: fake-ip
156127
fake-ip-range: 28.0.0.1/8
157128
fake-ip-range6: fc00::/16
158-
enhanced-mode: fake-ip
159129
fake-ip-filter: ['+.*']
160130
respect-rules: true
161131
nameserver:
162-
- https://dns.google/dns-query
163-
- https://cloudflare-dns.com/dns-query
132+
# 推荐将 `ecs` 设置为当前网络的公网 IP 段
133+
- 'https://dns.google/dns-query#ecs=202.103.17.0/24'
134+
- 'https://dns11.quad9.net/dns-query#ecs=202.103.17.0/24'
164135
proxy-server-nameserver:
165136
- https://dns.alidns.com/dns-query
166137
- https://doh.pub/dns-query

_posts/2024-08-22-dnsbypass-singboxr-ruleset.md

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ tags: [sing-box, sing-boxr, ShellCrash, ruleset, rule_set, 进阶, DNS, DNS 分
1010
{: .prompt-tip }
1111
1. [ShellCrash](https://github.com/juewuy/ShellCrash) 搭配 [AdGuard Home](https://github.com/AdguardTeam/AdGuardHome) 并将 AdGuard Home 作为上游时不要使用该方法
1212
2. 本教程以 ShellCrash 为例,其它客户端亦可参考
13-
3. DNS 分流简单来说就是**指定国内域名走国内 DNS 解析,国外域名走 `fake-ip`,未知域名走国内 DNS 解析,解析出 IP 在国内则走国内 DNS 解析和 `🀄️ 直连 IP` 规则,否则走 `fake-ip``🐟 漏网之鱼` 规则**
13+
3. DNS 分流简单来说就是**指定国内域名走国内 DNS 解析,国外域名走 `fakeip`**。未知域名也走 `fakeip`(在匹配 `route.rules.rule_set:cn` 规则时会由国内 DNS 解析,解析出 IP 在国内则走 `🀄️ 直连 IP` 规则,否则走 `🐟 漏网之鱼` 规则
1414
4. 部分用户觉得未知域名处理方式会导致 DNS 泄露,可参考《[搭载 sing-boxr 内核配置 DNS 不泄露教程-ruleset 方案](https://proxy-tutorials.dustinwin.us.kg/posts/dnsnoleaks-singboxr-ruleset)
1515

1616
## 一、 导入规则集合文件
17-
`route.rule_set` 须添加 `fakeip-filter``cn``proxy`,如下:
17+
`route.rule_set` 须添加 `fakeip-filter` `cn`,如下:
1818

1919
```json
2020
{
@@ -33,13 +33,6 @@ tags: [sing-box, sing-boxr, ShellCrash, ruleset, rule_set, 进阶, DNS, DNS 分
3333
"format": "binary",
3434
"path": "./ruleset/cn.srs",
3535
"url": "https://github.com/DustinWin/ruleset_geodata/releases/download/sing-box-ruleset/cn.srs"
36-
},
37-
{
38-
"tag": "proxy",
39-
"type": "remote",
40-
"format": "binary",
41-
"path": "./ruleset/proxy.srs",
42-
"url": "https://github.com/DustinWin/ruleset_geodata/releases/download/sing-box-ruleset/proxy.srs"
4336
}
4437
]
4538
}
@@ -67,7 +60,7 @@ tags: [sing-box, sing-boxr, ShellCrash, ruleset, rule_set, 进阶, DNS, DNS 分
6760
"dns.google": [ "8.8.8.8", "8.8.4.4", "2001:4860:4860::8888", "2001:4860:4860::8844" ]
6861
}
6962
},
70-
{ "tag": "dns_resolver", "type": "https", "server": "223.5.5.5"},
63+
{ "tag": "dns_resolver", "type": "https", "server": "223.5.5.5" },
7164
{ "tag": "dns_direct", "type": "quic", "server": "dns.alidns.com", "domain_resolver": "dns_resolver" },
7265
// `outbounds` 里必须存在 `🚀 节点选择`
7366
{ "tag": "dns_proxy", "type": "https", "server": "dns.google", "domain_resolver": "dns_resolver", "detour": "🚀 节点选择" },

0 commit comments

Comments
 (0)