ClashForAndroid icon indicating copy to clipboard operation
ClashForAndroid copied to clipboard

[BUG] 与 AdGuard 的 VPN 模式存在兼容性问题

Open AndyandAndy00 opened this issue 3 years ago • 23 comments

描述此错误

2.4.14版本的clash和adguard通过代理转发方式同时开启,代理功能正常,可以访问Google网站,经过测试,clash 2.4.14以后的更新的版本,与adguard共存时代理功能就不起作用。2.4.14该版本虽然可以正常与adguard共存使用,但是却不支持识别配置文件中proxy-providers下的filter参数,无法实现过滤。我希望clash和adguard共存使用的同时,也能对配置文件中的proxy-providers进行过滤。希望作者能提供解决方法

如何复现该错误

步骤 1: ...clash配置文件加入adguard dns参数 步骤 2: ...关闭clash自动路由系统流量 步骤 3: ...设置adguard代理转发至clash ...

设备信息

  • 机型:Samsung s22 ultra
  • 系统类型:ONE UI
  • Android 版本:12

应用信息

  • 版本:2.5.2-premium以及更新的版本
  • 安装包文件名:cfa-2.5.2-premium-arm64-v8a-release.apk
  • 应用来源:github 和 Googleplay

配置文件

port: 7890
socks-port: 7891
allow-lan: true
mode: rule
log-level: info
external-controller: :9090
dns:
  enable: true
  ipv6: false
  listen: 127.0.0.1:5450
  enhanced-mode: redir-host
  default-nameserver:
    - 119.29.29.29
    - 119.28.28.28
    - 1.0.0.1
    - 208.67.222.222
    - 1.2.4.8
  nameserver:
    - https://dns.alidns.com/dns-query
    - https://1.1.1.1/dns-query
    - tls://dns.adguard.com:853

d: &d #订阅参数
  type: http
  interval: 3600
  path: ./Proxies/x.yaml
  url: 
  health-check:
   enable: true
   url: https://i.ytimg.com/generate_204
   interval: 300

proxy-providers:
  一:
    <<: *d
  hk1:
    <<: *d
    filter: ^(.*)(香港|HK|Hong)+(.*)$
  tw1:
    <<: *d
    filter: ^(.*)(台|TW|Tai)+(.*)$
  jp1:
    <<: *d
    filter: ^(.*)(日本|JP|韩|Japan)+(.*)$
  sg1:
    <<: *d
    filter: ^(.*)(新加坡|狮城|SG|Singapore)+(.*)$
  us1:
    <<: *d
    filter: ^(.*)(美国|US|States|American)+(.*)$

日志

屏幕截图

No response

附加信息

No response

AndyandAndy00 avatar Sep 10 '22 14:09 AndyandAndy00

你不给日志我怎么给方法 拿水晶球占卜吗

以及 AdGuard 的配置以及日志

Kr328 avatar Sep 10 '22 14:09 Kr328

我怎么给方法拿水晶球占卜呢?

以及 AdGuard 的配置和日志

  好的,下面是adguard的设置,和分别访问Google和YouTube失败的日志。我是在同时使用clash 2.4.14和adguard可正常访问Google、YouTube的情况下,通过play商店直接更新2.5.9版本,更新之后便无法正常访问了。

adguard设置 adguard日志

clash日志.log

AndyandAndy00 avatar Sep 10 '22 15:09 AndyandAndy00

enhanced-modefake-ip

Kr328 avatar Sep 10 '22 16:09 Kr328

enhanced-modefake-ip

不好意思,改成fake-ip后,我多试了几次发现还是不能正常访问,抓取到的日志也是和上面的一样。同时我发现一个现象,可能有帮助:重新安装clash 2.4.14,在adguard添加dns服务器127.0.0.1:5450,这时可以正常连接并且添加成功;把clash版本更新到2.5.9,并且删掉adguard刚才添加的dns服务器,重新添加一次,此时提示无连接,似乎是新版本的监听端口失效了 Screenshot_20220911-041404_AdGuard

AndyandAndy00 avatar Sep 10 '22 17:09 AndyandAndy00

enhanced-modefake-ip

以上是我新发现并重新提交的问题

AndyandAndy00 avatar Sep 11 '22 06:09 AndyandAndy00

Clash 关闭 -> 打开日志捕获 -> Clash 打开 -> 重现 -> 上传日志

Kr328 avatar Sep 11 '22 06:09 Kr328

clash-1662879185155.log

Clash 关闭 -> 打开日志捕获 -> Clash 打开 -> 重现 -> 上传日志

clash 2.5.9。adguard添加dns服务器失败日志

AndyandAndy00 avatar Sep 11 '22 07:09 AndyandAndy00

设置 -> 覆写 -> DNS 策略 -> 不修改

