Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] dns-hijack没有按预期工作 #1689

Open
9 tasks done
lonble opened this issue Dec 1, 2024 · 9 comments
Open
9 tasks done

[Bug] dns-hijack没有按预期工作 #1689

lonble opened this issue Dec 1, 2024 · 9 comments
Labels
bug Something isn't working

Comments

@lonble
Copy link

lonble commented Dec 1, 2024

验证步骤

  • 我已经阅读了 文档,了解所有我编写的配置文件项的含义,而不是大量堆砌看似有用的选项或默认值。
  • 我仔细看过 文档 并未解决问题
  • 我已在 Issue Tracker 中寻找过我要提出的问题,并且没有找到
  • 我是中文用户,而非其他语言用户
  • 我已经使用最新的 Alpha 分支版本测试过,问题依旧存在
  • 我提供了可以在本地重现该问题的服务器、客户端配置文件与流程,而不是一个脱敏的复杂客户端配置文件。
  • 我提供了可用于重现我报告的错误的最简配置,而不是依赖远程服务器或者堆砌大量对于复现无用的配置等。
  • 我提供了完整的日志,而不是出于对自身智力的自信而仅提供了部分认为有用的部分。
  • 我直接使用 Mihomo 命令行程序重现了错误,而不是使用其他工具或脚本。

操作系统

Linux

系统版本

Arch Linux

Mihomo 版本

Mihomo Meta alpha-9de9f1e linux amd64 with go1.23.3 Wed Nov 27 03:05:48 UTC 2024
Use tags: with_gvisor

配置文件

log-level: 'debug'
mode: 'rule'
ipv6: true

dns:
  enable: true
  ipv6: true
  enhanced-mode: 'fake-ip'
  respect-rules: false
  default-nameserver: ['system']
  nameserver:
  - 'tcp://8.8.8.8#PROXY'
  - 'tcp://1.1.1.1#PROXY'
  direct-nameserver: ['system']
  proxy-server-nameserver: ['system']

sniffer:
  enable: false

tun:
  enable: true
  stack: 'gvisor'
  auto-route: true
  auto-detect-interface: true
  strict-route: false
  dns-hijack: ['udp://any:1234']

proxies:
- name: 'PROXY'
  type: 'ss'
  server: '***'
  port: ***
  udp: true
  cipher: "none"
  password: ""

rules:
- 'MATCH,PROXY'

描述

dns-hijack开启后,总是会拦截所有的DNS流量,不管是不是跟设置的值匹配。
一开始我写的是只拦截udp53端口,但发现tcp的也被拦截了。后来发现不管我怎么写都没用,甚至随便写个端口都会被拦截。
现在我验证的情况是,只有空列表[]不拦截,默认值或者随便写个值都是拦截全部。

重现方式

用上面的配置文件启动,然后用dig或者drill发dns请求。
注意看下面日志的最后两行,DNS都被拦截了,但不跟设置匹配。

日志

