giveup

Results 71 comments of giveup

经过日志穷举法...基本定位bug原因。 https://github.com/mokeyish/smartdns-rs/blob/9e03c483b295fbe426ec40a04ca5a7c8852d9677/src/dns_client.rs#L458-L465 这里拼接了配置的dns作为缓存的key,如果配置的dns都是同样的URL会导致key重复。 例如这两个组的dns只有subnet不一样 ``` server-https https://223.5.5.5/dns-query -no-check-certificate -http-host dns.alidns.com -group domestic -subnet 113.65.29.0/24 server-https https://223.6.6.6/dns-query -no-check-certificate -http-host dns.alidns.com -group domestic -subnet 113.65.29.0/24 server-https https://223.5.5.5/dns-query -no-check-certificate -http-host dns.alidns.com -group oversea...

另外,原C版支持`smartdns --cache-print /etc/smartdns/smartdns.cache | wc -l`查看缓存的域名数量,方便调整大小(因嵌入式平台内存资源较为紧张,通常需要调整缓存数量大小避免OOM)可否考虑添加如上命令行?谢谢。 @mokeyish

交叉编译不通过 @mokeyish ``` error[E0432]: unresolved import `std::hash::DefaultHasher` --> src/dns_client.rs:3:12 | 3 | hash::{DefaultHasher, Hash, Hasher}, | ^^^^^^^^^^^^^ no `DefaultHasher` in `hash` | = help: consider importing one of these items...

没修复 ``` 2024-06-17 14:18:56.902:DEBUG:smartdns::server::udp:43: received udp request from: 127.0.0.1:39511 2024-06-17 14:18:56.903:DEBUG:smartdns::app:392: request:53366 src:UDP://127.0.0.1#39511 type:QUERY dnssec:false QUERY:www.amd.com.:A:IN qflags:RD,AD 2024-06-17 14:18:56.903:DEBUG:smartdns::dns_client:250: initialize name server [Group: oversea] 2024-06-17 14:18:56.903:DEBUG:smartdns::dns_mw_ns:97: query name: www.amd.com. type:...

> 没有配置的话,不会返回随机局域网 ip 的。要么上游返回的,要么配置了地址 > > 你有启用 https 监听吗? 有的话可以访问 https://localhost/api/addresses 看看 > > https://github.com/mokeyish/smartdns-rs/blob/main/src/api/address.rs#L7-L9 上游就是阿里dns,而且这是国内域名,也几乎不存在污染的可能性。 贴的配置文件就是全部内容,有几个conf都是空的。(openwrt安装自带的配置文件) 主要用于dnsmasq的上游,因此没有配置https监听(似乎dnsmasq还不支持) 代码的话...rust不懂。 我需要做什么来进一步排查这个问题?

可能需要部署一个上游dns服务器,例如SmartDNS[https://pymumu.github.io/smartdns/config/dualstack/](url)

dnsmasq是可以的,可以按需实现只返回ipv4或ipv6。 ![WX20231009-030855@2x](https://github.com/MetaCubeX/Clash.Meta/assets/2897585/e2f6176c-ca9f-4f79-871f-19c64cdeda12) 但是好像不支持按域名来动态只返回ipv4或ipv6。 你这个需求应该通过按域名分发到不同的dns,比如dnsmasq实现只返回ipv6,然后其他dns正常解析。

> 有没有其他方案解决DDNS带来的问题,我自己在家宽部署的wg算是差这一步就能用了。 多套一层,基本方案是`客户端->dnsmasq->mihomo->dns resolver` 在收到客户端的ddns解析请求时,由dnsmasq转发给不同的dns,避免直接由mihomo处理请求时带来的的dns缓存问题。其他域名则按正常流程转发给mihomo并处理请求和缓存。

> @giveup 目前的wg代码结构只会在proxy第一次触发链接的时候解析一次server的域名,你套多少层都不会解决这个问题 我可能误解他的使用场景了。我的使用场景是:A,有ddns,然后B去访问A,且B部署了mihomo,由于B有mihomo,在访问A的时候由于dns缓存不一定能正常解析出A的当前的IP。我给出的方法是曲线救国,避免mihomo的dns缓存导致无法正常解析A的ddns。

> @giveup mihomo 对 DNS 的缓存也是遵循 TTL 的,与其它的 DNS 并无太大区别 按我朴素的理解和使用经验,有的软件对dns缓存的处理是修改ttl,如AdGuard Home,所以这个应该是我自己误解了...