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] R2S 旁路由运行 OpenClash 严重增加局域网内 iPhone 待机耗电 #2614

Closed
4 tasks done
akira304moto opened this issue Aug 8, 2022 · 57 comments
Closed
4 tasks done
Labels
bug Something isn't working Stale

Comments

@akira304moto
Copy link
Contributor

akira304moto commented Aug 8, 2022

Verify Steps

  • Tracker 我已经在 Issue Tracker 中找过我要提出的问题
  • Latest 我已经使用最新 Dev 版本测试过,问题依旧存在
  • Core 这是 OpenClash 存在的问题,并非我所使用的 Clash 或 Meta 等内核的特定问题
  • Meaningful 我提交的不是无意义的 催促更新或修复 请求

OpenClash Version

v0.45.47-beta

Bug on Environment

Official OpenWrt

Bug on Platform

Linux-armv8

To Reproduce

只需查看iPhone电量消耗即可

Describe the Bug

R2S 作为旁路由,由 TP-LINK 主路由的 DHCP 为连接的设备下发网关/DNS 指向它。官方 openwrt 22.03-rc5 固件,运行 openclash 会导致 iPhone 待机时耗电急剧增加。

尝试切换 redir-host/fake-ip 模式、开关旁路由模式、开关 DNS 劫持、切换 meta/TUN 核等操作,均未改变耗电增加的情况。

查看 iOS 设置中的“App 隐私报告”,待机时段没有异常连接。使用 AdGuard Home 记录,待机时应只连接过 iCloud 和推送通知服务器,无异常情况。

而关闭 openclash 后,使用 passwall 或直连,待机耗电均恢复正常水平。排除路由器 Wi-Fi 设置原因。

另外试过关闭 openclash 后,在手机本机运行 shadowrocket 和 stash,耗电只比正常多一点,远达不到 openclash 的情况,因此排除 clash 的原因。

OpenClash Log

OpenClash 调试日志

生成时间: 2022-08-08 08:20:59
插件版本: v0.45.47-beta
隐私提示: 上传此日志前请注意检查、屏蔽公网IP、节点、密码等相关敏感信息


#===================== 系统信息 =====================#

主机型号: FriendlyElec NanoPi R2S
固件版本: OpenWrt 22.03.0-rc5 r19523-bfd070e7fa
LuCI版本: git-20.074.84698-ead5e81
内核版本: 5.10.127
处理器架构: aarch64_generic

#此项有值时,如不使用IPv6,建议到网络-接口-lan的设置中禁用IPV6的DHCP
IPV6-DHCP: 

#此项结果应仅有配置文件的DNS监听地址
Dnsmasq转发设置: 127.0.0.1#7874

#===================== 依赖检查 =====================#

dnsmasq-full: 已安装
coreutils: 已安装
coreutils-nohup: 已安装
bash: 已安装
curl: 已安装
ca-certificates: 已安装
ipset: 已安装
ip-full: 已安装
iptables-mod-tproxy: 已安装
kmod-ipt-tproxy: 已安装
iptables-mod-extra: 已安装
kmod-ipt-extra: 已安装
libcap: 已安装
libcap-bin: 已安装
ruby: 已安装
ruby-yaml: 已安装
ruby-psych: 已安装
ruby-pstore: 已安装
kmod-tun(TUN模式): 已安装
luci-compat(Luci-19.07): 已安装
kmod-inet-diag(PROCESS-NAME): 未安装
unzip: 已安装

#===================== 内核检查 =====================#

运行状态: 运行中
进程pid: 17653
运行权限: 17653: cap_dac_override,cap_net_bind_service,cap_net_admin,cap_net_raw,cap_sys_ptrace,cap_sys_resource=eip
运行用户: nobody
已选择的架构: linux-armv8

#下方无法显示内核版本号时请确认您的内核版本是否正确或者有无权限
Tun内核版本: 2022.07.07-7-g56f0a92
Tun内核文件: 存在
Tun内核运行权限: 正常

Dev内核版本: v1.11.4-6-gbec4df7
Dev内核文件: 存在
Dev内核运行权限: 正常

Meta内核版本: alpha-g2899a12
Meta内核文件: 存在
Meta内核运行权限: 正常

#===================== 插件设置 =====================#

当前配置文件: /etc/openclash/config/config.yaml
启动配置文件: /etc/openclash/config.yaml
运行模式: fake-ip
默认代理模式: rule
UDP流量转发(tproxy): 启用
DNS劫持: 启用
自定义DNS: 启用
IPV6代理: 停用
IPV6-DNS解析: 停用
禁用Dnsmasq缓存: 启用
自定义规则: 停用
仅允许内网: 启用
仅代理命中规则流量: 停用
仅允许常用端口流量: 停用
绕过中国大陆IP: 停用
DNS远程解析: 停用
路由本机代理: 启用

#启动异常时建议关闭此项后重试
混合节点: 停用
保留配置: 停用

#启动异常时建议关闭此项后重试
第三方规则: 停用

#===================== 配置文件 =====================#

mixed-port: 7893
allow-lan: true
bind-address: "*"
log-level: info
external-controller: 0.0.0.0:9090
subscribe-url:。。。
proxy-groups:
- name: Proxy
  type: select
  icon: https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Proxy.png
  proxies:
  - 日本 JP
  - 新加坡 SG
  - 香港 HK
  - 美国 US
  - 全部 All
  - DIRECT
- name: 日本 JP
  type: select
  icon: https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Japan.png
  use:
  - JP
- name: 新加坡 SG
  type: select
  icon: https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Singapore.png
  use:
  - SG
- name: 香港 HK
  type: select
  icon: https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Hong_Kong.png
  use:
  - HK
- name: 美国 US
  type: select
  icon: https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/United_States.png
  use:
  - US
- name: 全部 All
  type: select
  icon: https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/United_States.png
  use:
  - All
- name: Apple
  type: select
  icon: https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Apple.png
  proxies:
  - DIRECT
  - Proxy
  - 日本 JP
  - 新加坡 SG
  - 香港 HK
  - 美国 US
- name: Google
  type: select
  icon: https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Google_Search.png
  proxies:
  - Proxy
  - 日本 JP
  - 新加坡 SG
  - 香港 HK
  - 美国 US
  - DIRECT
- name: YouTube
  type: select
  icon: https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/YouTube.png
  proxies:
  - Proxy
  - 日本 JP
  - 新加坡 SG
  - 香港 HK
  - 美国 US
  - DIRECT
- name: Microsoft
  type: select
  icon: https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Microsoft.png
  proxies:
  - DIRECT
  - Proxy
  - 日本 JP
  - 新加坡 SG
  - 香港 HK
  - 美国 US
- name: AdBlock
  type: select
  icon: https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Advertising.png
  proxies:
  - REJECT
  - Proxy
  - DIRECT
rule-providers:
  adblock-domain:
    type: http
    behavior: domain
    url: https://ghproxy.com/https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/reject.txt
    path: "./rule_provider/adblock-domain.yaml"
    interval: 86400
  Apple:
    type: http
    behavior: classical
    url: https://ghproxy.com/https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Apple/Apple.yaml
    path: "./rule_provider/Apple.yaml"
    interval: 86400
  Google:
    type: http
    behavior: classical
    url: https://ghproxy.com/https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Google/Google.yaml
    path: "./rule_provider/Google.yaml"
    interval: 86400
  YouTube:
    type: http
    behavior: classical
    url: https://ghproxy.com/https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/YouTube/YouTube.yaml
    path: "./rule_provider/Google.yaml"
    interval: 86400
  Microsoft:
    type: http
    behavior: classical
    url: https://ghproxy.com/https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Microsoft/Microsoft.yaml
    path: "./rule_provider/Microsoft.yaml"
    interval: 86400
  global:
    type: http
    behavior: domain
    url: https://ghproxy.com/https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/proxy.txt
    path: "./rule_provider/global.yaml"
    interval: 86400
  lan:
    type: http
    behavior: classical
    url: https://ghproxy.com/https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Lan/Lan.yaml
    path: "./rule_provider/lan.yaml"
    interval: 86400