INFO[2024-12-01T22:05:14.928400646+08:00] Start initial configuration in progress      
INFO[2024-12-01T22:05:14.92848972+08:00] Geodata Loader mode: memconservative         
INFO[2024-12-01T22:05:14.928496018+08:00] Geosite Matcher implementation: succinct     
INFO[2024-12-01T22:05:14.928635828+08:00] Initial configuration complete, total time: 0ms 
INFO[2024-12-01T22:05:14.939956034+08:00] Sniffer is closed                            
WARN[2024-12-01T22:05:14.940701466+08:00] [TUN] default interface changed by monitor,  => enp6s0 
INFO[2024-12-01T22:05:14.944791588+08:00] [TUN] Tun adapter listening at: Meta([198.18.0.1/30],[fdfe:dcba:9876::1/126]), mtu: 9000, auto route: true, auto redir: false, ip stack: gVisor 
INFO[2024-12-01T22:05:14.947078695+08:00] Start initial Compatible provider default    
DEBU[2024-12-01T22:05:16.946651995+08:00] [Rule] use default rules                     
DEBU[2024-12-01T22:05:16.946725416+08:00] [DNS] system dns update to [192.168.0.1 2408:8270:a30:ef60::1] 
DEBU[2024-12-01T22:05:16.946736892+08:00] [DNS] resolve ***** A from system(udp://192.168.0.1:53,udp://[2408:8270:a30:ef60::1]:53) 
DEBU[2024-12-01T22:05:16.946744767+08:00] [DNS] resolve ***** A from udp://192.168.0.1:53 
DEBU[2024-12-01T22:05:16.946737617+08:00] [DNS] resolve ***** AAAA from system(udp://192.168.0.1:53,udp://[2408:8270:a30:ef60::1]:53) 
DEBU[2024-12-01T22:05:16.946773075+08:00] [DNS] resolve ***** A from udp://[2408:8270:a30:ef60::1]:53 
DEBU[2024-12-01T22:05:16.946799602+08:00] [DNS] resolve ***** AAAA from udp://192.168.0.1:53 
DEBU[2024-12-01T22:05:16.946818392+08:00] [DNS] resolve ***** AAAA from udp://[2408:8270:a30:ef60::1]:53 
DEBU[2024-12-01T22:05:16.95236055+08:00] [DNS] ***** --> [*****] A from udp://[2408:8270:a30:ef60::1]:53 
DEBU[2024-12-01T22:05:16.952367544+08:00] [DNS] ***** --> [*****] A from udp://192.168.0.1:53 
DEBU[2024-12-01T22:05:16.952372617+08:00] [DNS] ***** --> [*****] A from system(udp://192.168.0.1:53,udp://[2408:8270:a30:ef60::1]:53) 
DEBU[2024-12-01T22:05:16.95247704+08:00] [DNS] ***** --> [*****] AAAA from udp://[2408:8270:a30:ef60::1]:53 
DEBU[2024-12-01T22:05:16.952488729+08:00] [DNS] ***** --> [*****] AAAA from udp://192.168.0.1:53 
DEBU[2024-12-01T22:05:16.952499155+08:00] [DNS] ***** --> [*****] AAAA from system(udp://192.168.0.1:53,udp://[2408:8270:a30:ef60::1]:53)
DEBU[2024-12-01T22:05:27.666390928+08:00] [DNS] hijack udp:192.168.0.1:53 from 198.18.0.1:49624 
DEBU[2024-12-01T22:05:31.152186763+08:00] [DNS] hijack tcp:192.168.0.1:53
@lonble lonble added the bug Something isn't working label Dec 1, 2024
@sam0324sam
Copy link

2.0.3-alpha dns 也沒辦法關掉,看來目前DNS部分還有些問題

@jasnma
Copy link

jasnma commented Dec 10, 2024

我也关注到了这个问题,这对我非常重要,急待解决

@ForestL18
Copy link

ForestL18 commented Dec 12, 2024

@lonble 可以试试我修改的这版,顺便帮忙测试下有没有问题,直接下载Artifacts就行

@lonble
Copy link
Author

lonble commented Dec 14, 2024

@lonble 可以试试我修改的这版,顺便帮忙测试下有没有问题,直接下载Artifacts就行

@ForestL18 协议和IP匹配没问题,端口匹配不生效

@ForestL18
Copy link

ForestL18 commented Dec 14, 2024

@lonble 可以试试我修改的这版,顺便帮忙测试下有没有问题,直接下载Artifacts就行

@ForestL18 协议和IP匹配没问题,端口匹配不生效

你劫持链接里是填的any+随意端口吗?
如果是的话是预料中的,对于any只劫持53端口

@lonble
Copy link
Author

lonble commented Dec 15, 2024

如果是的话是预料中的,对于any只劫持53端口

这个行为很奇怪

@jasnma
Copy link

jasnma commented Dec 15, 2024

如果是的话是预料中的,对于any只劫持53端口

这个行为很奇怪

如果对任意地址指定一个端口劫持的话,很容易误伤导致某些应用无法正常动作

@ForestL18
Copy link

如果是的话是预料中的,对于any只劫持53端口

这个行为很奇怪

劫持的逻辑是 劫持指定的IP:port或者劫持任意IP的53端口

@lonble
Copy link
Author

lonble commented Dec 15, 2024

如果对任意地址指定一个端口劫持的话,很容易误伤导致某些应用无法正常动作

这是写配置的人应该注意的问题,这样的隐式操作反而会让配置和实际行为不符,理解不了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants