有没有smartdns和mihomo/clash一起使用的?

现在使用的是mihomo,但是总感觉dns解析有问题,所以想在mihomo上游部署一个本地的smartdns,顺便也给局域网的其他机器用。
大概的配置是:

  • mihomo开启了dns模块,监听1053端口,指向smartdns的5353端口;也开启了tun模式,dns-hijack本地53端口。
  • smartdns监听5353端口,海外dns服务器通过代理访问。

但是尝试几次都有问题,有没有用过的能指导一下?

1 个赞

唔,有点不懂,比如dns解析是哪里有问题,是解析的结果连接太慢?还是怎样子?

我是这样子弄的
smartdns设置两个dns端口,第一个使用dnspod和alidns的doh作为默认,第二个用海外dns服务器,设置proxy-server给这个dns用。
mhm本地监听一个端口。这个端口我是给adgh用,所以不用53,也因为担心mhm占了53之后,自己在启动过程中解析不了订阅,给adgh可以帮助mhm在启动时解析订阅。
dns规则中设置一些域名走smartdns默认,默认dns解析设置为smartdns中的第二个。
53就交给adgh了,可以去广告

呃,我还是菜鸟,说得有点乱七八糟,请见谅

直连的时候很慢。
你的配置跟网上很多例子一致。
看样子是得把系统占用的53端口解放出来,不然mihomo和smartdns避免不了打架。

你该不会往smartdns里塞了普通dns吧?如果你用tun把53给弄走了,我想那smartdns里就用不了普通dns了,得用doh、dot之类的

如果你只在smartdns里放海外dns服务器,那直连慢是存在相当可能的,因为可能解析到的是国外的服务器ip

我说的直连慢是部署smartdns之前,正是慢所以才部署。
我现在把系统占用的53端口干掉了,给了smartdns,然后mihomo里不劫持53端口,仍然指向smartdns,用起来是没啥问题了。
但是,有了新的问题,局域网的其他机器上,把dns指向这台机器后没法解析,我把mihomo停了以后就能解析了,感觉mihomo和smartdns还是打架。

唔,你要不考虑把相关的配置发出来看下?没看到的话还真不好判断是哪里出了问题。

主要的部分在下面,反正就几个选项来回试都有点问题。

tun:
  enable: true
  stack: mixed
  # dns-hijack:
  #   - "any:53"
  #   - "tcp://any:53"
  auto-route: true
  auto-redirect: true
  auto-detect-interface: true

dns:
  enable: true
  ipv6: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
   - "*"
   - '+.lan'
   - '+.local'
   - "localhost.ptlogin2.qq.com"
   - "+.market.xiaomi.com"
   - "rule-set:private_domain"
  use-hosts: true
  use-system-hosts: true
  nameserver:
    - system
    # - 221.179.155.161
    # - 219.141.136.10
    # - 123.123.123.123
    # - "https://doh.pub/dns-query"
    # - "https://223.6.6.6/dns-query"
    # - 192.168.1.250
    # - 180.76.76.76
    # - 223.5.5.5
  # proxy-server-nameserver:
  #   - 180.76.76.76
  #   - 119.29.29.29
  #   - 223.5.5.5
  #   - "https://doh.pub/dns-query"
  #   - "https://223.6.6.6/dns-query"
  # nameserver-policy:
  #   "rule-set:cn_domain,private_domain":
  #     # - 192.168.1.1
  #     # - 119.29.29.29
  #     # - 223.5.5.5
  #     - system
  #     - "https://doh.pub/dns-query"
  #     - "https://223.6.6.6/dns-query"
  #   "rule-set:geolocation-!cn":
  #     - "https://dns.google/dns-query"
  #     - "https://dns.cloudflare.com/dns-query"
server-name smartdns
# 监听53端口
bind [::]:53
bind-tcp [::]:53
# 配置上游服务器
# 北京移动
server 221.179.155.161
#server 221.179.155.177
# 北京电信
server 219.141.136.10
#server 219.141.140.10
# 北京联通
server 123.123.123.123
#server 123.123.123.124 
#server 202.106.0.20 
#server 202.106.195.68

server 223.5.5.5
server 114.114.114.114

proxy-server socks5://192.168.1.250:7890 -name clash
server 1.0.0.1 -group overseas -exclude-default-group -proxy clash
server 8.8.8.8 -group overseas -exclude-default-group -proxy clash
server 9.9.9.9 -group overseas -exclude-default-group -proxy clash
domain-set -name overseas-domain -file /etc/smartdns/geolocation-!cn.conf
domain-rules /domain-set:overseas-domain/ -ipset overseas-domain -c none -nameserver overseas
ipset-timeout yes

嘶,这我也不懂了,看你配置smartdns监听了53端口,mihomo的dns模块没有监听端口。

如果mihomo没启动成功或没启动,域名在domain-set里,这样导致无法解析我能理解。
但楼主你这是开启mihomo就导致局域网无法解析,并且关掉后能解析,这我就搞不懂了 :thinking:

不好意思,这个我帮不了你了

好的,谢谢你,我再研究研究。

请问你后面解决了么,我也遇到了这个问题

没,不搞了,就mihomo凑合用了。

我后来测试了一下,应该是tun模式开了之后,mihomo把DNS请求都劫持到自己内部处理了。我去看了下mihomo配置,可以配置劫持哪些端口,但是配置实际没有生效,去查了下好像DNS这块有bug ([Bug] dns-hijack没有按预期工作 · Issue #1689 · MetaCubeX/mihomo · GitHub),后面我也放弃了。