rules:
- DST-PORT,7895,REJECT
- DST-PORT,7892,REJECT
- IP-CIDR,198.18.0.1/16,REJECT,no-resolve
- RULE-SET,adblock-domain,AdBlock
- RULE-SET,Apple,Apple
- RULE-SET,Google,Google
- RULE-SET,YouTube,YouTube
- RULE-SET,Microsoft,Microsoft
- RULE-SET,global,Proxy
- RULE-SET,lan,DIRECT
- GEOIP,CN,DIRECT
- MATCH,Proxy
dns:
  enable: true
  ipv6: false
  listen: 0.0.0.0:7874
  default-nameserver:
  - 119.29.29.29
  - 223.5.5.5
  - 114.114.114.114
  - 192.168.0.1
  - https://1.1.1.1/dns-query
  - tls://1.1.1.1:853
  - tls://8.8.8.8:853
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
  - "*.lan"
  - "*.localdomain"
  - "*.example"
  - "*.invalid"
  - "*.localhost"
  - "*.test"
  - "*.local"
  - "*.home.arpa"
  - time.*.com
  - time.*.gov
  - time.*.edu.cn
  - time.*.apple.com
  - time1.*.com
  - time2.*.com
  - time3.*.com
  - time4.*.com
  - time5.*.com
  - time6.*.com
  - time7.*.com
  - ntp.*.com
  - ntp1.*.com
  - ntp2.*.com
  - ntp3.*.com
  - ntp4.*.com
  - ntp5.*.com
  - ntp6.*.com
  - ntp7.*.com
  - "*.time.edu.cn"
  - "*.ntp.org.cn"
  - "+.pool.ntp.org"
  - time1.cloud.tencent.com
  - music.163.com
  - "*.music.163.com"
  - "*.126.net"
  - musicapi.taihe.com
  - music.taihe.com
  - songsearch.kugou.com
  - trackercdn.kugou.com
  - "*.kuwo.cn"
  - api-jooxtt.sanook.com
  - api.joox.com
  - joox.com
  - y.qq.com
  - "*.y.qq.com"
  - streamoc.music.tc.qq.com
  - mobileoc.music.tc.qq.com
  - isure.stream.qqmusic.qq.com
  - dl.stream.qqmusic.qq.com
  - aqqmusic.tc.qq.com
  - amobile.music.tc.qq.com
  - "*.xiami.com"
  - "*.music.migu.cn"
  - music.migu.cn
  - "*.msftconnecttest.com"
  - "*.msftncsi.com"
  - msftconnecttest.com
  - msftncsi.com
  - localhost.ptlogin2.qq.com
  - localhost.sec.qq.com
  - proxy.golang.org
  - stun.*.*
  - stun.*.*.*
  - "+.stun.*.*"
  - "+.stun.*.*.*"
  - "+.stun.*.*.*.*"
  - heartbeat.belkin.com
  - "*.linksys.com"
  - "*.linksyssmartwifi.com"
  - "*.router.asus.com"
  - mesu.apple.com
  - swscan.apple.com
  - swquery.apple.com
  - swdownload.apple.com
  - swcdn.apple.com
  - swdist.apple.com
  - lens.l.google.com
  - stun.l.google.com
  - "+.nflxvideo.net"
  - "*.square-enix.com"
  - "*.finalfantasyxiv.com"
  - "*.ffxiv.com"
  - "*.mcdn.bilivideo.cn"
  - time-ios.apple.com
  - "+.msftconnecttest.com"
  - "+.msftncsi.com"
  - "+.srv.nintendo.net"
  - "*.n.n.srv.nintendo.net"
  - "+.stun.playstation.net"
  - xbox.*.*.microsoft.com
  - "*.*.xboxlive.com"
  - xbox.*.microsoft.com
  - xnotify.xboxlive.com
  - "+.battlenet.com.cn"
  - "+.wotgame.cn"
  - "+.wggames.cn"
  - "+.wowsgame.cn"
  - "+.wargaming.net"
  - "+.stun.*.*.*.*.*"
  - "*.ff14.sdo.com"
  - ff.dorado.sdo.com
  - "+.media.dssott.com"
  - shark007.net
  nameserver:
  - 192.168.0.1
  - 114.114.114.114
  - 119.29.29.29
  - 223.5.5.5
  - https://doh.pub/dns-query
  - https://dns.alidns.com/dns-query
  fallback:
  - https://dns.cloudflare.com/dns-query
  - tls://dns.google:853
  - https://1.1.1.1/dns-query
  - tls://1.1.1.1:853
  - tls://8.8.8.8:853
  - https://public.dns.iij.jp/dns-query
  - https://jp.tiar.app/dns-query
  - https://jp.tiarap.org/dns-query
  - tls://dot.tiar.app
redir-port: 7892
tproxy-port: 7895
port: 7890
socks-port: 7891
mode: rule
external-ui: "/usr/share/openclash/ui"
ipv6: false
geodata-mode: false
geodata-loader: memconservative
tcp-concurrent: true
sniffer:
  enable: true
  sniffing:
  - tls
  - http
  force-domain:
  - "+.netflix.com"
  - "+.nflxvideo.net"
  - "+.amazonaws.com"
  - "+.media.dssott.com"
  skip-domain:
  - "+.apple.com"
  - Mijia Cloud
  - "+.jd.com"
  port-whitelist:
  - 443
  - 80
profile:
  store-selected: true
  store-fake-ip: true
authentication:
- Clash:X4HjmZA3

#===================== 防火墙设置 =====================#

#IPv4 NAT chain

# Generated by iptables-save v1.8.7 on Mon Aug  8 08:21:04 2022
*nat
:PREROUTING ACCEPT [976656:334457885]
:INPUT ACCEPT [195818:13608250]
:OUTPUT ACCEPT [777561:54535531]
:POSTROUTING ACCEPT [929473:65956038]
:openclash - [0:0]
:openclash_output - [0:0]
:openclash_post - [0:0]
-A PREROUTING -d 8.8.4.4/32 -p tcp -m comment --comment "OpenClash Google DNS Hijack" -m tcp --dport 53 -j REDIRECT --to-ports 7892
-A PREROUTING -d 8.8.8.8/32 -p tcp -m comment --comment "OpenClash Google DNS Hijack" -m tcp --dport 53 -j REDIRECT --to-ports 7892
-A PREROUTING -p tcp -m tcp --dport 53 -m comment --comment "OpenClash DNS Hijack" -j REDIRECT --to-ports 53
-A PREROUTING -p udp -m udp --dport 53 -m comment --comment "OpenClash DNS Hijack" -j REDIRECT --to-ports 53
-A PREROUTING -d 192.168.0.2/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports 1745
-A PREROUTING -p tcp -j openclash
-A OUTPUT -j openclash_output
-A POSTROUTING -j openclash_post
-A openclash -m set --match-set localnetwork dst -j RETURN
-A openclash -p tcp -j REDIRECT --to-ports 7892
-A openclash_output -m set --match-set localnetwork dst -j RETURN
-A openclash_output -d 198.18.0.0/16 -p tcp -m owner ! --uid-owner 65534 -j REDIRECT --to-ports 7892
-A openclash_output -p tcp -m owner ! --uid-owner 65534 -j REDIRECT --to-ports 7892
-A openclash_post -m mark --mark 0x162 -m comment --comment "OpenClash Bypass Gateway Compatible" -j ACCEPT
-A openclash_post -m comment --comment "OpenClash Bypass Gateway Compatible" -m set --match-set localnetwork dst -j RETURN
-A openclash_post -m addrtype ! --src-type LOCAL -m owner ! --uid-owner 65534 -m comment --comment "OpenClash Bypass Gateway Compatible" -j MASQUERADE
COMMIT
# Completed on Mon Aug  8 08:21:04 2022

#IPv4 Mangle chain

