MetaCubeX / mihomo

A simple Python Pydantic model for Honkai: Star Rail parsed data from the Mihomo API.
https://wiki.metacubex.one
MIT License
16.51k stars 2.65k forks source link

[Bug] 系统代理部分情况下不能超越系统host文件规则 #1100

Closed hsiayuchih closed 8 months ago

hsiayuchih commented 8 months ago

Verify steps

Mihomo version

v1.18.1

What OS are you seeing the problem on?

Windows

Mihomo config

mode: rule
mixed-port: 7897
allow-lan: false
log-level: info
secret: ''
external-controller: 127.0.0.1:9097
dns:
  enable: true
  listen: 127.0.0.1:8853
  default-nameserver:
  - 223.5.5.5
  - 8.8.4.4
  ipv6: false
  enhanced-mode: fake-ip
  nameserver:
  - 119.29.29.29
  - 223.5.5.5
  - tls://223.5.5.5:853
  - tls://223.6.6.6:853
  - tls://120.53.53.53
  - tls://1.12.12.12
  fallback:
  - https://1.0.0.1/dns-query
  - https://public.dns.iij.jp/dns-query
  - tls://8.8.4.4:853
  fallback-filter:
    geoip: false
    ipcidr:
    - 240.0.0.0/4
    - 0.0.0.0/32
    - 127.0.0.1/32

Mihomo log

No response

Description

当在host文件中写入一个域名,指定其为不属于clash verge rev(一个使用meta内核的衍生版本)所使用的ip。然后在clash配置文件中写入这个域名(任何规则),启动clash verge rev系统代理后,软件不会接管这个域名的连接,导致浏览器访问失败。 1.在host文件中写入一个域名,注意要不属于clash verge rev所使用的系统代理ip。如系统代理ip为:127.0.0.1,则实验的域名应为127.0.0.2 twitch.tv。 2.在clash配置文件中写入这个域名(任何规则)如 - DOMAIN-SUFFIX,twitch.tv,Shark Cloud。(注:此规则为我机场的原始配置文件) 3.启动clash verge rev系统代理 4.使用浏览器或者是使用软件引入的测试功能进行测试 5.现象产生,出现HTTP ERROR 502,测试功能显示time out image image

目前只有clash verge rev出现这种问题,已停更的clash verge(也是使用的meta内核,最后一个版本是去年十月底),clash nyanpasu没有这种问题(使用clash premium 2023-09-05和Clash Rust这两个内核就正常,但是切换成meta内核也是会有一样的情况)。 所以是不是可以理解meta内核在后续的更新中,是否改动过一些配置导致原有可以超过hosts规则的功能失效了呢?或者是直接取消了这个功能?

xishang0128 commented 8 months ago

@hsiayuchih 请确认这是内核问题而不是客户端问题,直接运行内核,手动配置系统代理

hsiayuchih commented 8 months ago

@hsiayuchih 请确认这是内核问题而不是客户端问题,直接运行内核,手动配置系统代理

可以确定不是客户端的问题,我这边已经分别使用两个不同的客户端测试过了,均是使用meta内核才会出现这个情况,我现在尝试下直接运行内核看看 ——————————————————————————————————————————————————— 直接运行内核并配置完代理后和使用客户端的情况是一样的

xishang0128 commented 8 months ago

@hsiayuchih 请确认这是内核问题而不是客户端问题,直接运行内核,手动配置系统代理

可以确定不是客户端的问题,我这边已经分别使用两个不同的客户端测试过了,均是使用meta内核才会出现这个情况,我现在尝试下直接运行内核看看 ——————————————————————————————————————————————————— 直接运行内核并配置完代理后和使用客户端的情况是一样的

提供更详细的配置以及日志

hsiayuchih commented 8 months ago

@hsiayuchih 请确认这是内核问题而不是客户端问题,直接运行内核,手动配置系统代理

可以确定不是客户端的问题,我这边已经分别使用两个不同的客户端测试过了,均是使用meta内核才会出现这个情况,我现在尝试下直接运行内核看看 ——————————————————————————————————————————————————— 直接运行内核并配置完代理后和使用客户端的情况是一样的

提供更详细的配置以及日志

暂时发现只有github、steam、twitch、imgur这几个相关的域名是无法正常被代理的,其他写进hosts的域名则可以被正常代理 日志文件的话看目录没有自动生成“logs”文件夹 3 1 2

xishang0128 commented 8 months ago

看了下代码,这是hosts正常生效而已,mihomo会读取系统hosts,如果有hosts,会将hosts的值作为目标地址往节点服务器发送,所以127.0.0.2发给了服务器,这是预期行为,删除hosts即可

hsiayuchih commented 8 months ago

看了下代码,这是hosts正常生效而已,mihomo会读取系统hosts,如果有hosts,会将hosts的值作为目标地址往节点服务器发送,所以127.0.0.2发给了服务器,这是预期行为,删除hosts即可

