luckyyyyy / blog

William Chan's Blog
https://williamchan.me/
172 stars 28 forks source link

目前个人使用的DNS方案分享 fade-ip + 前置转发器 #71

Open luckyyyyy opened 1 year ago

luckyyyyy commented 1 year ago

需求

使用fake-ip,但国内需要real-ip,最大可能国内real-ip+绕过内核

此方案不适用于 openclash 仅适用于 shellclash 或者自己会写iptables的同学,另外我也建议shellclash作者把绕过cn不要和fake-ip功能冲突,目前我的做法已经实现两者都兼容,理论上前置任意转发器都可以,不局限于AdGuard

image

0x00 问题

其实这个问题很久了,之前做了很多分流,虽然抗污染能力增强,但是还是会出现一些污染的情况,目前来说最合理的方案依然是fake-ip,但我不希望所有国内地址都被解析成fake-ip,这样既不科学,又回导致国内ip全部进clash内核这也是我不希望的。所以需要一份域名白名单来解决这个问题。

0x01 解决

DNS依然可以使用AdGuard Home来作为第一层服务器,主要是因为这家伙的UI做的我非常满意,而且重写,记录等功能也是我需要的。

端口

AdGuard Home 监听 5553(不重定向端口,只监听) Clash 监听 1053 dnsmasq 监听 53(默认不变,防止其他服务器没启动连DNS都没有)

AdGuard Home 的配置

现在可以使用我这个项目 https://github.com/luckyyyyy/GFWList2AGH 来做AdGuard Home的分流,把gfwlist2adguardhome/whitelist_lite.txt 文件写到配置中即可,这个文件是china list 转发到 dnsmasq,dnsmasq会自动使用pppoe拨号给的DNS(这个没问题的,国内的域名就应该用域名是的服务器解析,如果不信任,那就上游自己改吧,个人觉得没必要)

image

shellclash

DNS部分选择重定向端口,并使用user.yaml配置下面的dns内容,让clash监听在1053,同时需要修改mark文件,让脚本配置时,转发53端口到5553,此举是为了做转发器使用,以及可以使用内置的mac黑白名单模式了,从代码上看shellclash会增加一个clash_dns的自定义链来解决这个白名单的事,让白名单的机器dns不做转发

请在shellclash dns 模式选择 Redir-host 否则会缺少一些菜单以及判断 用下面的 user.yaml 覆盖即可

dns_port=5553

clash配置

clash的配置我就不解释了,直接给出配置

dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  listen: 0.0.0.0:1053
  nameserver:
    - 127.0.0.1:53
  fallback:
    - https://1.1.1.1/dns-query
    - https://dns.cloudflare.com/dns-query
    - https://dns.google/dns-query
    - tls://1.1.1.1:853
    - tls://8.8.8.8:853
  default-nameserver:
    - 119.28.28.28
    - 223.5.5.5
    - 202.101.172.35
    - 202.101.172.47
  fake-ip-filter:
    - "*.lan"
  fallback-filter:
    geoip: true
    geoip-code: CN
luckyyyyy commented 1 year ago

如果域名不在白名单内 可以自己修改文件 修改后记得重启 agh 可以粗暴的把cn结尾的都加上

[/cn/]127.0.0.1

luckyyyyy commented 1 year ago
image
d01ag0n commented 9 months ago

让脚本配置时,转发53端口到5553 这步怎么操作