clash 防止dns泄露

这个网址用来检查dns是否泄露,一旦发现下面有任何的国内ip出现就意味着dns泄露了。

很多地方给出的典型配置可能是这样的,我由于tun需要经常开关所以不能用fake-ip,清缓存太麻烦了,而且fake-ip也只能保护敏感域名

YAML
dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - +.stun.*.*
    - +.stun.*.*.*
    - +.stun.*.*.*.*
    - +.stun.*.*.*.*.*
    - "*.n.n.srv.nintendo.net"
    - +.stun.playstation.net
    - xbox.*.*.microsoft.com
    - "*.*.xboxlive.com"
    - "*.msftncsi.com"
    - "*.msftconnecttest.com"
    - WORKGROUP
    - +.* #让所有解析都返回真实ip,因为我看更新日志中打算把redir-host完全删除,所以为了保证在将来可用只能用这种方法
  nameserver:
    - tls://223.5.5.5
    - tls://223.6.6.6
  fallback:
    - tls://1.1.1.1
    - tls://1.0.0.1
    - https://1.1.1.1/dns-query
    - https://1.0.0.1/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN
    ipcidr:
      - 240.0.0.0/4
      - 0.0.0.0/32
YAML

这个配置其实并没有什么问题,但这就是造成dns泄露的根源,因为clash的请求逻辑是

  • 同时向nameserver和fallback中所有dns服务器发起请求,检查nameserver返回最快的值
  • 符合geoip-code指定的国家:直接使用
  • 不符合geoip-code指定的国家 或 符合ipcidr中的值视为被污染:取fallback返回最快的值

这个配置这能让国内访问速度很快,并且国外访问无dns污染,但是国内dns永远能知道所有的dns请求,所以我们应该修改一下,保证nameserver和fallback中不存在国内dns。

YAML
dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - +.stun.*.*
    - +.stun.*.*.*
    - +.stun.*.*.*.*
    - +.stun.*.*.*.*.*
    - "*.n.n.srv.nintendo.net"
    - +.stun.playstation.net
    - xbox.*.*.microsoft.com
    - "*.*.xboxlive.com"
    - "*.msftncsi.com"
    - "*.msftconnecttest.com"
    - WORKGROUP
    - +.*
  nameserver:
    - tls://1.1.1.1
    - tls://1.0.0.1
    - https://1.1.1.1/dns-query
    - https://1.0.0.1/dns-query
YAML

这时候肯定就会有一个问题,国内网站解析太慢,以及解析的地区不对访问太慢怎么办,为了dns不泄露,那只能辛苦一点,把平时常访问的国内域名单独加上

YAML
dns:
  enable: true
  ipv6: true
  listen: :53
  use-hosts: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - +.stun.*.*
    - +.stun.*.*.*
    - +.stun.*.*.*.*
    - +.stun.*.*.*.*.*
    - "*.n.n.srv.nintendo.net"
    - +.stun.playstation.net
    - xbox.*.*.microsoft.com
    - "*.*.xboxlive.com"
    - "*.msftncsi.com"
    - "*.msftconnecttest.com"
    - WORKGROUP
    - +.*
  default-nameserver:
    - tls://223.5.5.5
    - tls://223.6.6.6
  nameserver:
    - tls://1.1.1.1
    - tls://1.0.0.1
    - https://1.1.1.1/dns-query
    - https://1.0.0.1/dns-query
  nameserver-policy:
    +.163yun.com: tls://223.5.5.5
    +.163.com: tls://223.5.5.5
    +.netease.com: tls://223.5.5.5
    +.163jiasu.com: tls://223.5.5.5
    +.miyoushe.com: tls://223.5.5.5
    +.bilibili.*: tls://223.5.5.5
    +.tencent.com: tls://223.5.5.5
    +.qq.*: tls://223.5.5.5
    +.baidu.*: tls://223.5.5.5
    +.taobao.com: tls://223.5.5.5
    +.apiintl.biliapi.net: tls://223.5.5.5
    +.upos-hz-mirrorakam.akamaized.net: tls://223.5.5.5
    +.acg.tv: tls://223.5.5.5
    +.acgvideo.com: tls://223.5.5.5
    +.b23.tv: tls://223.5.5.5
    +.biliapi.*: tls://223.5.5.5
    +.biligame.*: tls://223.5.5.5
    +.bilivideo.*: tls://223.5.5.5
    +.hdslb.com: tls://223.5.5.5
    +.im9.com: tls://223.5.5.5
    +.smtcdns.net: tls://223.5.5.5
    +.360buy.*: tls://223.5.5.5
    +.alicdn.*: tls://223.5.5.5
    +.alimama.*: tls://223.5.5.5
    +.alipay.*: tls://223.5.5.5
    +.appzapp.*: tls://223.5.5.5
    +.baidupcs.*: tls://223.5.5.5
    +.ccgslb.*: tls://223.5.5.5
    +.duobao.*: tls://223.5.5.5
    +.jdpay.*: tls://223.5.5.5
    +.moke.*: tls://223.5.5.5
    +.qhimg.*: tls://223.5.5.5
    +.vpimg.*: tls://223.5.5.5
    +.xiami.*: tls://223.5.5.5
    +.xiaomi.*: tls://223.5.5.5
    +.cn: tls://223.5.5.5
YAML

至于自己平时还访问什么国内网站自己加就是了,我这是找了一些规则列表里的国内域名来写的。还有一些别的用途,比如公司内部的dns解析,公网dns解析不出来,可以单独设置公司的域名对应公司内部的网关/dns,这样就不用去设置host。

然而当你打开测试网站的时候会发现,为什么还是泄露了,因为你可能正在用windows,如果是安卓应该就没问题了,安卓会自带全局接管+代理,windows只开代理不能接管全部流量,需要开启tun。

然而可能还是泄露了,因为windows会向所有网卡的dns发起请求,如果不开代理就会由系统发起解析请求,这种情况下没有fake-ip就必须要请求到一个ip应用程序才会开始发起连接,这样dns就会有请求。

所以得tun和代理同时打开,这样能走代理的系统就不会自己解析,直接把域名交给代理来处理,而需要代理的遇到规则会直接不解析。

那就是不想同时打开呢,甚至都不想开呢,就把电脑本身的网卡dns设置为127.0.0.1,这么做的话clash必须开着(不需要tun或代理),并且配置中有listen: :53这行,缺点是clash必须开着,关掉就要把dns改成别的,这也算是好处,只要clash开着就行,不需要将流量路由到clash就能用clash的内置dns。

至于为啥不用fallback-filter.domain写国外域名,因为国内域名少好写,常用的服务就那几家公司那点域名,而且如果不是因为我不喜欢fake-ip其实遇到规则tun也不会解析。

如果想要绝对安全的方法,那就在防火墙里把53端口出站全禁了(本地别禁),或者在网关处设置规则,不过这样会连有些软件本身自带dns的请求也全部拦下来,有点副作用,但是肯定很安全。

文章已创建 33

一个回复在 “clash 防止dns泄露

发表评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部

了解 njj's blog 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读

了解 njj's blog 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读