You've already forked Xray-docs-next
mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2025-12-15 09:55:33 +08:00
配图:入门技巧 - 用 DNS 实现精准境内外分流 (#768)
This commit is contained in:
@@ -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 入站等场景。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user