分类 全部文章 下的文章

miui的安卓google play服务异常耗电的解决办法

最近入了红米k40,使用发现开启谷歌基础服务后异常耗电,检查发现在使用蜂窝网络的时候google play服务耗电量接近50%,并且有些时候play商店和youtube提示没有网络。

手机使用的是联通手机卡,通过蜂窝网络联网时开启全局wireguard连接回家的透明网络。

首先考虑是dns问题,但是使用浏览器打开google.com和youTube.com都没有问题,可以排除dns投毒。

然后经过各种排除最终锁定到了ipv6的问题上,可以通过以下办法禁用蜂窝网络的ipv6。
1.设置
2.双开与移动网络
3.sim卡信息
4.接入点名称
5.按默认apn新建apn,apn协议选择ipv4(miui限制修改默认apn)
6.勾选新建的apn

可以通过HE的network tools中的interface information查看蜂窝网络的ip地址。

关闭蜂窝网络的ipv6后就可以畅快的使用google相关服务了。

其实这个问题可能是wireguard没有接管ipv6流量导致的。

米家全屋智能之Heatcold中央空调温控器

之前分享过米家中央空调温控器FOWAD中央空调温控器,中央空调温控器的技术细节请参考米家全屋智能之米家中央空调温控器
这次更换的heatcold的温控器其实上市有一段时间了,最早heatcold只有地暖温控器,后来增加了空调温控器。
下面先上图。
包装正面
包装侧面1
包装侧面2
开箱
正面
背面
拆解
说明书1
说明书2
说明书3
说明书4
说明书5
说明书6
米家截图1
米家截图2
米家截图3
米家截图4
米家截图5
米家截图6

说一下heatcold这个中央空调温控器使用感受

  • 屏幕材质和fowad的温控器是一样的,就是尺寸小一些
  • 有大物理按键,这点比较好,尤其晚上光线不好情况下找fowad的触摸按键还是比较难受
  • 不支持homekit,但是可以通过米家自定义场景添加到siri使用shortcuts快捷开关
  • 使用wifi连接
  • 自身不带定时功能,可以通过米家app实现定时
  • 关机屏幕不显示
  • 价格稍贵
  • 目前有个问题打开空调后不会马上启动风机,要等大概一分钟后才启动,也可能就是这么设计的,个人猜测一是为了保护设备频繁启动,另一个是等水管里的水循环一会出风更舒适

我用heatcold替换米家温控器原因
一是米家温控器的温度显示不准确且温度刷新很慢;
二是由于我买的是2017年生产的不能添加到米家只能多模网关(三代网关),不想多插一个网关;
三是米家温控器没有技术支持,不知道怎么配置的,每周六23点多都会关机,怎么重置都不行,很崩溃。。。

另外说一下目前小米系智能家居现状
目前看来小米系开始向两个派系发展,一是米家带领的蓝牙mesh方向,另一个是绿米旗下aqara带领的zigbee和homekit方向。蓝牙mesh有成本低,无中心网关可实现高可用等优点,个人感觉目前使用体验并不好;zigbee技术成熟,支持homekit,但是成本高,有中心网关。

使用overture替换dnsmasq做域名分流解析

20210617更新:RouterOS使用DNS转发功能实现域名分流解析
之前分享过使用dnsmasq基于大陆域名白名单分流解析域名,这种办法受限于白名单列表的更新,列表总是滞后于网站实际使用的域名,造成一些境内网站cdn解析到了境外,影响境内网站打开速度。
由于gfw的dns污染只会使用境外地址和私有地址,可以利用这个特性做dns分流解析:所有域名用境内dns服务器解析,如果域名解析得到境内ip则直接采用,如果得到境外ip则使用境外dns服务器解析。
开源软件overture就可以实现这个功能。overture有AB两组dns服务器,AB组各有一个IP列表和域名列表,假设A组为境内dns服务器,A的ip列表是大陆IP列表,A的域名列表是境内域名白名单,B的域名列表是被墙的域名gfwlist。

下面是overture的安装及配置步骤
安装脚本overture_install.sh

