clash 的dns模块已经挺好用了,但是唯独缺少一个类似自定义域名返回特定IP的映射功能
如果能直接在dns那里返回的话,有一些就不用到rule那里专门去设置匹配的规则的,而且最好host功能可以支持通配*域名。
dns:
hosts:
'*.clash.dev': 127.0.0.1
'alpha.clash.dev': '::1'
implementation in dev branch, have a try
这个考虑支持一下对Domain设置指定DNS server吗?e.g.
dns:
hosts:
'*.clash.dev': 127.0.0.1
'alpha.clash.dev': '::1'
'beta.clash.dev': 'server:1.1.1.1'
那不行,这样就把 nameserver 所填的配置无效化了
这是不冲突的啊,查询的时候先看hosts里能否匹配,不匹配再到nameserver里去做下一阶段的dns查询。
(Surge应该就是这样查询DNS的)
跟我现在设计很冲突
启用自定义DNS后,系统本地的hosts文件解析被绕过了,请问这是bug还是就是这么设计的?
代码里没有关于本地hosts文件的解析,应该是作者没有考虑到这个吧。
@xindo451 以前开启自定义 dns 的时候就不用系统 host,原因是 windows 的 host 读不到,所以其他平台也没做。
暂时不打算做单域名对应 dns 解析,要做的东西有挺多的,按照目前的设计这种单独的配置会增加程序的复杂度
@Dreamacro 也就是说现在最新版本是不能通过clash配置:
dns:
hosts:
'*.clash.dev': 127.0.0.1
'alpha.clash.dev': '::1'
来解析自定义的域名来吗?
如果不可以,目前有没有其他方法?
我的运行环境是MacOS
客户端:ClashX 1.10.1
clash内核版本:更新到dev分支
@Muchenyao 不要修改 DNS
在配置文件中规则(Rule:)部分添加直连规则,比如
# 如果是自定义的域名
- DOMAIN-SUFFIX,*.clash.dev,DIRCET
# 如果是本机 IP
- IP-CIDR,127.0.0.1,DIRECT
@wulongqiu 感谢你的回答。
但是仅仅添加直连规则是不行的,如果clash 开启DNS功能
dns:
enable: true
那么dns查询会被clash接管, 它会忽略掉hosts文件的内容。而*.clash.dev本就是一个不存在的域名,DNS服务器上查不到对应的IP,那么即使指定了DIRCET直连规则我们也访问不了*clash.dev
虽然直接通过ip地址可以直接访问该网站,但是直接通过IP访问不但不方便,在我的案例中有些服务并不支持IP直接访问,所以只能放弃
目前比较无奈的解决方案是 dns 设置为false , 这样它就会先在hosts文件中对应的IP,然后可以正常访问了。
@Muchenyao 刚把 dns enable 设置为 true 后,规则的确不行,等待更完美的解决方案。
@Muchenyao dns设置enable=false,本地hosts的配置内容就生效了
你好,我想是否可以增加一个连接类型,类似于 DIRECT, 例如 HOST,如果是这个类型,那么就不去查询 DNS 服务器,相当于 dns enable 设置为 false。@Muchenyao
@bangbangda 现在的 hosts 就是全局的
@bangbangda 现在的 hosts 就是全局的
请问下这个host在fakeip下是不是无效
@xuedaolao 不是
增加一个配置把DNS关了,需要的时候切换一下配置算了~
hosts:
'*.oo': 127.0.0.1
这样设置无效,是不是必须类似这样: '*.aa.bb': 127.0.0.1
update: 发现在系统的 wifi 设置 - Proxies - Bypass 中填入 *.oo 可以。
这样的话,clash的dns配置可以继续enable
hosts:
'*.oo': 127.0.0.1这样设置无效
hosts:
'.oo': 127.0.0.1
就可以了
'gov.cn' - 只匹配 gov.cn
'*.gov.cn' - 只匹配 {a,b,c,d}.gov.cn 不包括 gov.cn 和 www.abc.gov.cn
'.gov.cn' - 匹配后缀为gov.cn的所有域名 不包括 gov.cn
有个需求是把 *.test.com 映射到 172.0.0.1:8080 用于日常开发
现在是用 Charles proxy 做的,但是这样的话就没法挂代理访问外网了
想看看 clash 配置有没有解?
有个需求是把 *.test.com 映射到 172.0.0.1:8080 用于日常开发
现在是用 Charles proxy 做的,但是这样的话就没法挂代理访问外网了
想看看 clash 配置有没有解?
Charles可以设置外部代理的,直接Browser <--> Charles <--> Clash就可以了。
@xjasonlyu 我还是用的太少了,不知道 charles 可以这样
把系统代理切到 charles 上,charles 再把外部代理端口设置成梯子就行了
感谢!
Most helpful comment
hosts:
'*.oo': 127.0.0.1
这样设置无效,是不是必须类似这样: '*.aa.bb': 127.0.0.1
update: 发现在系统的 wifi 设置 - Proxies - Bypass 中填入 *.oo 可以。
这样的话,clash的dns配置可以继续enable