@xishang0128 其他的域名在hosts里也有写进去,但是就没有这个情况呀。我上面也有说“暂时发现只有github、steam、twitch、imgur这几个相关的域名是无法正常被代理的,其他写进hosts的域名则可以被正常代理

xishang0128 commented 8 months ago

@hsiayuchih 其他域名可能服务端有嗅探,会把127还原为域名

hsiayuchih commented 8 months ago

@hsiayuchih 其他域名可能服务端有嗅探,会把127还原为域名

@xishang0128 这么说就是还是新版本的内核取消了一些以前的功能?因为用之前的旧版本是没有这个情况的

xishang0128 commented 8 months ago

@hsiayuchih 不,这是新功能,所以这是预期行为,删除你的hosts解决

hsiayuchih commented 8 months ago

@hsiayuchih 不,这是新功能,所以这是预期行为,删除你的hosts解决

@xishang0128 好的,不过这就很麻烦了,因为我这边情况比较特殊代理软件不可能一直挂着,所以一些经常使用的域名我是通过其他反代软件写进hosts里的。删除hosts后,就需要时不时的打开代理软件了:(

hsiayuchih commented 8 months ago

@xishang0128 另外想问下,这个新功能是强制性开启的吗,用户可以自己手动临时关闭或者修改吗?

xishang0128 commented 8 months ago

@hsiayuchih 强制开启

hsiayuchih commented 8 months ago

@hsiayuchih 强制开启

@xishang0128 好的明白了,谢谢。不过还是很希望后续可以加个关闭之类的选项供类似有我这种情况的用户可供选择,不过如果你们实现起来比较麻烦的话,就忽略这条建议吧😥

xishang0128 commented 8 months ago

@hsiayuchih 可以用mihomo内的hosts覆盖,软件内写上正确地址即可

hsiayuchih commented 8 months ago

@hsiayuchih 可以用mihomo内的hosts覆盖,软件内写上正确地址即可

@xishang0128 这个具体需要怎么操作呢?

xishang0128 commented 8 months ago

@hsiayuchih 在配置写hosts,或者,刚加了一个环境变量DISABLE_SYSTEM_HOSTS,直接用环境变量也可以

hsiayuchih commented 8 months ago

@hsiayuchih 在配置写hosts,或者,刚加了一个环境变量DISABLE_SYSTEM_HOSTS,直接用环境变量也可以

@xishang0128 抱歉,我有点没懂。前者是指直接把“hosts”文件里的域名全部复制到“config.yaml”里吗?后者的话是直接在环境变量-系统变量里新建一个“DISABLE_SYSTEM_HOSTS”的值吗? ———————————————————————————————————————————————————————— @xishang0128 刚刚试着这样加了后没有效果 1

xishang0128 commented 8 months ago

@hsiayuchih 在配置写hosts,或者,刚加了一个环境变量DISABLE_SYSTEM_HOSTS,直接用环境变量也可以

@xishang0128 抱歉,我有点没懂。前者是指直接把“hosts”文件里的域名全部复制到“config.yaml”里吗?后者的话是直接在环境变量-系统变量里新建一个“DISABLE_SYSTEM_HOSTS”的值吗? ———————————————————————————————————————————————————————— @xishang0128 刚刚试着这样加了后没有效果 1

值是1

hsiayuchih commented 8 months ago

@hsiayuchih 在配置写hosts,或者,刚加了一个环境变量DISABLE_SYSTEM_HOSTS,直接用环境变量也可以

@xishang0128 抱歉,我有点没懂。前者是指直接把“hosts”文件里的域名全部复制到“config.yaml”里吗?后者的话是直接在环境变量-系统变量里新建一个“DISABLE_SYSTEM_HOSTS”的值吗? ———————————————————————————————————————————————————————— @xishang0128 刚刚试着这样加了后没有效果 1

值是1

@xishang0128 改成1了,还是没有效果

xishang0128 commented 8 months ago

@hsiayuchih 确保是最新的alpha内核

hsiayuchih commented 8 months ago

@hsiayuchih 确保是最新的alpha内核

@xishang0128 1 使用软件自带的检查更新功能检查没有更新,且mihomo和alpha两个都试过了,均没有效果

xishang0128 commented 8 months ago

@hsiayuchih 那就是你配置变量的问题,内核没读到,自行解决,测试没问题

hsiayuchih commented 8 months ago

@hsiayuchih 那就是你配置变量的问题,内核没读到,自行解决,测试没问题

@xishang0128 好的,我晚上回去用自己的电脑再试试。另外这个环境变量只针对alpha内核有效吗?

xishang0128 commented 8 months ago

@hsiayuchih 仅alpha,因为是刚加的

hsiayuchih commented 8 months ago

@hsiayuchih 仅alpha

明白了,谢谢解答

hsiayuchih commented 8 months ago

@hsiayuchih 那就是你配置变量的问题,内核没读到,自行解决,测试没问题

@xishang0128 可以了,谢谢大佬!坐等实装到正式版