vernesong / OpenClash

A Clash Client For OpenWrt
MIT License
15.72k stars 2.93k forks source link

[Bug] 开启绕过中国大陆IP功能后一直不能还原防火墙DNS劫持规则 #3879

Closed Aethersailor closed 1 month ago

Aethersailor commented 1 month ago

Verify Steps

OpenClash Version

v0.46.010-beta v0.46.003-beta

Bug on Environment

Immortalwrt

OpenWrt Version

SNAPSHOT 6.1.89内核

Bug on Platform

Linux-amd64(x86-64)

Describe the Bug

1.使用FakeIP + Dnsmasq 劫持,开启”绕过中国大陆 IP “功能后,OpenClash 在启动后等待很久也不会提示“检测到 Dnsmasq 正常工作,还原防火墙 DNS 劫持规则”,导致 DNS 一直被 OpenClash 劫持,但是国内国外网站都能打开,OpenWrt 首页显示局域网设备的主机名全部变成诡异的“bogon”一词
2.使用 FakeIP + 防火墙劫持,国内外网站均无法打开,同样OP首页的局域网设备主机名全部变为bogon一词

测试 v0.46.003-beta,v0.46.010-beta 都是一样的情况

之前在ImmortalWrt master 源码+ 6.6 内核的Immortalwrt系统上,可以正常还原,换用全新编译的 master 源码+默认的6.1 内核上就不能正常工作了

测试在23.5.02版本+5.15内核的系统上,dnsmasq劫持+绕过大陆可以正常工作,防火墙劫持模式无法正常工作

目前只有在

并且,openclash 的调试日志中显示依赖 libcap 和 ruby-psych 未安装,但实际上是已经安装了的

只要关闭绕过大陆功能则 dnsmasq 可以正常工作

To Reproduce

启动即可见

OpenClash Log

见下方附件的 openclash.log  文件

日志中显示依赖 libcap 和 ruby-psych 未安装,但实际上是已经安装了的

root@ImmortalWrt:~# opkg install libcap ruby-psych
Package libcap (2.69-r1) installed in root is up to date.
Package ruby-psych (3.2.2-r2) installed in root is up to date.

自己粗略的看了一下调试日志,里面有一个部分和实际的不一样: 日志中是这样的,奇怪的是我的配置文件和系统设置里根本没有这两个 dns 地址:

Dnsmasq 当前默认 resolv 文件:/tmp/resolv.conf.d/resolv.conf.auto

#===================== /tmp/resolv.conf.auto =====================#

# Interface lan
nameserver 119.29.29.29
nameserver 8.8.8.8

#===================== /tmp/resolv.conf.d/resolv.conf.auto =====================#

# Interface lan
nameserver 119.29.29.29
nameserver 8.8.8.8

但是在 openclash 未启动的情况下 /tmp/resolv.conf.auto 和 /tmp/resolv.conf.d/resolv.conf.auto 的实际内容是下面这样的,全部是我正常的运营商 DNS:

# Interface wan
nameserver 58.240.57.33
nameserver 221.6.4.66
# Interface wan_6
nameserver 2408:8000:aaaa::
nameserver 2408:8888::8

不知道和这个有关系吗

OpenClash Config

No response

Expected Behavior

  1. 正常还原劫持规则

Additional Context

见附件 openclash.log

vernesong commented 1 month ago

发异常情况的调试日志

Aethersailor commented 1 month ago

发异常情况的调试日志

上传的 openclash.log 就是异常情况下的调试日志

Aethersailor commented 1 month ago

破案了,用官方编译的 SNAPSHOT 版本和 Stable Release 都不存在这个问题 应该是我使用的编译仓库有问题