# Generated by iptables-save v1.8.7 on Mon Aug  8 08:21:04 2022
*mangle
:PREROUTING ACCEPT [37045622:80466371987]
:INPUT ACCEPT [13324787:25645164887]
:FORWARD ACCEPT [24883268:59073502184]
:OUTPUT ACCEPT [13059915:25628115286]
:POSTROUTING ACCEPT [37858870:84689358661]
:RRDIPT_FORWARD - [0:0]
:RRDIPT_INPUT - [0:0]
:RRDIPT_OUTPUT - [0:0]
:openclash - [0:0]
-A PREROUTING -p udp -j openclash
-A INPUT -j RRDIPT_INPUT
-A FORWARD -j RRDIPT_FORWARD
-A OUTPUT -j RRDIPT_OUTPUT
-A RRDIPT_INPUT -i eth0 -j RETURN
-A RRDIPT_INPUT -i br-lan -j RETURN
-A RRDIPT_OUTPUT -o eth0 -j RETURN
-A RRDIPT_OUTPUT -o br-lan -j RETURN
-A openclash -p udp -m udp --sport 500 -j RETURN
-A openclash -p udp -m udp --sport 68 -j RETURN
-A openclash -m set --match-set localnetwork dst -j RETURN
-A openclash -p udp -m udp --dport 53 -j RETURN
-A openclash -p udp -j TPROXY --on-port 7895 --on-ip 0.0.0.0 --tproxy-mark 0x162/0xffffffff
COMMIT
# Completed on Mon Aug  8 08:21:04 2022

#IPv4 Filter chain

# Generated by iptables-save v1.8.7 on Mon Aug  8 08:21:04 2022
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p udp -m udp --dport 443 -m comment --comment "OpenClash QUIC REJECT" -m set ! --match-set china_ip_route dst -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Mon Aug  8 08:21:04 2022

#IPv6 NAT chain


#IPv6 Mangle chain


#IPv6 Filter chain


#===================== IPSET状态 =====================#

Name: china_ip_route
Name: china_ip_route_pass
Name: shuntlist
Name: gfwlist
Name: chnroute
Name: blacklist
Name: localnetwork
Name: shuntlist6
Name: gfwlist6
Name: chnroute6
Name: blacklist6

#===================== 路由表状态 =====================#

#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 br-lan
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 br-lan
#ip route list
default via 192.168.0.1 dev br-lan proto static 
192.168.0.0/24 dev br-lan proto kernel scope link src 192.168.0.2 
#ip rule show
0:	from all lookup local
32765:	from all fwmark 0x162 lookup 354
32766:	from all lookup main
32767:	from all lookup default

#===================== 端口占用状态 =====================#

tcp        0      0 :::7890                 :::*                    LISTEN      17653/clash
tcp        0      0 :::7891                 :::*                    LISTEN      17653/clash
tcp        0      0 :::7892                 :::*                    LISTEN      17653/clash
tcp        0      0 :::7893                 :::*                    LISTEN      17653/clash
tcp        0      0 :::7895                 :::*                    LISTEN      17653/clash
tcp        0      0 :::9090                 :::*                    LISTEN      17653/clash
udp        0      0 0.0.0.0:45516           0.0.0.0:*                           17653/clash
udp        0      0 0.0.0.0:60959           0.0.0.0:*                           17653/clash
udp        0      0 0.0.0.0:57539           0.0.0.0:*                           17653/clash
udp        0      0 0.0.0.0:49358           0.0.0.0:*                           17653/clash
udp        0      0 :::7874                 :::*                                17653/clash
udp        0      0 :::7891                 :::*                                17653/clash
udp        0      0 :::7892                 :::*                                17653/clash
udp        0      0 :::7893                 :::*                                17653/clash
udp        0      0 :::7895                 :::*                                17653/clash

#===================== 测试本机DNS查询 =====================#

Server:		127.0.0.1
Address:	127.0.0.1:53


Name:	www.baidu.com
Address: 198.18.0.13


#===================== resolv.conf.d =====================#

# Interface lan
nameserver 192.168.0.1

#===================== 测试本机网络连接 =====================#

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 277
Content-Type: text/html
Date: Mon, 08 Aug 2022 00:21:10 GMT
Etag: "575e1f60-115"
Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
Pragma: no-cache
Server: bfe/1.0.8.18


#===================== 测试本机网络下载 =====================#

HTTP/2 200 
cache-control: max-age=300
content-security-policy: default-src 'none'; style-src 'unsafe-inline'; sandbox
content-type: text/plain; charset=utf-8
etag: "8c9c2724dbecd721d24a35117a8c4e28d61e5a152a6107e6a8242986b9ec1eba"
strict-transport-security: max-age=31536000
x-content-type-options: nosniff
x-frame-options: deny
x-xss-protection: 1; mode=block
x-github-request-id: 132C:1B1F:9C5314:CF8DF5:62EFC109
accept-ranges: bytes
date: Mon, 08 Aug 2022 00:21:10 GMT
via: 1.1 varnish
x-served-by: cache-hnd18720-HND
x-cache: HIT
x-cache-hits: 1
x-timer: S1659918071.539222,VS0,VE1
vary: Authorization,Accept-Encoding,Origin
access-control-allow-origin: *
x-fastly-request-id: 0a4ae1326dbf88afc2b4f22603e31f1af345d2ee
expires: Mon, 08 Aug 2022 00:26:10 GMT
source-age: 165
content-length: 80


#===================== 最近运行日志 =====================#

