配图:入门技巧 - 用 DNS 实现精准境内外分流 (#768)

This commit is contained in:
Meow
2025-12-01 12:20:36 +08:00
committed by GitHub
parent b9730a1ea8
commit ac14ce5ecd

View File

@@ -25,13 +25,13 @@
未知的域名假如在中国有服务器,希望尽可能直连,但一顿操作后遇到了传说中的 [DNS Leak](https://github.com/XTLS/BBS/issues/3#issuecomment-3505661189) 怎么办?
那么有没有什么办法能做到 100% 安全又精准的分流呢?
那么有没有什么办法能做到 99.99% 安全又精准的分流呢?
答案是:包的。
## 利用 Xray-core DNS 模块实现精准分流
合理利用 Xray ~~如轮椅般~~强大的内置 DNS 自带的回落、ECS、IP 过滤、打 Tag 等功能,精心调整它们的顺序。如此你便得到了最精确的 IP 作为分流条件
合理利用 Xray ~~如轮椅般~~强大的内置 DNS 自带的回落、ECS、IP 过滤、打 Tag 等功能,精心调整它们的顺序。如此你便得到了比 geosite cn/!cn 更为精确且实时的 IP 作为分流条件,因为 IP 归属地,特别是 cn 归属地变更频率较低
在继续阅读本文之前,你需要充分阅读并理解“入门技巧:路由 (routing) 功能简析[上篇](./routing-lv1-part1.html)、[下篇](./routing-lv1-part2.html)”。
与此同时你已经快要把官方配置指南给翻烂了,因此你完全理解了路由和出站中的 domainStrategy、入站中 sniffing 各选项的作用、以及其不同值的组合下产生的行为。
@@ -162,13 +162,45 @@ socks、http 入站时,请求的就是域名,到了路由后,路由中非
}
```
你可以根据它解析出的 IP 结合域名、或者完全靠 IP 来分流。
```mermaid
graph TD
A[收到 DNS 查询请求] --> B{域名分类判断};
realIp 透明代理环境,你甚至可以在劫持 DNS 后,设置 domainStrategy=AsIs、routeOnly=true 做全程无二次 DNS 解析。
B -->|geosite:google<br>谷歌域名| C["通过<b>代理</b>查询<br>国外DNS (1.1.1.1...)"];
C --> C_OUT[大概率返回国外IP];
C_OUT --> Z[结束查询];
> 注意:这里说的 CDN 友好,境外部分是针对你代理服务器所在位置做的优化,如果你是仅黑名单走代理,而非全部境外流量都走代理,需要自行调整规则。
B -->|geosite:cn<br>已知疑似国内域名| D["通过<b>直连</b>查询<br>国内DNS (114, AliDNS)"];
D --> E{解析结果是国内IP?};
E -->|"是 (符合预期)"| F_OUT[返回国内IP];
F_OUT --> Z;
E -->|"否 (被污染/分类错/退华)"| G["<b>回落</b>: 通过<b>代理</b>查询<br>国外DNS (1.1.1.1...)"];
G --> G_OUT[返回正确的国外IP];
G_OUT --> Z;
---
B -->|geosite:geolocation-!cn<br>已知疑似国外域名| I["通过<b>代理</b>查询<br>国外DNS (1.1.1.1...)"];
I --> J{解析结果是国外IP?};
J -->|"是 (符合预期)"| K_OUT[返回国外IP];
K_OUT --> Z;
J -->|"否 (意外返回国内IP 分类错)"| L["<b>回落</b>: 通过<b>代理+ECS</b>查询<br>国外DNS (8.8.8.8...)"];
L --> L_OUT[返回优化的国内IP];
L_OUT --> Z;
B -->|未知域名| N["通过<b>代理+ECS</b>查询<br>国外DNS (8.8.8.8...)<br>期望获得国内IP"];
N --> O{解析结果是国内IP?};
O -->|"是 (有国内服务器)"| P_OUT[返回国内IP];
P_OUT --> Z;
O -->|"否 (纯国外网站)"| Q["<b>回落</b>: 通过<b>代理</b>查询<br>国外DNS (1.1.1.1...)"];
Q --> Q_OUT[返回优化的国外IP];
Q_OUT --> Z;
```
你可以根据此配置解析出的 IP 结合域名、或者完全靠 IP 来分流。
realIp 透明代理环境,你甚至可以在保证完全劫持各种渠道的 DNS 后,设置 domainStrategy=AsIs、routeOnly=true 做全程无二次 DNS 解析。
> 注意:上面说的 CDN 友好,境外部分是针对你代理服务器所在位置做的优化,如果你是仅黑名单走代理,而非全部境外流量都走代理,需要自行调整规则中的 ECS。
#### 例子 2此配置解析出正确但不保证国外 CDN 友好的地址,保证无 DNS Leak 的同时,只要中国有服务器节点就能优先解析出来,适合 fakeIp 透明代理、socks、http 入站等场景。