#! /bin/bash
apt update && apt install curl wget unzip
wget -q https://github.com/shawn1m/overture/releases/download/v1.7/overture-linux-amd64.zip
unzip overture-linux-amd64.zip  "overture-linux-amd64"
mv overture-linux-amd64 /sbin/overture
cat << EOF > /lib/systemd/system/overture.service
[Unit]
Description=overture-dns-server
After=syslog.target network-online.target
[Service]
ExecStart=/sbin/overture -c /etc/overture/config.yml
StandardOutput=syslog
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
EOF
mkdir /etc/overture
cat << EOF > /etc/overture/config.yml
bindAddress: :53
debugHTTPAddress:
dohEnabled: false
primaryDNS:
  - name: dns1
    address: 114.114.114.114:53
    protocol: udp
    socks5Address:
    timeout: 2
    ednsClientSubnet:
      policy: disable
      externalIP:
      noCookie: true
  - name: dns2
    address: 223.5.5.5:53
    protocol: udp
    socks5Address:
    timeout: 2
    ednsClientSubnet:
      policy: disable
      externalIP:
      noCookie: true
alternativeDNS:
  - name: google8888
    address: 8.8.8.8:53
    protocol: udp
    socks5Address:
    timeout: 3
    ednsClientSubnet:
      policy: disable
      externalIP:
      noCookie: true
  - name: google8844
    address: 8.8.4.4:53
    protocol: udp
    socks5Address:
    timeout: 3
    ednsClientSubnet:
      policy: disable
      externalIP:
      noCookie: true
onlyPrimaryDNS: false
ipv6UseAlternativeDNS: false
alternativeDNSConcurrent: true
whenPrimaryDNSAnswerNoneUse: alternativeDNS
ipNetworkFile:
  primary: /etc/overture/china_ip_list.txt
  alternative: /etc/overture/china_ip_list.txt
domainFile:
  primary: /etc/overture/china_list.txt
  alternative: /etc/overture/gfw_list.txt
  matcher: suffix-tree
hostsFile:
  hostsFile:
  finder: full-map
minimumTTL: 0
domainTTLFile:
cacheSize: 0
cacheRedisUrl:
cacheRedisConnectionPoolSize:
rejectQType:
  - 255
EOF
systemctl enable overture

列表更新脚本 overture_update_fliters.sh,首次运行overture前需要执行此脚本。

#! /bin/bash
cd /etc/overture
rm china_list.txt gfw_list.txt china_ip_list.txt
curl -s https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt > china_ip_list.txt
curl -s https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf  | sed 's/server=\///g;s/\/114.114.114.114//g' > china_list1.txt
curl -s https://raw.githubusercontent.com/hq450/fancyss/master/rules/WhiteList_new.txt  | sed 's/Server=\///g;s/\///g' > china_list2.txt
cat china_list1.txt china_list2.txt | sort -u > china_list.txt
rm china_list1.txt china_list2.txt
curl -s https://raw.githubusercontent.com/Loukky/gfwlist-by-loukky/master/gfwlist.txt | base64 -d | sort -u | sed '/^$\|@@/d'| sed 's#!.\+##; s#|##g; s#@##g; s#http:\/\/##; s#https:\/\/##;' | sed '/\*/d; /apple\.com/d; /sina\.cn/d; /sina\.com\.cn/d; /baidu\.com/d; /qq\.com/d' | sed '/^[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+$/d' | grep '^[0-9a-zA-Z\.-]\+$' | grep '\.' | sed 's#^\.\+##' | sort -u > gfwlist.txt
curl -s https://raw.githubusercontent.com/hq450/fancyss/master/rules/gfwlist.conf | sed 's/ipset=\/\.//g; s/\/gfwlist//g; /^server/d' > koolshare.txt
cat gfwlist.txt koolshare.txt | sort -u > gfw_list.txt
rm gfwlist.txt  koolshare.txt
systemctl restart overture

配置定时任务定期更新overture的域名和IP列表

0 3 * * 1 /root/overture_update_fliters.sh