time="2022-08-08T08:20:42+08:00" level=info msg="[TCP] [Clash.Meta] --> ghproxy.com:443 match Match using Proxy[【直连】东京 - 原生解锁 - 1]"
time="2022-08-08T08:20:42+08:00" level=info msg="[TCP] [Clash.Meta] --> ghproxy.com:443 match Match using Proxy[【直连】东京 - 原生解锁 - 1]"
time="2022-08-08T08:20:42+08:00" level=info msg="[TCP] [Clash.Meta] --> ghproxy.com:443 match Match using Proxy[【直连】东京 - 原生解锁 - 1]"
time="2022-08-08T08:20:42+08:00" level=info msg="[TCP] [Clash.Meta] --> ghproxy.com:443 match Match using Proxy[【直连】东京 - 原生解锁 - 1]"
time="2022-08-08T08:20:42+08:00" level=info msg="[TCP] [Clash.Meta] --> ghproxy.com:443 match Match using Proxy[【直连】东京 - 原生解锁 - 1]"
time="2022-08-08T08:20:45+08:00" level=info msg="Use tcp concurrent"
time="2022-08-08T08:20:45+08:00" level=info msg="HTTP proxy listening at: [::]:7890"
time="2022-08-08T08:20:45+08:00" level=info msg="SOCKS proxy listening at: [::]:7891"
time="2022-08-08T08:20:45+08:00" level=info msg="Redirect proxy listening at: [::]:7892"
time="2022-08-08T08:20:45+08:00" level=info msg="TProxy server listening at: [::]:7895"
time="2022-08-08T08:20:45+08:00" level=info msg="Mixed(http+socks) proxy listening at: [::]:7893"
time="2022-08-08T08:20:45+08:00" level=info msg="[UDP] 192.168.0.2:60785 --> 180.97.34.28:8829 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:20:46+08:00" level=info msg="[TCP] 192.168.0.100:57410 --> www.google.com:443 match RuleSet(Google) using Google[【直连】东京 - 原生解锁 - 1]"
time="2022-08-08T08:20:46+08:00" level=info msg="[TCP] 192.168.0.107:47196 --> 123.151.54.38:8080 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:20:48+08:00" level=info msg="[TCP] 192.168.0.100:57413 --> mask-h2.icloud.com:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:20:48+08:00" level=info msg="[UDP] 192.168.0.2:54321 --> 45.124.124.122:8053 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:20:48+08:00" level=info msg="[TCP] 192.168.0.100:57416 --> mask-h2.icloud.com:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:20:49+08:00" level=info msg="[TCP] 192.168.0.100:57418 --> mask-api.icloud.com:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:20:49+08:00" level=info msg="[TCP] 192.168.0.100:57419 --> rr1---sn-3pm7sne7.googlevideo.com:443 match RuleSet(Google) using Google[【直连】东京 - 原生解锁 - 1]"
time="2022-08-08T08:20:49+08:00" level=info msg="[TCP] 192.168.0.100:58224 --> 17.56.138.30:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:20:50+08:00" level=info msg="[TCP] 192.168.0.100:57421 --> aa.google.com:443 match RuleSet(Google) using Google[【直连】东京 - 原生解锁 - 1]"
time="2022-08-08T08:20:51+08:00" level=info msg="[TCP] 192.168.0.100:58225 --> 91.108.56.171:443 match Match using Proxy[【直连】东京 - 原生解锁 - 1]"
time="2022-08-08T08:20:52+08:00" level=info msg="[TCP] 192.168.0.102:62658 --> 124.237.224.9:443 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:20:52+08:00" level=info msg="[TCP] 192.168.0.102:62655 --> 124.237.224.8:443 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:20:53+08:00" level=info msg="[TCP] 192.168.0.118:40708 --> dig.bdurl.net:443 match RuleSet(adblock-domain) using AdBlock[REJECT]"
time="2022-08-08T08:20:53+08:00" level=info msg="[TCP] 192.168.0.118:40710 --> dig.bdurl.net:443 match RuleSet(adblock-domain) using AdBlock[REJECT]"
time="2022-08-08T08:20:54+08:00" level=info msg="[UDP] 192.168.0.2:42592 --> 150.138.174.157:443 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:20:54+08:00" level=info msg="[TCP] 192.168.0.100:57435 --> amp-api.music.apple.com:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:20:55+08:00" level=info msg="[TCP] 192.168.0.118:43426 --> p1.toutiaoimg.com:443 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:20:55+08:00" level=info msg="[TCP] 192.168.0.100:57438 --> mask-h2.icloud.com:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:20:58+08:00" level=info msg="[TCP] 192.168.0.118:37940 --> sf6-cdn-tos.toutiaostatic.com:443 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:20:58+08:00" level=info msg="[TCP] 192.168.0.118:38536 --> sf3-cdn-tos.toutiaostatic.com:443 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:20:59+08:00" level=info msg="[UDP] 192.168.0.2:46587 --> 45.124.124.51:8053 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:21:00+08:00" level=info msg="[TCP] 192.168.0.100:57448 --> 150.138.167.141:443 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:21:00+08:00" level=info msg="[TCP] 192.168.0.107:48804 --> aeventlog.beacon.qq.com:8081 match RuleSet(adblock-domain) using AdBlock[REJECT]"
time="2022-08-08T08:21:00+08:00" level=info msg="[TCP] 192.168.0.100:58226 --> 17.56.138.30:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:21:01+08:00" level=info msg="[TCP] 192.168.0.100:57449 --> 150.138.167.141:443 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:21:01+08:00" level=info msg="[TCP] 192.168.0.100:57450 --> 150.138.167.141:443 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:21:01+08:00" level=info msg="[TCP] 192.168.0.100:57453 --> pancake.apple.com:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:21:01+08:00" level=info msg="[TCP] 192.168.0.100:57454 --> pancake.apple.com:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:21:01+08:00" level=info msg="[TCP] 192.168.0.100:57455 --> 150.138.167.141:443 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:21:01+08:00" level=info msg="[TCP] 192.168.0.100:57456 --> pancake.apple.com:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:21:02+08:00" level=info msg="[TCP] 192.168.0.100:57460 --> gateway.icloud.com.cn:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:21:05+08:00" level=info msg="[TCP] 192.168.0.101:49700 --> gateway.icloud.com.cn:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:21:05+08:00" level=info msg="[TCP] 192.168.0.101:49702 --> gateway.icloud.com:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:21:06+08:00" level=info msg="[TCP] 192.168.0.102:62661 --> 124.237.224.8:443 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:21:07+08:00" level=info msg="[TCP] 192.168.0.100:57465 --> pancake.apple.com:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:21:07+08:00" level=info msg="[TCP] 192.168.0.100:57466 --> pancake.apple.com:443 match RuleSet(Apple) using Apple[DIRECT]"
time="2022-08-08T08:21:10+08:00" level=info msg="[TCP] 192.168.0.2:58748 --> www.baidu.com:80 match GeoIP(CN) using DIRECT"
time="2022-08-08T08:21:10+08:00" level=info msg="[TCP] 192.168.0.2:39332 --> raw.githubusercontent.com:443 match RuleSet(global) using Proxy[【直连】东京 - 原生解锁 - 1]"

#===================== 活动连接信息 =====================#

1. SourceIP:【192.168.0.100】 - Host:【www.google.com】 - DestinationIP:【】 - Network:【tcp】 - RulePayload:【Google】 - Lastchain:【【直连】东京 - 原生解锁 - 1】
2. SourceIP:【192.168.0.100】 - Host:【rr1---sn-3pm7sne7.googlevideo.com】 - DestinationIP:【157.240.17.36】 - Network:【tcp】 - RulePayload:【Google】 - Lastchain:【【直连】东京 - 原生解锁 - 1】
3. SourceIP:【】 - Host:【api.v1.mk】 - DestinationIP:【172.67.180.200】 - Network:【tcp】 - RulePayload:【】 - Lastchain:【COMPATIBLE】
4. SourceIP:【192.168.0.100】 - Host:【Empty】 - DestinationIP:【17.56.138.30】 - Network:【tcp】 - RulePayload:【Apple】 - Lastchain:【DIRECT】
5. SourceIP:【192.168.0.118】 - Host:【sf6-cdn-tos.toutiaostatic.com】 - DestinationIP:【36.99.119.110】 - Network:【tcp】 - RulePayload:【CN】 - Lastchain:【DIRECT】
6. SourceIP:【192.168.0.100】 - Host:【Empty】 - DestinationIP:【150.138.167.141】 - Network:【tcp】 - RulePayload:【CN】 - Lastchain:【DIRECT】
7. SourceIP:【】 - Host:【ghproxy.com】 - DestinationIP:【144.24.81.189】 - Network:【tcp】 - RulePayload:【】 - Lastchain:【【直连】东京 - 原生解锁 - 1】
8. SourceIP:【192.168.0.100】 - Host:【mask-api.icloud.com】 - DestinationIP:【】 - Network:【tcp】 - RulePayload:【Apple】 - Lastchain:【DIRECT】
9. SourceIP:【192.168.0.2】 - Host:【Empty】 - DestinationIP:【45.124.124.51】 - Network:【udp】 - RulePayload:【CN】 - Lastchain:【DIRECT】
10. SourceIP:【】 - Host:【api.v1.mk】 - DestinationIP:【172.67.180.200】 - Network:【tcp】 - RulePayload:【】 - Lastchain:【COMPATIBLE】
11. SourceIP:【192.168.0.100】 - Host:【aa.google.com】 - DestinationIP:【】 - Network:【tcp】 - RulePayload:【Google】 - Lastchain:【【直连】东京 - 原生解锁 - 1】
12. SourceIP:【192.168.0.100】 - Host:【Empty】 - DestinationIP:【91.108.56.171】 - Network:【tcp】 - RulePayload:【】 - Lastchain:【【直连】东京 - 原生解锁 - 1】
13. SourceIP:【192.168.0.118】 - Host:【sf3-cdn-tos.toutiaostatic.com】 - DestinationIP:【182.40.19.118】 - Network:【tcp】 - RulePayload:【CN】 - Lastchain:【DIRECT】
14. SourceIP:【192.168.0.100】 - Host:【mask-h2.icloud.com】 - DestinationIP:【17.248.152.142】 - Network:【tcp】 - RulePayload:【Apple】 - Lastchain:【DIRECT】
15. SourceIP:【】 - Host:【ghproxy.com】 - DestinationIP:【144.24.81.189】 - Network:【tcp】 - RulePayload:【】 - Lastchain:【【直连】东京 - 原生解锁 - 1】
16. SourceIP:【192.168.0.102】 - Host:【Empty】 - DestinationIP:【124.237.224.8】 - Network:【tcp】 - RulePayload:【CN】 - Lastchain:【DIRECT】
17. SourceIP:【】 - Host:【ghproxy.com】 - DestinationIP:【144.24.81.189】 - Network:【tcp】 - RulePayload:【】 - Lastchain:【【直连】东京 - 原生解锁 - 1】
18. SourceIP:【】 - Host:【ghproxy.com】 - DestinationIP:【144.24.81.189】 - Network:【tcp】 - RulePayload:【】 - Lastchain:【【直连】东京 - 原生解锁 - 1】
19. SourceIP:【】 - Host:【ghproxy.com】 - DestinationIP:【144.24.81.189】 - Network:【tcp】 - RulePayload:【】 - Lastchain:【【直连】东京 - 原生解锁 - 1】
20. SourceIP:【】 - Host:【ghproxy.com】 - DestinationIP:【144.24.81.189】 - Network:【tcp】 - RulePayload:【】 - Lastchain:【【直连】东京 - 原生解锁 - 1】
21. SourceIP:【192.168.0.100】 - Host:【mask-h2.icloud.com】 - DestinationIP:【】 - Network:【tcp】 - RulePayload:【Apple】 - Lastchain:【DIRECT】
22. SourceIP:【192.168.0.2】 - Host:【Empty】 - DestinationIP:【45.124.124.122】 - Network:【udp】 - RulePayload:【CN】 - Lastchain:【DIRECT】
23. SourceIP:【192.168.0.118】 - Host:【p1.toutiaoimg.com】 - DestinationIP:【150.138.101.76】 - Network:【tcp】 - RulePayload:【CN】 - Lastchain:【DIRECT】
24. SourceIP:【192.168.0.102】 - Host:【Empty】 - DestinationIP:【124.237.224.9】 - Network:【tcp】 - RulePayload:【CN】 - Lastchain:【DIRECT】
25. SourceIP:【】 - Host:【api.v1.mk】 - DestinationIP:【172.67.180.200】 - Network:【tcp】 - RulePayload:【】 - Lastchain:【COMPATIBLE】
26. SourceIP:【192.168.0.100】 - Host:【Empty】 - DestinationIP:【150.138.167.141】 - Network:【tcp】 - RulePayload:【CN】 - Lastchain:【DIRECT】
27. SourceIP:【192.168.0.100】 - Host:【amp-api.music.apple.com】 - DestinationIP:【】 - Network:【tcp】 - RulePayload:【Apple】 - Lastchain:【DIRECT】
28. SourceIP:【192.168.0.100】 - Host:【Empty】 - DestinationIP:【150.138.167.141】 - Network:【tcp】 - RulePayload:【CN】 - Lastchain:【DIRECT】
29. SourceIP:【192.168.0.2】 - Host:【Empty】 - DestinationIP:【150.138.174.157】 - Network:【udp】 - RulePayload:【CN】 - Lastchain:【DIRECT】
30. SourceIP:【192.168.0.2】 - Host:【Empty】 - DestinationIP:【180.97.34.28】 - Network:【udp】 - RulePayload:【CN】 - Lastchain:【DIRECT】
31. SourceIP:【】 - Host:【api.v1.mk】 - DestinationIP:【172.67.180.200】 - Network:【tcp】 - RulePayload:【】 - Lastchain:【COMPATIBLE】
32. SourceIP:【192.168.0.100】 - Host:【mask-h2.icloud.com】 - DestinationIP:【】 - Network:【tcp】 - RulePayload:【Apple】 - Lastchain:【DIRECT】
33. SourceIP:【】 - Host:【ghproxy.com】 - DestinationIP:【144.24.81.189】 - Network:【tcp】 - RulePayload:【】 - Lastchain:【【直连】东京 - 原生解锁 - 1】
34. SourceIP:【192.168.0.100】 - Host:【Empty】 - DestinationIP:【150.138.167.141】 - Network:【tcp】 - RulePayload:【CN】 - Lastchain:【DIRECT】
35. SourceIP:【】 - Host:【api.v1.mk】 - DestinationIP:【104.21.18.71】 - Network:【tcp】 - RulePayload:【】 - Lastchain:【COMPATIBLE】
36. SourceIP:【192.168.0.107】 - Host:【Empty】 - DestinationIP:【123.151.54.38】 - Network:【tcp】 - RulePayload:【CN】 - Lastchain:【DIRECT】

