vernesong/OpenClash

升级到v0.46.031-beta的绕过国内IP功能失效了

SanLiGu opened this issue · 32 comments

Verify Steps

  • Tracker 我已经在 Issue Tracker 中找过我要提出的问题
  • Branch 我知道 OpenClash 的 Dev 分支切换开关位于插件设置-版本更新中,或者我会手动下载并安装 Dev 分支的 OpenClash
  • Latest 我已经使用最新 Dev 版本测试过,问题依旧存在
  • Relevant 我知道 OpenClash 与 内核(Core)、控制面板(Dashboard)、在线订阅转换(Subconverter)等项目之间无直接关系,仅相互调用
  • Definite 这确实是 OpenClash 出现的问题
  • Contributors 我有能力协助 OpenClash 开发并解决此问题
  • Meaningless 我提交的是无意义的催促更新或修复请求

OpenClash Version

v0.46.031-beta

Bug on Environment

Lean

OpenWrt Version

OpenWrt R23.7.7 GDQ V2

Bug on Platform

Linux-amd64(x86-64)

Describe the Bug

升级到v0.46.031-beta的绕过国内IP功能失效了都返回是fake ip,回退到[v0.46.014-beta则正常
image
image
image
image

To Reproduce

升级到v0.46.031-beta,nslookup 国内网站

OpenClash Log

请见附件。

OpenClash Config

No response

Expected Behavior

v0.46.031-beta的绕过国内IP功能可以正常

Additional Context

log.txt

路由本机的测试没有问题啊

大佬好,电脑端我nslookup了很多次,也清了dns cache和reboot软路由和电脑了,在v0.46.031-beta这个版本确实是将所有国内流量都fake ip了,回退到v0.46.014-beta,则一切正常了。烦请大佬帮忙再看看是啥问题。谢谢!

更新你的geosite

大佬,我已update了geosite,geo数据库订阅的三个和大陆白名单订阅也都update了。也重启软路由和电脑了,结果nslookup国内网站返回的还是fake ip,如下,请帮忙看看。谢谢!
log_2.txt

image

那就是v6的问题了,你先关了

更新到031版本,关V6,绕国内ip,正常

现在很多设备都用ipv6了,不用不现实啊,期待vernesong大佬在下个版本解决。谢谢!

插件设置 - DNS 设置 - 本地 DNS 劫持,把「Dnsmasq 转发」改为「使用防火墙转发」试试;
我更新 031 后改了这个设置才能访问境内网站/服务

把「Dnsmasq 转发」改为「使用防火墙转发」,问题依旧。另外,请教下大佬们,Dnsmasq 转发和使用防火墙转发,两者哪个性能比较好?谢谢!
image
image

更新到031版本,开启V6,绕国内ip,正常

我的是meta内核,fake-ip 增强模式,请问你的是什么模式?谢谢

Fake-IP-Filter是自带的,我只是勾选了,能否发下你的截图看看,谢谢!同样的配置,我回退到014版本,nslookup 国内ip都是正常的。谢谢!

你好,我的
image

正常的呀

akaet commented

流量控制中将 实验性:绕过指定区域 IP选择为绕过**大陆

流量控制中将 实验性:绕过指定区域 IP选择为绕过**大陆

我和楼主问题差不多,也试过你说的这个设置,对我没作用;
最终只有把本地 DNS 劫持的「Dnsmasq 转发」改为「使用防火墙转发」才能正常访问境内站点

SanLiGu commented

1.流量控制中将 实验性:绕过指定区域 IP选择为绕过**大陆
2.实验性:绕过**大陆 IPv6
3.本地 DNS 劫持的「Dnsmasq 转发」改为「使用防火墙转发」
--以上3点均试了,访问国内网站返回的还是fake-ip。应该是031版本问题,现在回退并使用014版本一切正常。

DNSMASQ转发,启动后试试这个

ip6tables -t nat -D PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 7874 -m comment --comment "OpenClash DNS Hijack"
SanLiGu commented

DNSMASQ转发,启动后试试这个

ip6tables -t nat -D PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 7874 -m comment --comment "OpenClash DNS Hijack"

大佬好,按照您说的试了,问题依旧,如下:
image
image
image

SanLiGu commented

DNSMASQ转发,启动后试试这个

ip6tables -t nat -D PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 7874 -m comment --comment "OpenClash DNS Hijack"

大佬好,按照您说的试了,问题依旧,如下: image image image

还发现031版本nslook出来的name自动加了.lan,014版本则没有,如下:
031版本:
image

014版本:
image

正常的啊,不過需要在Fake-IP-Filter添加geoip:cn

根 @ LovinYarn 在 ~ [22:52:53]

$ nslookup www.baidu.com 伺服器:127.0.0.1 位址:127.0.0.1:53

www.baidu.com 規範名稱 = www.a.shifen.com 名稱:www.a.shifen.com 位址:240e:e9:6002:15a:0:ff:b05c:1278 名稱:www.a.shifen.com 位址:240e:e9:6002:15c:0:ff:b015:146f

www.baidu.com 規範名稱 = www.a.shifen.com 名稱:www.a.shifen.com 位址:180.101.50.242 名稱:www.a.shifen.com 位址:180.101.50.188

请问现在已经支持这项功能了吗?格式有什么要求吗?

尝试卸载 OpenClash、不还原配置文件,
然后重新安装 v0.46.031-beta,只安装内核、配置一键生成并启动 OpenClash 后,境内网站无法访问,只能访问境外网站;
最后只改插件设置 - DNS 设置 - 本地 DNS 劫持,由「Dnsmasq 转发」改为「使用防火墙转发」后才能正常访问境内网站

试试032呢

SanLiGu commented

试试032呢

请问大佬 在哪download 032?谢谢!

更新选dev分支

尝试卸载 OpenClash、不还原配置文件, 然后重新安装 v0.46.031-beta,只安装内核、配置一键生成并启动 OpenClash 后,境内网站无法访问,只能访问境外网站; 最后只改插件设置 - DNS 设置 - 本地 DNS 劫持,由「Dnsmasq 转发」改为「使用防火墙转发」后才能正常访问境内网站

更新至 v0.46.032-beta,
再把本地 DNS 劫持,由「使用防火墙转发」改回默认的「Dnsmasq 转发」,问题仍旧

尝试卸载 OpenClash、不还原配置文件, 然后重新安装 v0.46.031-beta,只安装内核、配置一键生成并启动 OpenClash 后,境内网站无法访问,只能访问境外网站; 最后只改插件设置 - DNS 设置 - 本地 DNS 劫持,由「Dnsmasq 转发」改为「使用防火墙转发」后才能正常访问境内网站

更新至 v0.46.032-beta, 再把本地 DNS 劫持,由「使用防火墙转发」改回默认的「Dnsmasq 转发」,问题仍旧

你发日志

尝试卸载 OpenClash、不还原配置文件, 然后重新安装 v0.46.031-beta,只安装内核、配置一键生成并启动 OpenClash 后,境内网站无法访问,只能访问境外网站; 最后只改插件设置 - DNS 设置 - 本地 DNS 劫持,由「Dnsmasq 转发」改为「使用防火墙转发」后才能正常访问境内网站

更新至 v0.46.032-beta, 再把本地 DNS 劫持,由「使用防火墙转发」改回默认的「Dnsmasq 转发」,问题仍旧

OpenClash 版本号: v0.46.032-beta
Openwrt 固件版本: OpenWrt For N1 v0622 R24.6.6 / LuCI Master (git-24.172.27007-2c766c3)

问题表现:
无法访问境内网站(如 baidu.com 等),但访问境外网站正常(如 google.com 等)

日志,将「本地 DNS 劫持」设置为「Dnsmasq 转发」后,访问 baidu.com 测试:

插件设置-调试日志:
连接测试(当前浏览器),填写 baidu.com 测试:

找不到任何连接日志!
1. 可能是插件未在运行
2. 可能是缓存导致浏览直接使用 IP 地址进行访问
3. 可能是 DNS 未劫持成功,导致 Clash 无法正确反推出域名连接
4. 可能是所填地址无法进行解析和连接

DNS 测试(Clash 查询结果),填写 baidu.com 测试:
结果获取失败!
生成日志,见 log.tx 文件(其中无关设备、敏感信息已替换文本)
log.txt

内核日志(搜索 baidu.com 摘出 2 行):

2024-09-21 19:57:42 level=warning msg="[TCP] dial Domestic (match RuleSet/Domestic) 192.168.31.215:62091 --> www.baidu.com:443 error: dns resolve failed: all DNS requests failed, first error: requesting https://dns.google:443/dns-query: Get \"https://dns.google:443/dns-query?dns=AAABAAABAAAAAAAAA3d3dwViYWlkdQNjb20AAAEAAQ\": context deadline exceeded"
2024-09-21 19:57:42 level=warning msg="[TCP] dial Domestic (match RuleSet/Domestic) 192.168.31.215:62092 --> www.baidu.com:443 error: dns resolve failed: all DNS requests failed, first error: requesting https://dns.google:443/dns-query: Get \"https://dns.google:443/dns-query?dns=AAABAAABAAAAAAAAA3d3dwViYWlkdQNjb20AAAEAAQ\": context deadline exceeded"

因为0.46.014到031修改了很多东西,如果是014直接升级到031,/etc/openclash文件夹和/etc/config/openclashOpenWrt配置参数里内容不会变更修改后的,依然是以前的参数,如果比较介意的话,还是推荐直接删除/etc/config/openclash/etc/openclash文件内容,并重新安装OpenClash,但是也可以自己去修改添加014到031参数,我提供一下我目前的参数,你们可以自行尝试一下 Fake-IP-Filter Nameserver-Policy

重新安装 v0.46.031-beta 后覆盖升级至 v0.46.032-beta,然后仅安装内核、配置一键生成,修改过本地 DNS 劫持的情况下:

  1. 覆写设置 - DNS 设置,勾选「Fake-IP-Filter」、「Nameserver-Policy」(域名/规则均是默认的,没有改动),
  2. 插件设置 - DNS 设置 - 本地 DNS 劫持由「使用防火墙转发」改回默认的「使用 Dnsmasq 转发」,可正常访问境内外站点了
SanLiGu commented

更新选dev分支

大佬好,我按照上面哥们说的将014卸载,然后重启软路由,再安装031版本,显示031版本里面什么配置都没有,连内核都要下载。下载好内核配置好后,依然选择绕过国内ip。现在问题已解决。我怀疑之前出的问题都是014的参数还残留,因为之前我都是从014直接升级到031,参数还保留者。所以导致这个问题。谢谢大家!如下:
image
image

SanLiGu commented

看看是否后续升级时都建议先卸载openclash,重启软路由后再安装新版本,然后看到openclash配置啥都没有时,按照提示下载内核配置好后再启动openclash,这样可避免从旧版本升级至新版本时存在旧版本参数残留导致出问题。

尝试卸载 OpenClash、不还原配置文件, 然后重新安装 v0.46.031-beta,只安装内核、配置一键生成并启动 OpenClash 后,境内网站无法访问,只能访问境外网站; 最后只改插件设置 - DNS 设置 - 本地 DNS 劫持,由「Dnsmasq 转发」改为「使用防火墙转发」后才能正常访问境内网站

更新至 v0.46.032-beta, 再把本地 DNS 劫持,由「使用防火墙转发」改回默认的「Dnsmasq 转发」,问题仍旧

OpenClash 版本号: v0.46.032-beta Openwrt 固件版本: OpenWrt For N1 v0622 R24.6.6 / LuCI Master (git-24.172.27007-2c766c3)

问题表现: 无法访问境内网站(如 baidu.com 等),但访问境外网站正常(如 google.com 等)

日志,将「本地 DNS 劫持」设置为「Dnsmasq 转发」后,访问 baidu.com 测试:

插件设置-调试日志: 连接测试(当前浏览器),填写 baidu.com 测试:

找不到任何连接日志!
1. 可能是插件未在运行
2. 可能是缓存导致浏览直接使用 IP 地址进行访问
3. 可能是 DNS 未劫持成功,导致 Clash 无法正确反推出域名连接
4. 可能是所填地址无法进行解析和连接

DNS 测试(Clash 查询结果),填写 baidu.com 测试: 结果获取失败! 生成日志,见 log.tx 文件(其中无关设备、敏感信息已替换文本) log.txt

内核日志(搜索 baidu.com 摘出 2 行):

2024-09-21 19:57:42 level=warning msg="[TCP] dial Domestic (match RuleSet/Domestic) 192.168.31.215:62091 --> www.baidu.com:443 error: dns resolve failed: all DNS requests failed, first error: requesting https://dns.google:443/dns-query: Get \"https://dns.google:443/dns-query?dns=AAABAAABAAAAAAAAA3d3dwViYWlkdQNjb20AAAEAAQ\": context deadline exceeded"
2024-09-21 19:57:42 level=warning msg="[TCP] dial Domestic (match RuleSet/Domestic) 192.168.31.215:62092 --> www.baidu.com:443 error: dns resolve failed: all DNS requests failed, first error: requesting https://dns.google:443/dns-query: Get \"https://dns.google:443/dns-query?dns=AAABAAABAAAAAAAAA3d3dwViYWlkdQNjb20AAAEAAQ\": context deadline exceeded"

你自定义填两个nameserver