原来的tun模式是要拦截所有dns流量的,这样有一个问题,就是如果本地配置了k8s,之类的,内部的service是无法调通的,因为都被clash的dns劫持了。
所以需要配置ebpf来只代理外网的流量,内网的就不代理。
安装 bpf
bpf安装
配置 clash
这几行是需要修改的内容,合并到原来的文件里面就可以了,其中 wlan0 要修改为你连接外网的设备
tun:
auto-route: false
ebpf:
redirect-to-tun:
- wlan0
routing-mark: 6667
配置权限
如果是root执行的clash应该可以不用理,如果是普通用户的话,需要设置一下 clash 的权限。
多个集群的时候多个配置文件配置手工指定比较麻烦,可以用如下命令合并
合并
KUBECONFIG=~/.kube/config:~/Downloads/new-kube-config kubectl config view --flatten > all-in-one-kubeconfig.yaml
如果有多个配置文件就用多个:分割就好了,如果在当前目录下合并所有文件可以这样操作
KUBECONFIG=~/.kube/config:$(find . -type f | tr '\n' ':') kubectl config view
开启了clash tun之后会发现, k3s内部的service无法调通了,后来发现是tun劫持了coredns的请求导致的,所以需要配置tun.dns-hijack来忽略coredns的劫持
大概配置如下
tun:
dns-hijack:
- 127.0.0.1:53
- tcp://8.8.8.8:53
- tcp://8.8.4.4:53
把需要劫持的dns放进去就好了
waydroid 用 gapps 的 image 初始化之后, 会提示未认证的设备, 需要获取 android id 来认证. 网上找了很久都没找到解决方案.
可以用如下方法获取
sudo waydroid shell << EOF | cat > gservices.db
cat /data/data/com.google.android.gsf/databases/gservices.db
例如我用的是 vivaldi 首先获取 vlvaidi 的进程名
ps aux | grep vivaldi
...
yswtrue 517198 0.0 0.1 1185081456 91544 ? Sl 00:11 0:31 /nix/store/wfp4kcq7xlblb4822a01bqcz3qzx82qh-vivaldi-5.7.2921.63/opt/vivaldi/vivaldi-bin --type=renderer