OpenClash Config

No response

Expected Behavior

待机耗电恢复正常水平

Screenshots

以下测试在一台 iPhone 7 上进行:全程除查看电量外不操作手机,因此 App 电池用量处仅显示“设置”,用量几分钟。

IMG_0004

可见使用 PassWall 时待机电量消耗正常;在其他设备操作关闭 PassWall 并开启 OpenClash,会立即影响到手机耗电。

IMG_0007

一直开启 OpenClash,电量消耗严重。

IMG_5AEB50ACD145-1

关闭 OpenClash,手机本机运行 Stash,电量消耗正常。

@akira304moto akira304moto added the bug Something isn't working label Aug 8, 2022
@akira304moto akira304moto changed the title [Bug] R2S 旁路由运行 OpenClash 严重增加 iPhone 待机耗电 [Bug] R2S 旁路由运行 OpenClash 严重增加局域网内 iPhone 待机耗电 Aug 8, 2022
@imhanjie
Copy link

imhanjie commented Aug 8, 2022

我和你一样,一直有这个情况,我也是 R2S,做的主路由,固件基本都试过,包括原版的 OpenWrt,经过我多次待机测试:

测试设备:iPhone 13 Pro、iPhone XR、iPad Air 4

  • OpenClash:Redir-host 模式 [待机耗电异常]、Fake-ip [待机耗电异常]
  • ShellClash:Redir-host 模式 [待机耗电正常]、Fake-ip [待机耗电异常]

所以目前只能用的 ShellClash:Redir-host 模式才能正常

@eightsheep67
Copy link

这会是什么问题?神奇,cy一下

@leeharuhiofcn
Copy link

很好奇,关注一下。

@Skyxim
Copy link

Skyxim commented Aug 30, 2022

删除 Ad 规则

@tangfenga
Copy link

不要发布无意义的回复,大家有同样情况的可以将自己的网络环境阐述一下,方便找出问题

@Franky18
Copy link

Franky18 commented Sep 4, 2022

X86也遇到了同样的问题,我今天测试了删除苹果相关规则(之前用的ACL4的苹果规则,规则比较简单没有blackmatrix7全面,且为直连),让苹果走Final(final是走代理),耗电情况应该是正常了。模式为:redir-host,有时间再测试一下fake-ip。

@Franky18
Copy link

Franky18 commented Sep 4, 2022

我没有使用过passwall,想问一下你测试的passwall耗电情况细节问题。passwall设置的是什么分流规则,gfw列表还是绕过中国大陆IP?passwall有无设置苹果规则?如有设置,苹果连接走直连还是代理?

@QuincySx
Copy link

QuincySx commented Sep 5, 2022

X86也遇到了同样的问题,我今天测试了删除苹果相关规则(之前用的ACL4的苹果规则,规则比较简单没有blackmatrix7全面,且为直连),让苹果走Final(final是走代理),耗电情况应该是正常了。模式为:redir-host,有时间再测试一下fake-ip。

你是只把里面 Apple-proxy.list 走代理了。还是整个 Apple.list 全走代理了,

@cubarco
Copy link
Contributor

cubarco commented Sep 6, 2022

@Franky18

... 让苹果走Final(final是走代理),耗电情况应该是正常了 ...

这两天调mosdns发现个情况,可能跟这个issue相关联。就是32-courier.push.apple.com这类推送相关的长链接域名,DNS拿到的中国IP也会被geoip库识别为非CN IP(geoip用的是Loyalsoldier的)。

这个现象导致的结果是,在Clash的dns机制中,用nameserver组获取的国内IP会被GEO IP识别为非CN,所以抛弃,进而使用fallback获取到位于国外的IP。然后clash策略组大概率会把apple走国内,也就把非CN IP走国内,可能会影响iOS的业务。如果让apple走了final,也就是非CN IP走了final,可能歪打正着解决了这个问题。。

以上只是描述下GEO IP这个坑,不一定是这个issue的成因。

@Franky18
Copy link

Franky18 commented Sep 7, 2022

@Franky18

... 让苹果走Final(final是走代理),耗电情况应该是正常了 ...

这两天调mosdns发现个情况,可能跟这个issue相关联。就是32-courier.push.apple.com这类推送相关的长链接域名,DNS拿到的中国IP也会被geoip库识别为非CN IP(geoip用的是Loyalsoldier的)。

这个现象导致的结果是,在Clash的dns机制中,用nameserver组获取的国内IP会被GEO IP识别为非CN,所以抛弃,进而使用fallback获取到位于国外的IP。然后clash策略组大概率会把apple走国内,也就把非CN IP走国内,可能会影响iOS的业务。如果让apple走了final,也就是非CN IP走了final,可能歪打正着解决了这个问题。。

以上只是描述下GEO IP这个坑,不一定是这个issue的成因。

我尝试使用blackmatrix7的更为全面的规则,且并未使用fall-back dns查询功能,观察苹果链接。看起来所有苹果域名以及ip链接都被规则捕获并直连。如果所有苹果链接都被规则捕获,理论上不应存在被geo ip误判的情况,但依然有耗电增加的问题。

@Franky18
Copy link