参考:
docker 搭建 overture 无污染 DNS

ios地区为美区时显示农历(阴历)和中国节假日

ios一直使用全美区,icloud、location、language、app store等都是美区,一直使用第三方app查看农历/阴历。
可以使用以下方法实现和中国区一样的日历显示。
1,显示农历
方法一,Settings-->Calendar-->Alternate Calendars-->Chinses,此方法会同国区一样在锁屏显示中文的农历
方法二,订阅第三方日历,我使用infinet/lunar-calendar生成了2020-2023年的农历和节气的ics文件,导入到日历即可
2,显示中国节假日
Settings-->Calendar-->Accounts-->Add Account-->输入http://p10-calendars.icloud.com/holiday/CN_zh.ics

Routeros V7配置策略路由

20201206更新:V7.1beta3中恢复了mangle添加的路由标记自动添加路由表功能

在两年前我写过一篇routeros配置vpn分流大陆ip的文章,里面主要介绍了使用routeros基于源地址和目的地址的策略路由。在使用Routeros V7 测试版的过程中发现V7相比于V6版在路由配置方便有很大变更,所以这篇文章会以Routeros V7为基础介绍策略路由的配置。

网络基本情况
routeros作为家庭唯一路由,通过pppoe接入互联网,通过wireguard连接香港的routeros。

策略路由目标
1,需要翻墙的内网ip:目的地址是境内ip走pppoe默认路由,目的地址是境外IP走wireguard通过香港routeros进入墙外互联网
2,其他内网ip全部走pppoe默认路由

IP地址分配参考上一篇文章Routeros 配置WireGuard

本地lan的地址是192.168.1.1/24,wg-access地址是10.0.0.1/24,wg-hk的地址是10.0.1.1/30,手机wireguard的地址是10.0.0.2/32,笔记本电脑的地址是10.0.0.3/32
香港wg0地址是10.0.1.2/30

配置步骤
1,使用ipip.net发布在github的大陆ip列表生成境内IP地址列表,并导入routeros
在mac或者linux系统上执行下列命令

curl -s https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt |sed -e 's/^/add address=/g' -e 's/$/ list=CNIP/g'|sed -e $'1i\\\n/ip firewall address-list' -e $'1i\\\nremove [/ip firewall address-list find list=CNIP]' -e $'1i\\\nadd address=10.0.0.0/8 list=CNIP comment=private-network' -e $'1i\\\nadd address=172.16.0.0/12 list=CNIP comment=private-network' -e $'1i\\\nadd address=192.168.0.0/16 list=CNIP comment=private-network'>cnip.rsc

把cnip.rsc上传到routeros,执行

/import cnip.rsc

2,配置分流路由表
Routeros V7取消了通过firewall的mangle里添加路由标记自动添加路由表功能,所有这里需要手动添加路由表,v7.1beta3已恢复此功能

/routing/table/add name="gfw" fib

添加IP分流策略路由

/ip/route/add dst-address=0.0.0.0/0 routing-table="gfw" gateway=10.0.1.2

3,新建需要翻墙的内网地址列表,假定192.168.1.100和192.168.1.200需要翻墙

/ip/firewall/address-list/add list=gfw address=192.168.1.100/32
/ip/firewall/address-list/add list=gfw address=192.168.1.200/32

4,给需要翻墙的内网ip添加标记

/ip/firewall/mangle/add chain=prerouting action=mark-routing new-routing-mark=gfw passthrough=yes dst-address-type=!local src-address-list=gfw dst-address-list=!CNIP log=no log-prefix=""

5,配置无污染DNS服务器
参考使用dnsmasq基于大陆域名白名单分流解析域名使用overture替换dnsmasq做域名分流解析

6,测试目的IP分流
在192.168.1.100上执行traceroute命令

traceroute 8.8.4.4
192.168.1.100--->192.168.1.1--->10.0.1.2--->香港服务器公网路由--->8.8.4.4
traceroute 114.114.114.114
192.168.1.100--->192.168.1.1--->PPPoE公网路由---->114.114.114.114