@@ -10,11 +10,11 @@ tags: [sing-box, sing-boxr, ShellCrash, ruleset, rule_set, 进阶, DNS, DNS 泄
1010 {: .prompt-tip }
11111 . 此方案彻底防止了 DNS 泄露(未知域名在匹配 ` route.rules.rule_set:cnip ` 规则时会走国外 DNS 解析且配置 ` client_subnet ` ,解析出 IP 在国内则走 ` 🀄️ 国内 IP ` 规则,否则走 ` 🐟 漏网之鱼 ` 规则),兼容性高,可放心使用
12122 . 本教程以 [ ShellCrash] ( https://github.com/juewuy/ShellCrash ) 为例,其它客户端亦可参考
13- 3 . 本教程搭载 [ sing-box 内核 reF1nd-Stable 版] ( https://github.com/reF1nd/sing-box/tree/reF1nd-stable ) (导入内核方法可参考《[ ShellCrash 和 AdGuard Home 快速安装教程/导入 mihomo 内核 或 sing-box 内核] ( https://proxy-tutorials.dustinwin.us.kg/posts/pin-toolsinstall/#%E4%BA%8C-%E5%AF%BC%E5%85%A5-mihomo-%E5%86%85%E6%A0%B8-%E6%88%96-sing-box-%E5%86%85%E6%A0%B8 ) 》)
13+ 3 . 本教程搭载 [ sing-box 内核 reF1nd-Test 版] ( https://github.com/reF1nd/sing-box/tree/reF1nd-testing ) (导入内核方法可参考《[ ShellCrash 和 AdGuard Home 快速安装教程/导入 mihomo 内核 或 sing-box 内核] ( https://proxy-tutorials.dustinwin.us.kg/posts/pin-toolsinstall/#%E4%BA%8C-%E5%AF%BC%E5%85%A5-mihomo-%E5%86%85%E6%A0%B8-%E6%88%96-sing-box-%E5%86%85%E6%A0%B8 ) 》)
14144 . 可进入 < https://ipleak.net > 测试 DNS 是否泄露,“DNS Addresses” 栏目下没有中国国旗(因 ` ipleak.net ` 属未知域名,默认走 ` 🐟 漏网之鱼 ` 规则),即代表 DNS 没有发生泄露
1515
1616## 一、 导入规则集合文件
17- ` route.rule_set ` 须添加 ` fakeip-filter ` 、` cn ` 和 ` proxy ` ,如下:
17+ ` route.rule_set ` 须添加 ` fakeip-filter ` 、` proxy ` 、 ` cn ` 和 ` cnip ` ,如下:
1818
1919``` json
2020{
@@ -27,6 +27,13 @@ tags: [sing-box, sing-boxr, ShellCrash, ruleset, rule_set, 进阶, DNS, DNS 泄
2727 "path" : " ./ruleset/fakeip-filter.srs" ,
2828 "url" : " https://github.com/DustinWin/ruleset_geodata/releases/download/sing-box-ruleset/fakeip-filter.srs"
2929 },
30+ {
31+ "tag" : " proxy" ,
32+ "type" : " remote" ,
33+ "format" : " binary" ,
34+ "path" : " ./ruleset/proxy.srs" ,
35+ "url" : " https://github.com/DustinWin/ruleset_geodata/releases/download/sing-box-ruleset/proxy.srs"
36+ },
3037 {
3138 "tag" : " cn" ,
3239 "type" : " remote" ,
@@ -35,21 +42,26 @@ tags: [sing-box, sing-boxr, ShellCrash, ruleset, rule_set, 进阶, DNS, DNS 泄
3542 "url" : " https://github.com/DustinWin/ruleset_geodata/releases/download/sing-box-ruleset/cn.srs"
3643 },
3744 {
38- "tag" : " proxy " ,
45+ "tag" : " cnip " ,
3946 "type" : " remote" ,
4047 "format" : " binary" ,
41- "path" : " ./ruleset/proxy .srs" ,
42- "url" : " https://github.com/DustinWin/ruleset_geodata/releases/download/sing-box-ruleset/proxy .srs"
48+ "path" : " ./ruleset/cnip .srs" ,
49+ "url" : " https://github.com/DustinWin/ruleset_geodata/releases/download/sing-box-ruleset/cnip .srs"
4350 }
4451 ]
4552 }
4653}
4754```
4855
4956## 二、 ShellCrash 防泄漏配置
50- 进入 ShellCrash 配置脚本 → 2) 功能设置 → 2) DNS 设置 → 9) 修改 DNS 服务器,将“DIRECT-DNS”、“PROXY-DNS”和“DEFAULT-DNS”都设置为 ` null `
57+ 1 . 进入 ShellCrash 配置脚本 → 2) 功能设置 → 2) DNS 设置 → 9) 修改 DNS 服务器,将“DIRECT-DNS”、“PROXY-DNS”和“DEFAULT-DNS”都设置为 ` null `
5158<img src =" /assets/img/dns/dns-null.png " alt =" ShellCrash 设置 " width =" 60% " />
5259
60+ 2 . 连接 SSH 后执行如下命令:
61+ ``` shell
62+ sed -z -i ' s/{\s*"ip_accept_any": true,\s*"server": "hosts"\s*}/{ "action": "evaluate", "server": "hosts" },\
63+ { "match_response": true, "ip_accept_any": true, "action": "respond" }/' $CRASHDIR /starts/singbox_modify.sh
64+ ```
5365## 三、 DNS 防泄漏配置
5466### 1. DNS 模式为 ` mix ` (推荐)
5567- ① 连接 SSH 后执行命令 ` vi $CRASHDIR/jsons/dns.json ` ,按一下 Ins 键(Insert 键),修改为如下内容:
@@ -86,14 +98,15 @@ tags: [sing-box, sing-boxr, ShellCrash, ruleset, rule_set, 进阶, DNS, DNS 泄
8698 { "rule_set" : [ " fakeip-filter" ], "server" : " dns_direct" },
8799 { "query_type" : [ " A" , " AAAA" ], "rule_set" : [ " proxy" ], "server" : " dns_fakeip" },
88100 { "rule_set" : [ " cn" ], "server" : " dns_direct" },
101+ // 推荐将 `client_subnet` 设置为当前宽带运营商分配的默认 DNS 的 IP 段
102+ { "action" : " evaluate" , "server" : " dns_proxy" , "client_subnet" : " 211.137.58.0/24" },
103+ { "match_response" : true , "rule_set" : [ " cnip" ] , "action" : " respond" },
89104 { "query_type" : [ " A" , " AAAA" ], "server" : " dns_fakeip" }
90105 ],
91106 "final" : " dns_proxy" ,
92107 "strategy" : " prefer_ipv4" ,
93- "independent_cache" : true ,
94- "reverse_mapping" : true ,
95- // 推荐将 `client_subnet` 设置为当前宽带运营商分配的默认 DNS 的 IP 段
96- "client_subnet" : " 211.137.58.0/24"
108+ "optimistic" : true ,
109+ "reverse_mapping" : true
97110 }
98111 }
99112 ```
@@ -150,7 +163,7 @@ tags: [sing-box, sing-boxr, ShellCrash, ruleset, rule_set, 进阶, DNS, DNS 泄
150163 ],
151164 "final" : " dns_proxy" ,
152165 "strategy" : " prefer_ipv4" ,
153- "independent_cache " : true ,
166+ "optimistic " : true ,
154167 "reverse_mapping" : true ,
155168 // 推荐将 `client_subnet` 设置为当前宽带运营商分配的默认 DNS 的 IP 段
156169 "client_subnet" : " 211.137.58.0/24"
@@ -206,14 +219,15 @@ tags: [sing-box, sing-boxr, ShellCrash, ruleset, rule_set, 进阶, DNS, DNS 泄
206219 { "clash_mode" : [ " Direct" ], "server" : " dns_direct" },
207220 { "clash_mode" : [ " Global" ], "server" : " dns_proxy" },
208221 { "rule_set" : [ " proxy" ], "server" : " dns_proxy" },
209- { "rule_set" : [ " cn" ], "server" : " dns_direct" }
222+ { "rule_set" : [ " cn" ], "server" : " dns_direct" },
223+ // 推荐将 `client_subnet` 设置为当前宽带运营商分配的默认 DNS 的 IP 段
224+ { "action" : " evaluate" , "server" : " dns_proxy" , "client_subnet" : " 211.137.58.0/24" },
225+ { "match_response" : true , "rule_set" : [ " cnip" ] , "action" : " respond" }
210226 ],
211227 "final" : " dns_proxy" ,
212228 "strategy" : " prefer_ipv4" ,
213- "independent_cache" : true ,
214- "reverse_mapping" : true ,
215- // 推荐将 `client_subnet` 设置为当前宽带运营商分配的默认 DNS 的 IP 段
216- "client_subnet" : " 211.137.58.0/24"
229+ "optimistic" : true ,
230+ "reverse_mapping" : true
217231 }
218232 }
219233 ```
0 commit comments