Franky18 commented Sep 7, 2022

X86也遇到了同样的问题,我今天测试了删除苹果相关规则(之前用的ACL4的苹果规则,规则比较简单没有blackmatrix7全面,且为直连),让苹果走Final(final是走代理),耗电情况应该是正常了。模式为:redir-host,有时间再测试一下fake-ip。

你是只把里面 Apple-proxy.list 走代理了。还是整个 Apple.list 全走代理了,

直接删除苹果相关所有规则,苹果的域名链接让clash查询dns,用ip判断是走geo ip cn(直连)还是final(代理),苹果的ip链接也是如此。

@LovelyToaster
Copy link

可以试试让所有会保持长连接的地址绕过内核,我的小米手机也出现了待机耗电异常的情况,发现待机时持续未知原因的唤醒,再将Google FCM和小米push绕过内核后,情况立刻消失

@cubarco
Copy link
Contributor

cubarco commented Nov 8, 2022

可以试试让所有会保持长连接的地址绕过内核,我的小米手机也出现了待机耗电异常的情况,发现待机时持续未知原因的唤醒,再将Google FCM和小米push绕过内核后,情况立刻消失

@LovelyToaster 请问mipush绕过内核走的是IP白名单吗? 网上没找到mipush的ip段,可否提供下?

update: 好像不需要,直接所有china ip都绕内核就好了;只有apple和fcm的国外ip段需要单独处理

@LovelyToaster
Copy link

可以试试让所有会保持长连接的地址绕过内核,我的小米手机也出现了待机耗电异常的情况,发现待机时持续未知原因的唤醒,再将Google FCM和小米push绕过内核后,情况立刻消失

@LovelyToaster 请问mipush绕过内核走的是IP白名单吗? 网上没找到mipush的ip段,可否提供下?

update: 好像不需要,直接所有china ip都绕内核就好了;只有apple和fcm的国外ip段需要单独处理

确实,我是直接china ip都绕过内核,然后fcm单独处理

@LovelyToaster
Copy link

可以试试让所有会保持长连接的地址绕过内核,我的小米手机也出现了待机耗电异常的情况,发现待机时持续未知原因的唤醒,再将Google FCM和小米push绕过内核后,情况立刻消失

@LovelyToaster 请问mipush绕过内核走的是IP白名单吗? 网上没找到mipush的ip段,可否提供下?

update: 好像不需要,直接所有china ip都绕内核就好了;只有apple和fcm的国外ip段需要单独处理

其实好像是只要走内核的连接都会造成我的手机唤醒耗电,我把mipush和FCM绕过内核让情况消失的前提是我对于手机的大部分应用回到后台后链接会被关闭,而且中国ip段绕过内核

@cubarco
Copy link
Contributor

cubarco commented Nov 8, 2022

其实好像是只要走内核的连接都会造成我的手机唤醒耗电,我把mipush和FCM绕过内核让情况消失的前提是我对于手机的大部分应用回到后台后链接会被关闭,而且中国ip段绕过内核

刚才发现了这个issue:v2ray/v2ray-core#2564
测试了一下,走clash内核(direct)的长连接,每15秒都有个keep-alive包从clash内核发到客户端:

17:43:56.475915 IP localhost.7890 > localhost.56426: Flags [.], ack 1, win 512, options [nop,nop,TS val 3880779461 ecr 3880764357], length 0
17:43:56.475948 IP localhost.56426 > localhost.7890: Flags [.], ack 1, win 512, options [nop,nop,TS val 3880779462 ecr 3880734189], length 0

17:44:11.579883 IP localhost.7890 > localhost.56426: Flags [.], ack 1, win 512, options [nop,nop,TS val 3880794565 ecr 3880779462], length 0
17:44:11.579915 IP localhost.56426 > localhost.7890: Flags [.], ack 1, win 512, options [nop,nop,TS val 3880794565 ecr 3880734189], length 0

结合你的现象,猜测应该是golang的这个15秒interval的问题(clash内核也是go写的);至于是不是本issue的成因,还需要再测测。(如果是,可能也不是这个repo能解决的了)

@cubarco
Copy link
Contributor

cubarco commented Nov 8, 2022

关联一个clash的issue:https://github.com/Dreamacro/clash/issues/996

@LovelyToaster
Copy link

关联一个clash的issue:https://github.com/Dreamacro/clash/issues/996

按照这个issue 我自编译了一个内核,发现唤醒确实恢复正常了,耗电情况时间太短不确定

@0x1301FDF
Copy link

@Franky18

... 让苹果走Final(final是走代理),耗电情况应该是正常了 ...

这两天调mosdns发现个情况,可能跟这个issue相关联。就是32-courier.push.apple.com这类推送相关的长链接域名,DNS拿到的中国IP也会被geoip库识别为非CN IP(geoip用的是Loyalsoldier的)。

这个现象导致的结果是,在Clash的dns机制中,用nameserver组获取的国内IP会被GEO IP识别为非CN,所以抛弃,进而使用fallback获取到位于国外的IP。然后clash策略组大概率会把apple走国内,也就把非CN IP走国内,可能会影响iOS的业务。如果让apple走了final,也就是非CN IP走了final,可能歪打正着解决了这个问题。。

以上只是描述下GEO IP这个坑,不一定是这个issue的成因。

关注下,我也是Redir-host模式下把apple相关域名设置直连之后,包括32-courier.push.apple.com,apple-dns.net之类的,晚上待机耗电加快

@XCJYO
Copy link

XCJYO commented Dec 22, 2022

更换GEOIP能否解决?另外苹果商店的软件下载明显变慢,比不用软路由慢的多

@XCJYO
Copy link

XCJYO commented Dec 23, 2022

X86也遇到了同样的问题,我今天测试了删除苹果相关规则(之前用的ACL4的苹果规则,规则比较简单没有blackmatrix7全面,且为直连),让苹果走Final(final是走代理),耗电情况应该是正常了。模式为:redir-host,有时间再测试一下fake-ip。

我也是订阅转换用的ACL4的,然后切换mate模式在规则集与策略组管理里加上的blackmatrix7的,应该是这样操作的吧?

@cubarco
Copy link
Contributor

cubarco commented Dec 29, 2022

我给clash加长了keep-alive心跳间隔时长(默认是15s),并经过吃灰iPad一个多月的待机验证,观测到待机耗电确实是在减少了。至少对我来说clash的续航问题应该是这个issue导致的。

我的解决方案是在Clash.Meta上简单修改了一下keep-alive的心跳间隔:cubarco/Clash.Meta@e5a0e6c 。有异常耗电问题的朋友可以尝试下,release里面有预编译的binary。

@Franky18
Copy link

Franky18 commented Jan 5, 2023

我给clash加长了keep-alive心跳间隔时长(默认是15s),并经过吃灰iPad一个多月的待机验证,观测到待机耗电确实是在减少了。至少对我来说clash的续航问题应该是这个issue导致的。

我的解决方案是在Clash.Meta上简单修改了一下keep-alive的心跳间隔:cubarco/Clash.Meta@e5a0e6c 。有异常耗电问题的朋友可以尝试下,release里面有预编译的binary。

感谢大佬!我不严谨的测试了几天,耗电情况确实有改善。赞!

@github-actions
Copy link
Contributor

github-actions bot commented Mar 6, 2023

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 5 days

@github-actions github-actions bot added the Stale label Mar 6, 2023
@akira304moto
Copy link
Contributor Author

up

@kangbingbing
Copy link

我也遇到了类似的问题,我手机使用passwall 时待机基本走横线,不掉电,或者很少的电,使用open clash 后,晚上7个小时基本掉电20%+,其他用着很舒服,这点是真难受😁

@github-actions github-actions bot removed the Stale label Mar 7, 2023
@silverzhaojr
Copy link

silverzhaojr commented Aug 4, 2023

