在部分网络环境中
一般情况下
这种无法访问的情况可以在 Clash 的日志中确定
解决方案是在订阅配置的以下字段的最前面加上内部网络域名的 DNS 策略
nameserver-policy:
+.internal.crop.com: # <- 需要修改为实际内网域名,使用 "," 分割多个域名
- "system" # <- 或者修改为实际内网 DNS
可以使用以下域名通配符以便于匹配
通配符*
- Clash 的通配符*
只能匹配一级域名*.xxx.edu.cn
只能够匹配git.xxx.edu.cn
而不能匹配user.git.xxx.edu.cn
通配符+
- Clash 的通配符+
可以匹配多个或零个级别+.xxx.edu.cn
匹配xxx.edu.cn
git.xxx.edu.cn
,user.git.xxx.edu.cn
等等
通配符.
- Clash 的通配符.
可以匹配多个级别+.xxx.edu.cn
匹配git.xxx.edu.cn
,user.git.xxx.edu.cn
等等
也可以使用下面的脚本来自动化这个设置
// Define the `main` function
function main(params) {
if (!params.dns) {
params.dns = {};
}
const nameserverPolicy = {};
nameserverPolicy["+.internal.crop.com"] = [
"system"
];
const rawNameserverPolicy = params.dns["nameserver-policy"] ?? {};
for (let prop in rawNameserverPolicy) {
if (!nameserverPolicy.hasOwnProperty(prop)) {
nameserverPolicy[prop] = rawNameserverPolicy[prop];
}
}
params.dns["nameserver-policy"] = nameserverPolicy;
return params;
}
需要注意的是nameserver-policy
字段的覆盖关系是从上到下的nameserver-policy
策略nameserver-policy
最前方10.10.0.21