Kr328 avatar Sep 11 '22 12:09 Kr328

设置 -> 覆写 -> DNS 策略 -> 不修改

修改后adguard已成功添加dns服务器,但无法访问Google、YouTube。下面是访问两个网站的日志 clash-1662899229889.log 20220911_202534

AndyandAndy00 avatar Sep 11 '22 12:09 AndyandAndy00

下载安装 Termux

然后输入命令 /system/bin/curl --proxy socks5://127.0.0.1:7891 https://www.google.com/generate_204 -vv

回车

然后截图结果

Kr328 avatar Sep 12 '22 12:09 Kr328

图一是dns策略为“不修改”;图二是dns策略为“使用内置”。经测试两种选择都不能正常访问 图一 Screenshot_20220912-213757_Termux 图二 Screenshot_20220912-214034_Termux 0a3c17b08.jpg)

AndyandAndy00 avatar Sep 12 '22 13:09 AndyandAndy00

打开日志捕获

DNS 改成

dns:
  enable: true
  listen: "127.0.0.1:5450"
  enhanced-mode: fake-ip
  use-hosts: false
  nameserver:
    - 119.29.29.29
    - 223.5.5.5

然后去 AdGuard 检查 代理设置

复现问题 (至少要等 10s 左右

上传日志

Kr328 avatar Sep 12 '22 14:09 Kr328

打开日志捕获

DNS 改成

dns:
  enable: true
  listen: "127.0.0.1:5450"
  enhanced-mode: fake-ip
  use-hosts: false
  nameserver:
    - 119.29.29.29
    - 223.5.5.5

然后去 AdGuard 检查 代理设置

复现问题 (至少要等 10s 左右

上传日志

clash-1662997367033.log

AndyandAndy00 avatar Sep 12 '22 15:09 AndyandAndy00

@AndyandAndy00 DNS 没有经过 Clash 你需要检查 AdGuard 的 DNS 设置

Kr328 avatar Sep 12 '22 16:09 Kr328

@AndyandAndy00 DNS 没有经过 Clash 你需要检查 AdGuard 的 DNS 设置

1、实操步骤为:关闭clash→打开日志捕捉→开启clash→打开adguard重新添加dns(为确保adguard的dns和clash是连接的;此时clash dns的设置为“不修改”,因为在”使用内置“的模式下,adguard无法添加dns)→检查adguard代理设置正确→浏览网页 2、表现为:刚设置完时可打开Google、YouTube等网页,但加载速度很慢,继续测试多次浏览,速度越来越慢,几分钟后两个网站彻底无法访问。(日志记录较长,问题主要记录在后面部分) clash-9.13.log

AndyandAndy00 avatar Sep 13 '22 07:09 AndyandAndy00

@AndyandAndy00 把规则里的 REJECT 全部移除

Kr328 avatar Sep 13 '22 07:09 Kr328

@AndyandAndy00 把规则里的 REJECT 全部移除

删除所有reject规则后,测试浏览网站日志 clash-1663057025986.log

AndyandAndy00 avatar Sep 13 '22 08:09 AndyandAndy00

目前发现 可以重现的情况 只有在 AdGuard 使用 VPN + 通过代理连接到 Clash + Clash 使用 fake-ip 模式

其他情况例如 AdGuard 使用 ROOT + 通过/不通过代理连接 Clash + Clash 使用 fake-ip 模式 不会重现

所以 我也不知道为什么

Kr328 avatar Sep 18 '22 17:09 Kr328

目前发现 可以重现的情况 只有在 AdGuard 使用 VPN + 通过代理连接到 Clash + Clash 使用 fake-ip 模式

其他情况例如 AdGuard 使用 ROOT + 通过/不通过代理连接 Clash + Clash 使用 fake-ip 模式 不会重现

所以 我也不知道为什么

非root环境下,同一套配置文件,用2.4.14版本就没问题,一更新后面的任意一个版本就不行,就非常奇怪,可能是跟新版本的核心不兼容吧。已经退回2.4.14版本使用,就是不能用filter过滤,配置要麻烦点。还是感谢花时间排查问题,辛苦了大佬

AndyandAndy00 avatar Sep 19 '22 04:09 AndyandAndy00

@AndyandAndy00 2.4.14 的 fake-ip 也一样

Kr328 avatar Sep 19 '22 04:09 Kr328

AdGuard 里面把clash 规则关闭,禁止通过AdGuard流量。应该就可以了

qist avatar Sep 23 '22 06:09 qist

AdGuard 里面把clash 规则关闭,禁止通过AdGuard流量。应该就可以了

一直是关着的,一开始看网上教程弄两者共存,就有这一步。我的配置文件已经改了,先用着旧版本吧,现在暂时不折腾了

AndyandAndy00 avatar Sep 23 '22 06:09 AndyandAndy00