参考这个 issue golang/go/issues/48622 ,具体原因应该如下:

  1. Google FCM / Apple Push 在与手机建立长连接后,它通常会在一定时间内发送心跳包,以维持该连接不被 nat 丢弃掉,这个心跳间隔通常为 5min ~ 28min。

  2. 如果该连接通过 clash 接手发起(不管是直连,还是通过远程节点连接),由于 go 默认启用了 keep alive,在发现该连接持续 KEEP_IDLE (15s) 没有数据活动,它会发起一个 keep alive 包给客户端(手机):

    • 如果客户端回应了,则表明该连接有效,clash 内核会在再次 KEEP_IDLE (15s) 后发出 keep alive 包探测;
    • 如果客户端没有回应(离线,不再连接到 clash),clash 内核会每间隔 KEEP_ALIVE_INTERVAL (15s) 发送一次探测包,持续发送 KEEP_COUNT (默认值为 9) 次后,如果一直没有收到回应,则认为连接无效,会从内存中清除相关的连接信息;

    可见,对于正常的长连接来说,每隔 KEEP_IDLE (15s) 就会有一次探测包来唤醒手机,这种情况下耗电显然可观了。

  3. 根本原因是 go 默认将 KEEP_IDLE 和 KEEP_ALIVE_INTERVAL 设为相同,且其数值太小。

    事实上 KEEP_IDLE 可以设置得比较大些,比如 10min ,而 KEEP_ALIVE_INTERVAL 可以是 15s,这样极端情况下,该无效连接最多会在内核中占据内存持续 10min + 15s * 9 = 735s,然后被移除。由于这时候客户端(手机)已经离线,所以这些探测包永远不会到达手机从而也不会再唤醒手机。

  4. 目前情况下,Go 语言无法单独设置 KEEP_IDLE 和 KEEP_ALIVE_INTERVAL,只能同时设置:
    https://go.dev/src/net/tcpsockopt_unix.go

    若将其均设为 10min,则无效连接在内存中最多会保持 10min + 10min * 9 = 100min。由于客户端离开 clash 情况比较少见,且通常只会有一两个长连接,这样时长的内存占用应该是可以接受的。

silverzhaojr added a commit to silverzhaojr/clash that referenced this issue Aug 22, 2023
This is just a quick hack way to address the battery draining issue.
See details from the following issues:

  https://github.com/Dreamacro/clash/issues/2867
  vernesong/OpenClash#2614
@silverzhaojr
Copy link

由于目前官方 Clash 团队还没有关注这个 https://github.com/Dreamacro/clash/issues/2867 ,所以我直接改了下代码,将 TCP keep alive interval 设为了 1800s。大家可以测试看下,看看是否解决了这个问题:

https://github.com/silverzhaojr/clash/releases/tag/v1.18.0-fix-tcp-keep-alive

@cubarco
Copy link
Contributor

cubarco commented Aug 22, 2023

由于目前官方 Clash 团队还没有关注这个 Dreamacro/clash#2867 ,所以我直接改了下代码,将 TCP keep alive interval 设为了 1800s。大家可以测试看下,看看是否解决了这个问题:

https://github.com/silverzhaojr/clash/releases/tag/v1.18.0-fix-tcp-keep-alive

@silverzhaojr 你可以在这个issue里面网上翻翻,这个方案我已经提过:cubarco/Clash.Meta@e5a0e6c ,而且验证是有效的。

@silverzhaojr
Copy link

@silverzhaojr 你可以在这个issue里面网上翻翻,这个方案我已经提过:cubarco/Clash.Meta@e5a0e6c ,而且验证是有效的。

我就是看了你这个代码做的改动🤣。这里主要是基于 Clash 的最新版本编译了下带有修复的代码,方便其他遇到这个问题的人暂时用着。

@lvii
Copy link

lvii commented Sep 1, 2023

由于目前官方 Clash 团队还没有关注这个 Dreamacro/clash#2867 ,所以我直接改了下代码,将 TCP keep alive interval 设为了 1800s。大家可以测试看下,看看是否解决了这个问题:
https://github.com/silverzhaojr/clash/releases/tag/v1.18.0-fix-tcp-keep-alive

@silverzhaojr 你可以在这个issue里面网上翻翻,这个方案我已经提过:cubarco/Clash.Meta@e5a0e6c ,而且验证是有效的。

@cubarco 能否给 meta 提个 pull request 修复一下

@LovelyToaster
Copy link

由于目前官方 Clash 团队还没有关注这个 Dreamacro/clash#2867 ,所以我直接改了下代码,将 TCP keep alive interval 设为了 1800s。大家可以测试看下,看看是否解决了这个问题:
https://github.com/silverzhaojr/clash/releases/tag/v1.18.0-fix-tcp-keep-alive

@silverzhaojr 你可以在这个issue里面网上翻翻,这个方案我已经提过:cubarco/Clash.Meta@e5a0e6c ,而且验证是有效的。

@cubarco 能否给 meta 提个 pull request 修复一下

提高keep alive时间好像会导致部分连接不会断开,我改成3600后连接数经常200+,而且可以看见有很多相同连接存在几个小时,即使发出连接的设备已经关机,连接依旧存在

@silverzhaojr
Copy link

提高keep alive时间好像会导致部分连接不会断开,我改成3600后连接数经常200+,而且可以看见有很多相同连接存在几个小时,即使发出连接的设备已经关机,连接依旧存在

这个是预期的行为,上面有解释:#2614 (comment) 。改成 30min 后,无效连接最多会存在 30min + 30min * 9 = 5hr。

最佳做法是等 Go 语言支持分开设置 KEEP_IDLE, KEEP_ALIVE_INTERVAL,KEEP_COUNT。

@yyysuo
Copy link

yyysuo commented Sep 5, 2023

由于目前官方 Clash 团队还没有关注这个 Dreamacro/clash#2867 ,所以我直接改了下代码,将 TCP keep alive interval 设为了 1800s。大家可以测试看下,看看是否解决了这个问题:

https://github.com/silverzhaojr/clash/releases/tag/v1.18.0-fix-tcp-keep-alive

大佬能不能给一个meta版本的tun模式的内核编译成品呢

@yyysuo
Copy link

yyysuo commented Sep 6, 2023

提高keep alive时间好像会导致部分连接不会断开,我改成3600后连接数经常200+,而且可以看见有很多相同连接存在几个小时,即使发出连接的设备已经关机,连接依旧存在

这个是预期的行为,上面有解释:#2614 (comment) 。改成 30min 后,无效连接最多会存在 30min + 30min * 9 = 5hr。

最佳做法是等 Go 语言支持分开设置 KEEP_IDLE, KEEP_ALIVE_INTERVAL,KEEP_COUNT。

MetaCubeX/mihomo#715 (comment)

貌似meta内核有大佬添加了配置,但是我不会配置。

@silverzhaojr
Copy link

silverzhaojr commented Sep 6, 2023

貌似meta内核有大佬添加了配置,但是我不会配置。

根据这里的改动,应该是在 clash meta config.yaml 配置文件中增加一行:

# TCP keep alive interval,默认是 15s
keep-alive-interval: 15

15改成1800,你可以试下是否生效。

注意要用这里的 alpha 版本:https://github.com/MetaCubeX/Clash.Meta/releases/tag/Prerelease-Alpha

@yyysuo
Copy link

yyysuo commented Sep 6, 2023

在openclash中如何设置呢。

@caneman
Copy link

caneman commented Sep 12, 2023

最新版的内核还没有修复这个问题吗?

@LovelyToaster
Copy link

最新版的内核还没有修复这个问题吗?

最新的alpha已经可以正常配置tcpalive时间了

@xpn282
Copy link

xpn282 commented Oct 10, 2023

我的iPhone和iPad一样的现象,连家里的Wi-Fi待机比蜂窝待机还要耗电多了。把OpenClash关掉,待机就正常了。。。
我用最新的OpenClash和最新的Meta内核,在配置文件里添加keep-alive-interval: 1800,也没有任何效果。

现在的临时解决方案:在OpenClash的黑白名单里添加了iPhone和iPad,不让它们走OpenClash了,它们出国用小火箭app代替。。。

这个问题OpenClash什么时候能给予解决啊

@dorty3541
Copy link

我的iPhone和iPad一样的现象,连家里的Wi-Fi待机比蜂窝待机还要耗电多了。把OpenClash关掉,待机就正常了。。。 我用最新的OpenClash和最新的Meta内核,在配置文件里添加keep-alive-interval: 1800,也没有任何效果。

现在的临时解决方案:在OpenClash的黑白名单里添加了iPhone和iPad,不让它们走OpenClash了,它们出国用小火箭app代替。。。

这个问题OpenClash什么时候能给予解决啊

我测试了下,openclash 0.4.151-beta里已经有相关选项可以调整tcp keep-alive 间隔了
图片

