OpenClash icon indicating copy to clipboard operation
OpenClash copied to clipboard

[Feature] Faker-ip模式下增加开关, DNS请求发送到 7874端口时,"对于无需代理的DNS请求返回真实IP,需要代理的DNS请求返回Fakeip"

Open wcyws opened this issue 1 year ago • 8 comments

Verify Steps

  • [X] Tracker 我已经在 Issue Tracker 中找过我要提出的问题
  • [X] Need 当前 OpenClash 并不包含该功能特性或者还不完善
  • [X] Framework 这是 OpenClash 应包含的特性, 并非 Clash 特性
  • [X] Meaningful 我提交的不是无意义的 催促更新或修复 请求

Describe the Feature

应用场景: 主路由(TPLINK等)利用FAKE-IP静态路由来魔法上网 (主路由各种原因被限制,软路由不够强,只想走少数流量,所有设备均直连主路由,更加稳定)

工作方式: 设备 (所有设备网关为主路由) 请求DNS (DNS服务器为旁路由)

  1. openclash根据请求域名判断是否需要代理,如果需要代理则返回198.18.0.0/16保留地址,无需代理则返回正常IP
  2. 设备拿到resolve的IP,把请求发送到主路由
  3. 主路由发现请求地址198.18.0.0/16时,静态路由策略将流量再次转发到旁路由(openclash),如果请求地址为正常地址,则直接上网 (个人认为该方法是绕过中国大陆IP模式的跨设备变种方法,但是存在一定限制,例如IP直连无法代理等,但是胜在主路由稳定,对要求不高的大部分人都适用,旁路由故障不至于短时间内断网)

当前限制:

  1. openclash开启fake-ip模式后,除非在fake-ip-filter中定义域名,不然会直接返回fake-ip,无法根据需求,部分返回真实IP
  2. fake-ip-filter不支持IP-CIDR,geoip:cn或geoip:site,如果手动设置会比较麻烦

希望新增功能 功能类似于: DNS查询7874端口时,域名match !cn: (返回fakeip) -> 域名!match !cn, 进行国内resolve -> 解析结果match geoip:cn (返回真实IP), 解析结果!match geoip:cn(返回fakeip)

Describe the Solution

~~增强fake-ip-filter功能(支持CIDR,geodat) 或~~ --- 看上去不太合适? 根据查询结果(参照fallback-dns查询), 增加一个开关,效果为:"判断是否需要代理,需要代理则返回fake-ip,无需代理则返回真实IP"

Describe Alternatives

目前自用的解决方式是使用另外一个支持 geo的DNS分流软件,国外组DNS上游为openclash,国内组默认,这样需要代理的地址全部是openclash的fake-ip,主路由再设置静态路由即可

只是觉得这样一来又要装其他软件,如果只要openclash就能解决是最好的,请看看这个功能是否方便实现?

Additional Context

image

wcyws avatar Dec 20 '23 13:12 wcyws

增强fake-ip-filter功能(支持CIDR,geodat)

这是内核功能,oc不管


根据查询结果(参照fallback-dns查询),增加一个返回真实IP的开关

你是否在搜索 metacubexd 1

ghost avatar Dec 20 '23 14:12 ghost

其实有点像绕过大陆DNS那种(第二DNS)...只是那个是用ipset完成的,不过这个顺序是反着的,就是需要代理的域名使用fake-ip,不需要代理的直接resolve并返回结果 类似于 域名match !cn: (返回fakeip) -> 域名!match !cn, 进行国内resolve -> 解析结果match geoip:cn (返回真实IP), 解析结果!match geoip:cn(返回fakeip)

wcyws avatar Dec 21 '23 01:12 wcyws

增强fake-ip-filter功能(支持CIDR,geodat)

这是内核功能,oc不管

根据查询结果(参照fallback-dns查询),增加一个返回真实IP的开关

你是否在搜索 metacubexd 1

如果不是做增强,而是加一个开关,上面提到的第二种思路,有可能实现吗?

--metacubexd, 呃其实主要需求是7874 端口的DNS 返回结果(无需代理返回真实IP,需代理返回fakeip,以供主(硬)路由使用静态路由规则),真实IP我可以在插件调试那边用CLASH的DNS查询到

可能我对问题的表述有点不清晰,我把标题再修改一下

wcyws avatar Dec 21 '23 01:12 wcyws

那就是redir-host和fake-ip混合模式嘛

内核那边有人提,但呼声不高

在域名解析的过程中,先遍历一遍规则,发现规则匹配的是DIRECT,则返回真实IP(类似redir-host行为),若不是DIRECT,则返回fake-ip。

ghost avatar Dec 21 '23 04:12 ghost

那就是redir-host和fake-ip混合模式嘛

内核那边有人提,但呼声不高

在域名解析的过程中,先遍历一遍规则,发现规则匹配的是DIRECT,则返回真实IP(类似redir-host行为),若不是DIRECT,则返回fake-ip。

(:з」∠) 好吧,原来已经有了说法了,叫混合模式,谢谢解答~

wcyws avatar Dec 21 '23 04:12 wcyws

还确定名称和细节,单纯是提出了一个想法,你可以去支持一下


自己复制一下吧,我就不让它超链接了https://github.com/MetaCubeX/mihomo/issues/916

ghost avatar Dec 21 '23 04:12 ghost

还确定名称和细节,单纯是提出了一个想法,你可以去支持一下

自己复制一下吧,我就不让它超链接了https://github.com/MetaCubeX/mihomo/issues/916

差点以为链接复制错了,为什么名字是mihomo,哈哈哈~ 已经发过去了,思路稍微有点点修正,看起来更加合理一些,希望能够被支持

wcyws avatar Dec 21 '23 08:12 wcyws

openclash开启fake-ip模式后,除非在fake-ip-filter中定义域名,不然会直接返回fake-ip,无法根据需求,部分返回真实IP fake-ip-filter不支持IP-CIDR,geoip:cn或geoip:site,如果手动设置会比较麻烦

就这两条真的是绝对的痛点!!! 哎。。。期待。

sysalong avatar Dec 29 '23 05:12 sysalong

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 5 days

github-actions[bot] avatar Feb 27 '24 08:02 github-actions[bot]