@TurnOffNOD
Copy link

关联一个clash的issue:https://github.com/Dreamacro/clash/issues/996

现在这个链接没了。

@john5du
Copy link

john5du commented Nov 24, 2023

我的解决方案是在绕过核心的大陆IP段中加入APNS的IP段,实测Redir-Host 模式下可以绕过核心。APNS的具体ip段见https://support.apple.com/zh-cn/102266
image

Copy link
Contributor

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 5 days

@AllForLandlord
Copy link

最近我也在研究这个事情。发现把TCP Keep-alive时间间隔调成了1800s后,虽然在大部份网站不会有问题,因为大部份网站在关闭后就会自动在OpenClash里关闭掉已建立的连接。而比较特殊的网站,比如下面所说的www.south-plus.net网站,即使把该网站关闭后,在OpenClash里也依旧存在着该连接,必须由TCP Keep-alive的机制来关闭此链接。有点像长连接。在这种情况下,如果把网站关闭了之后,隔个10~20mins后重新访问该网站,就会因为OpenClash尝试使用旧的无效连接来通信而无法连接。

具体复现步骤:

  1. 在OpenClash里把TCP Keep-alive时间间隔调成1800s
  2. 访问www.south-plus.net
  3. the marvellous suspender插件把这个页面冻结(此步骤应该也可以直接关闭该网站),并等待10~20min
  4. 重新访问www.south-plus.net,发现无法正常访问。
  5. 而在OpenClash控制面板中关闭老旧的www.south-plus.net连接,就立刻可以正常访问了。

在把OpenClash的设置改回TCP Keep-alive为默认值的15s后,由于只需要300s就可以关闭无效连接,所以即使等个10~20min,旧的连接也已经被OpenClash给清掉了;而在还保留着旧连接的300s内重新访问网站时,旧的连接也依旧有效,所以不会出现无法访问的尴尬情况。

至于移动设备的长连接该怎么处理,我是苹果设备,使用了john5du的方法,实测苹果的推送连接不再经过OpenClash的内核了。
安卓设备应该也可以参考这个做法,把推送通知的服务器的IP添加到绕过核心的IP列表中。

@huajideshutiao
Copy link

最近我也在研究这个事情。发现把TCP Keep-alive时间间隔调成了1800s后,虽然在大部份网站不会有问题,因为大部份网站在关闭后就会自动在OpenClash里关闭掉已建立的连接。而比较特殊的网站,比如下面所说的www.south-plus.net网站,即使把该网站关闭后,在OpenClash里也依旧存在着该连接,必须由TCP Keep-alive的机制来关闭此链接。有点像长连接。在这种情况下,如果把网站关闭了之后,隔个10~20mins后重新访问该网站,就会因为OpenClash尝试使用旧的无效连接来通信而无法连接。

具体复现步骤:

  1. 在OpenClash里把TCP Keep-alive时间间隔调成1800s
  2. 访问www.south-plus.net
  3. the marvellous suspender插件把这个页面冻结(此步骤应该也可以直接关闭该网站),并等待10~20min
  4. 重新访问www.south-plus.net,发现无法正常访问。
  5. 而在OpenClash控制面板中关闭老旧的www.south-plus.net连接,就立刻可以正常访问了。

在把OpenClash的设置改回TCP Keep-alive为默认值的15s后,由于只需要300s就可以关闭无效连接,所以即使等个10~20min,旧的连接也已经被OpenClash给清掉了;而在还保留着旧连接的300s内重新访问网站时,旧的连接也依旧有效,所以不会出现无法访问的尴尬情况。

至于移动设备的长连接该怎么处理,我是苹果设备,使用了john5du的方法,实测苹果的推送连接不再经过OpenClash的内核了。 安卓设备应该也可以参考这个做法,把推送通知的服务器的IP添加到绕过核心的IP列表中。

苹果有统一推送了,但是安卓上的长链接就多了去了,不可能一个个设置的。话说这个选项的默认值是多少?

@LovelyToaster
Copy link

最近我也在研究这个事情。发现把TCP Keep-alive时间间隔调成了1800s后,虽然在大部份网站不会有问题,因为大部份网站在关闭后就会自动在OpenClash里关闭掉已建立的连接。而比较特殊的网站,比如下面所说的www.south-plus.net网站,即使把该网站关闭后,在OpenClash里也依旧存在着该连接,必须由TCP Keep-alive的机制来关闭此链接。有点像长连接。在这种情况下,如果把网站关闭了之后,隔个10~20mins后重新访问该网站,就会因为OpenClash尝试使用旧的无效连接来通信而无法连接。
具体复现步骤:

  1. 在OpenClash里把TCP Keep-alive时间间隔调成1800s
  2. 访问www.south-plus.net
  3. the marvellous suspender插件把这个页面冻结(此步骤应该也可以直接关闭该网站),并等待10~20min
  4. 重新访问www.south-plus.net,发现无法正常访问。
  5. 而在OpenClash控制面板中关闭老旧的www.south-plus.net连接,就立刻可以正常访问了。

在把OpenClash的设置改回TCP Keep-alive为默认值的15s后,由于只需要300s就可以关闭无效连接,所以即使等个10~20min,旧的连接也已经被OpenClash给清掉了;而在还保留着旧连接的300s内重新访问网站时,旧的连接也依旧有效,所以不会出现无法访问的尴尬情况。
至于移动设备的长连接该怎么处理,我是苹果设备,使用了john5du的方法,实测苹果的推送连接不再经过OpenClash的内核了。 安卓设备应该也可以参考这个做法,把推送通知的服务器的IP添加到绕过核心的IP列表中。

苹果有统一推送了,但是安卓上的长链接就多了去了,不可能一个个设置的。话说这个选项的默认值是多少?

15s,安卓fcm排除,然后再把cn ip排除,耗电就可以下降到忽略的地步

@IMFsy
Copy link

IMFsy commented Apr 30, 2024

最近我也在研究这个事情。发现把TCP Keep-alive时间间隔调成了1800s后,虽然在大部份网站不会有问题,因为大部份网站在关闭后就会自动在OpenClash里关闭掉已建立的连接。而比较特殊的网站,比如下面所说的www.south-plus.net网站,即使把该网站关闭后,在OpenClash里也依旧存在着该连接,必须由TCP Keep-alive的机制来关闭此链接。有点像长连接。在这种情况下,如果把网站关闭了之后,隔个10~20mins后重新访问该网站,就会因为OpenClash尝试使用旧的无效连接来通信而无法连接。
具体复现步骤:

  1. 在OpenClash里把TCP Keep-alive时间间隔调成1800s
  2. 访问www.south-plus.net
  3. the marvellous suspender插件把这个页面冻结(此步骤应该也可以直接关闭该网站),并等待10~20min
  4. 重新访问www.south-plus.net,发现无法正常访问。
  5. 而在OpenClash控制面板中关闭老旧的www.south-plus.net连接,就立刻可以正常访问了。

在把OpenClash的设置改回TCP Keep-alive为默认值的15s后,由于只需要300s就可以关闭无效连接,所以即使等个10~20min,旧的连接也已经被OpenClash给清掉了;而在还保留着旧连接的300s内重新访问网站时,旧的连接也依旧有效,所以不会出现无法访问的尴尬情况。
至于移动设备的长连接该怎么处理,我是苹果设备,使用了john5du的方法,实测苹果的推送连接不再经过OpenClash的内核了。 安卓设备应该也可以参考这个做法,把推送通知的服务器的IP添加到绕过核心的IP列表中。

苹果有统一推送了,但是安卓上的长链接就多了去了,不可能一个个设置的。话说这个选项的默认值是多少?

15s,安卓fcm排除,然后再把cn ip排除,耗电就可以下降到忽略的地步

走direct策略是排除吗? 如果不是,那么如何在config.yaml里面实现排除cn ip呢?

Nine499 added a commit to Nine499/proxy-rule that referenced this issue May 2, 2024
控制 Clash 发出 TCP Keep Alive 包的间隔,减少移动设备耗电问题的临时措施。单位为秒
此时 Clash 发现并关闭一个无效 TCP 连接用时: 1*keep-alive-interval + 9*keep-alive-interval
vernesong/OpenClash#2614
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working Stale
Projects
None yet
Development

No branches or pull requests